aboutsummaryrefslogtreecommitdiff
path: root/git-tag.sh
diff options
context:
space:
mode:
authorAlexandre Vassalotti <alexandre@peadrop.com>2007-06-28 12:56:57 -0400
committerJunio C Hamano <gitster@pobox.com>2007-06-30 10:49:14 -0700
commit72bb989d6e15f1ff443454b5836358ced1dc5bea (patch)
tree021c834e2f3625a12dcc7f3faa7bf7431d417121 /git-tag.sh
parentbfc04bb9b847912ee41a21fc23110962851878b2 (diff)
downloadgit-72bb989d6e15f1ff443454b5836358ced1dc5bea.tar.gz
git-72bb989d6e15f1ff443454b5836358ced1dc5bea.tar.xz
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-xgit-tag.sh29
1 files changed, 24 insertions, 5 deletions
diff --git a/git-tag.sh b/git-tag.sh
index 3917cd829..1ff5b41e7 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