git-push: fix --tags and document it.
Previously 'git-push --tags dst', used information from remotes/dst to determine which refs to push; this patch corrects it, and also documents the --tags option. Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
29
git-push.sh
29
git-push.sh
@ -1,6 +1,6 @@
|
||||
#!/bin/sh
|
||||
|
||||
USAGE='[--all] [--force] <repository> [<refspec>...]'
|
||||
USAGE='[--all] [--tags] [--force] <repository> [<refspec>...]'
|
||||
. git-sh-setup
|
||||
|
||||
# Parse out parameters and then stop at remote, so that we can
|
||||
@ -36,24 +36,27 @@ case "$#" in
|
||||
echo "Where would you want to push today?"
|
||||
usage ;;
|
||||
esac
|
||||
if test ",$has_all,$do_tags," = ",--all,yes,"
|
||||
then
|
||||
do_tags=
|
||||
fi
|
||||
|
||||
. git-parse-remote
|
||||
remote=$(get_remote_url "$@")
|
||||
case "$has_all" in
|
||||
--all) set x ;;
|
||||
'') set x $(get_remote_refs_for_push "$@") ;;
|
||||
esac
|
||||
shift
|
||||
|
||||
case "$do_tags" in
|
||||
yes)
|
||||
set "$@" $(cd "$GIT_DIR/refs" && find tags -type f -print) ;;
|
||||
case "$has_all" in
|
||||
--all)
|
||||
set x ;;
|
||||
'')
|
||||
case "$do_tags,$#" in
|
||||
yes,1)
|
||||
set x $(cd "$GIT_DIR/refs" && find tags -type f -print) ;;
|
||||
yes,*)
|
||||
set x $(cd "$GIT_DIR/refs" && find tags -type f -print) \
|
||||
$(get_remote_refs_for_push "$@") ;;
|
||||
,*)
|
||||
set x $(get_remote_refs_for_push "$@") ;;
|
||||
esac
|
||||
esac
|
||||
|
||||
shift ;# away the initial 'x'
|
||||
|
||||
# Now we have explicit refs from the command line or from remotes/
|
||||
# shorthand, or --tags. Falling back on the current branch if we still
|
||||
# do not have any may be an alternative, but prevent mistakes for now.
|
||||
|
||||
Reference in New Issue
Block a user