diff options
author | Alexandre Vassalotti <alexandre@peadrop.com> | 2007-06-28 20:56:57 +0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2007-06-30 21:49:14 +0400 |
commit | 72bb989d6e15f1ff443454b5836358ced1dc5bea (patch) | |
tree | 021c834e2f3625a12dcc7f3faa7bf7431d417121 /git-tag.sh | |
parent | bfc04bb9b847912ee41a21fc23110962851878b2 (diff) |
git-tag: Fix "can't shift that many".
This stop git-tag from emitting a "shift: can't shift that many"
error, when listing tags.
[jc: with further fixups from Sam Vilain merged in; it passes
the tests under dash now]
Signed-off-by: Alexandre Vassalotti <alexandre@peadrop.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'git-tag.sh')
-rwxr-xr-x | git-tag.sh | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/git-tag.sh b/git-tag.sh index 3917cd8298..1ff5b41e7f 100755 --- a/git-tag.sh +++ b/git-tag.sh @@ -19,28 +19,40 @@ do case "$1" in -a) annotate=1 + shift ;; -s) annotate=1 signed=1 + shift ;; -f) force=1 + shift ;; -n) - case $2 in - -*) LINES=1 # no argument + case "$#,$2" in + 1,* | *,-*) + LINES=1 # no argument ;; *) shift LINES=$(expr "$1" : '\([0-9]*\)') [ -z "$LINES" ] && LINES=1 # 1 line is default when -n is used ;; esac + shift ;; -l) list=1 shift - PATTERN="$1" # select tags by shell pattern, not re + case $# in + 0) PATTERN= + ;; + *) + PATTERN="$1" # select tags by shell pattern, not re + shift + ;; + esac git rev-parse --symbolic --tags | sort | while read TAG do @@ -74,7 +86,9 @@ do if test "$#" = "0"; then die "error: option -m needs an argument" else + message="$1" message_given=1 + shift fi ;; -F) @@ -85,13 +99,19 @@ do else message="$(cat "$1")" message_given=1 + shift fi ;; -u) annotate=1 signed=1 shift - username="$1" + if test "$#" = "0"; then + die "error: option -u needs an argument" + else + username="$1" + shift + fi ;; -d) shift @@ -126,7 +146,6 @@ do break ;; esac - shift done [ -n "$list" ] && exit 0 |