diff options
author | Junio C Hamano <junkio@cox.net> | 2005-08-10 07:10:18 (GMT) |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2005-08-10 07:10:18 (GMT) |
commit | f69714c38c6f3296a4bfba0d057e0f1605373f49 (patch) | |
tree | 2d850f14f62d33ed514e2b197b63fe459ff20d37 /git-push-script | |
parent | edee414c3e5a546aae3dd1529f397df949713305 (diff) | |
parent | c35a7b8d806317dc1762e36561cbd31c2530dd9c (diff) | |
download | git-f69714c38c6f3296a4bfba0d057e0f1605373f49.zip git-f69714c38c6f3296a4bfba0d057e0f1605373f49.tar.gz git-f69714c38c6f3296a4bfba0d057e0f1605373f49.tar.bz2 |
Merge with master.
This merges commit
c35a7b8d806317dc1762e36561cbd31c2530dd9c
from master into our head commit
edee414c3e5a546aae3dd1529f397df949713305
Sincerely,
jit-merge command.
Diffstat (limited to 'git-push-script')
-rwxr-xr-x | git-push-script | 63 |
1 files changed, 62 insertions, 1 deletions
diff --git a/git-push-script b/git-push-script index 80e922b..70fa968 100755 --- a/git-push-script +++ b/git-push-script @@ -1,3 +1,64 @@ #!/bin/sh . git-sh-setup-script || die "Not a git archive" -git-send-pack "$@" + +# Parse out parameters and then stop at remote, so that we can +# translate it using .git/branches information +has_all= +has_force= +has_exec= +remote= + +while case "$#" in 0) break ;; esac +do + case "$1" in + --all) + has_all=--all ;; + --force) + has_force=--force ;; + --exec=*) + has_exec="$1" ;; + -*) + die "Unknown parameter $1" ;; + *) + remote="$1" + shift + set x "$@" + shift + break ;; + esac + shift +done + +case "$remote" in +*:* | /* | ../* | ./* ) + # An URL, host:/path/to/git, absolute and relative paths. + ;; +* ) + # Shorthand + if expr "$remote" : '..*/..*' >/dev/null + then + # a short-hand followed by a trailing path + shorthand=$(expr "$remote" : '\([^/]*\)') + remainder=$(expr "$remote" : '[^/]*\(/.*\)$') + else + shorthand="$remote" + remainder= + fi + remote=$(sed -e 's/#.*//' "$GIT_DIR/branches/$remote") && + expr "$remote" : '..*:' >/dev/null && + remote="$remote$remainder" || + die "Cannot parse remote $remote" + ;; +esac + +case "$remote" in +http://* | https://* | git://* | rsync://* ) + die "Cannot push to $remote" ;; +esac + +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 + +exec git-send-pack "$@" |