summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichal Ostrowski <mostrows@watson.ibm.com>2006-01-20 18:05:24 (GMT)
committerJunio C Hamano <junkio@cox.net>2006-01-25 07:17:26 (GMT)
commit2c620a1ad1dce1e249d66ce18c7b1cce22d5d64c (patch)
treec92dc1ebdc6b9f6b27c60d31de1cc8823b009a3f
parent941c9449999192e2d338ee204f4153e30ae43829 (diff)
downloadgit-2c620a1ad1dce1e249d66ce18c7b1cce22d5d64c.zip
git-2c620a1ad1dce1e249d66ce18c7b1cce22d5d64c.tar.gz
git-2c620a1ad1dce1e249d66ce18c7b1cce22d5d64c.tar.bz2
git-fetch: pass --upload-pack to fetch-pack
Without this, there is no way to specify a remote executable when invoking git-pull/git-fetch as there is for git-clone. [jc: I have a mild suspicion that this is a broken environment (aka sysadmin disservice). It may be legal to configure your sshd to spawn named program without involving shell at all, and if your sysadmin does so and you have your git programs under your home directory, you would need something like this, but then I suspect you would need such workaround everywhere, not just git. But we have these options we can use to work around the issue, so there is no strong reason not to reject this patch, either. ] Signed-off-by: Michal Ostrowski <mostrows@watson.ibm.com> Signed-off-by: Junio C Hamano <junkio@cox.net>
-rw-r--r--Documentation/fetch-options.txt7
-rwxr-xr-xgit-fetch.sh8
2 files changed, 14 insertions, 1 deletions
diff --git a/Documentation/fetch-options.txt b/Documentation/fetch-options.txt
index e624d3d..8323756 100644
--- a/Documentation/fetch-options.txt
+++ b/Documentation/fetch-options.txt
@@ -3,6 +3,13 @@
existing contents of `.git/FETCH_HEAD`. Without this
option old data in `.git/FETCH_HEAD` will be overwritten.
+--upload-pack <upload-pack>::
+-u <upload-pack>::
+ When given, and the repository to fetch from is handled
+ by 'git-fetch-pack', '--exec=<upload-pack>' is passed to
+ the command to specify non-default path for the command
+ run on the other end.
+
-f, \--force::
When `git-fetch` is used with `<rbranch>:<lbranch>`
refspec, it refuses to update the local branch
diff --git a/git-fetch.sh b/git-fetch.sh
index 4a0cb32..d1659e2 100755
--- a/git-fetch.sh
+++ b/git-fetch.sh
@@ -17,12 +17,18 @@ append=
force=
verbose=
update_head_ok=
+exec=
while case "$#" in 0) break ;; esac
do
case "$1" in
-a|--a|--ap|--app|--appe|--appen|--append)
append=t
;;
+ -u|--u|--up|--upl|--uploa|--upload|--upload-|--upload-p|--upload-pa|\
+ --upload-pac|--upload-pack)
+ shift
+ exec="--exec=$1"
+ ;;
-f|--f|--fo|--for|--forc|--force)
force=t
;;
@@ -312,7 +318,7 @@ fetch_main () {
( : subshell because we muck with IFS
IFS=" $LF"
(
- git-fetch-pack $keep "$remote" $rref || echo failed "$remote"
+ git-fetch-pack $exec $keep "$remote" $rref || echo failed "$remote"
) |
while read sha1 remote_name
do