X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=git-push.sh;h=706db9933e7a3d418a0bc77a743695464901b800;hb=2d310d8a018ca1a8d3e4c8a52f60ae5f57f34b31;hp=1c5cf80f8786eb20c6092a8fbce48e1f1c1cb9e1;hpb=1ed91937e5cd59fdbdfa5f15f6fac132d2b21ce0;p=git.git diff --git a/git-push.sh b/git-push.sh index 1c5cf80f..706db993 100755 --- a/git-push.sh +++ b/git-push.sh @@ -1,6 +1,6 @@ #!/bin/sh -USAGE='[--all] [--force] [...]' +USAGE='[--all] [--tags] [--force] [...]' . git-sh-setup # Parse out parameters and then stop at remote, so that we can @@ -9,12 +9,15 @@ has_all= has_force= has_exec= remote= +do_tags= while case "$#" in 0) break ;; esac do case "$1" in --all) has_all=--all ;; + --tags) + do_tags=yes ;; --force) has_force=--force ;; --exec=*) @@ -36,11 +39,27 @@ esac . git-parse-remote remote=$(get_remote_url "$@") + case "$has_all" in ---all) set x ;; -'') set x $(get_remote_refs_for_push "$@") ;; +--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 + +shift ;# away the initial 'x' + +# $# is now 0 if there was no explicit refspec on the command line +# and there was no defalt refspec to push from remotes/ file. +# we will let git-send-pack to do its "matching refs" thing. case "$remote" in git://*)