зеркало из https://github.com/microsoft/git.git
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:
Родитель
fec9ebf16c
Коммит
42301e34a2
|
@ -8,7 +8,7 @@ git-push - Update remote refs along with associated objects.
|
||||||
|
|
||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
'git-push' [--all] [--force] <repository> <refspec>...
|
'git-push' [--all] [--tags] [--force] <repository> <refspec>...
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
|
@ -29,6 +29,11 @@ include::pull-fetch-param.txt[]
|
||||||
Instead of naming each ref to push, specifies all refs
|
Instead of naming each ref to push, specifies all refs
|
||||||
to be pushed.
|
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::
|
-f, \--force::
|
||||||
Usually, the command refuses to update a local ref that is
|
Usually, the command refuses to update a local ref that is
|
||||||
not an ancestor of the remote ref used to overwrite it.
|
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
|
#!/bin/sh
|
||||||
|
|
||||||
USAGE='[--all] [--force] <repository> [<refspec>...]'
|
USAGE='[--all] [--tags] [--force] <repository> [<refspec>...]'
|
||||||
. git-sh-setup
|
. git-sh-setup
|
||||||
|
|
||||||
# Parse out parameters and then stop at remote, so that we can
|
# 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?"
|
echo "Where would you want to push today?"
|
||||||
usage ;;
|
usage ;;
|
||||||
esac
|
esac
|
||||||
if test ",$has_all,$do_tags," = ",--all,yes,"
|
|
||||||
then
|
|
||||||
do_tags=
|
|
||||||
fi
|
|
||||||
|
|
||||||
. git-parse-remote
|
. git-parse-remote
|
||||||
remote=$(get_remote_url "$@")
|
remote=$(get_remote_url "$@")
|
||||||
case "$has_all" in
|
|
||||||
--all) set x ;;
|
|
||||||
'') set x $(get_remote_refs_for_push "$@") ;;
|
|
||||||
esac
|
|
||||||
shift
|
|
||||||
|
|
||||||
case "$do_tags" in
|
case "$has_all" in
|
||||||
yes)
|
--all)
|
||||||
set "$@" $(cd "$GIT_DIR/refs" && find tags -type f -print) ;;
|
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
|
esac
|
||||||
|
|
||||||
|
shift ;# away the initial 'x'
|
||||||
|
|
||||||
# Now we have explicit refs from the command line or from remotes/
|
# Now we have explicit refs from the command line or from remotes/
|
||||||
# shorthand, or --tags. Falling back on the current branch if we still
|
# 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.
|
# do not have any may be an alternative, but prevent mistakes for now.
|
||||||
|
|
Загрузка…
Ссылка в новой задаче