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:
parent
fec9ebf16c
commit
42301e34a2
@ -8,7 +8,7 @@ git-push - Update remote refs along with associated objects.
|
||||
|
||||
SYNOPSIS
|
||||
--------
|
||||
'git-push' [--all] [--force] <repository> <refspec>...
|
||||
'git-push' [--all] [--tags] [--force] <repository> <refspec>...
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
@ -29,6 +29,11 @@ include::pull-fetch-param.txt[]
|
||||
Instead of naming each ref to push, specifies all refs
|
||||
to be pushed.
|
||||
|
||||
\--tags::
|
||||
All refs under `$GIT_DIR/refs/tags` are pushed, in
|
||||
addition to refspecs explicitly listed on the command
|
||||
line.
|
||||
|
||||
-f, \--force::
|
||||
Usually, the command refuses to update a local ref that is
|
||||
not an ancestor of the remote ref used to overwrite it.
|
||||
|
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.
|
||||
|
Loading…
Reference in New Issue
Block a user