X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=git-push.sh;h=f10cadbf159bcd63af0c3834bd7cd2fab6cce57c;hb=7a97de4e19757b5576f32ce67d90cb792dbb893b;hp=136093bf138f57d45385c0d71344b4cd85c472d6;hpb=fec9ebf16c948bcb4a8b88d0173ee63584bcde76;p=git.git diff --git a/git-push.sh b/git-push.sh index 136093bf..f10cadbf 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 @@ -8,6 +8,7 @@ USAGE='[--all] [--force] [...]' has_all= has_force= has_exec= +has_thin=--thin remote= do_tags= @@ -22,6 +23,10 @@ do has_force=--force ;; --exec=*) has_exec="$1" ;; + --thin) + ;; # noop + --no-thin) + has_thin= ;; -*) usage ;; *) @@ -36,32 +41,30 @@ 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 -# 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. +shift ;# away the initial 'x' -case "$#,$has_all" in -0,) - die "No refs given to be pushed." ;; -esac +# $# 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://*) @@ -74,6 +77,7 @@ set x "$remote" "$@"; shift test "$has_all" && set x "$has_all" "$@" && shift test "$has_force" && set x "$has_force" "$@" && shift test "$has_exec" && set x "$has_exec" "$@" && shift +test "$has_thin" && set x "$has_thin" "$@" && shift case "$remote" in http://* | https://*)