diff --git a/Documentation/config.txt b/Documentation/config.txt index 8086d75368..3f2fa09a87 100644 --- a/Documentation/config.txt +++ b/Documentation/config.txt @@ -429,9 +429,13 @@ remote..push:: gitlink:git-push[1]. remote..receivepack:: - The default program to execute on the remote side when pulling. See + The default program to execute on the remote side when pushing. See option \--exec of gitlink:git-push[1]. +remote..uploadpack:: + The default program to execute on the remote side when fetching. See + option \--exec of gitlink:git-fetch-pack[1]. + repack.usedeltabaseoffset:: Allow gitlink:git-repack[1] to create packs that uses delta-base offset. Defaults to false. diff --git a/git-fetch.sh b/git-fetch.sh index 07a1d05ac7..61c8cf4773 100755 --- a/git-fetch.sh +++ b/git-fetch.sh @@ -85,6 +85,12 @@ case "$#" in set x $origin ; shift ;; esac +if test -z "$exec" +then + # No command line override and we have configuration for the remote. + exec="--upload-pack=$(get_uploadpack $1)" +fi + remote_nick="$1" remote=$(get_remote_url "$@") refs= diff --git a/git-parse-remote.sh b/git-parse-remote.sh index 4fc602082b..1122c8389d 100755 --- a/git-parse-remote.sh +++ b/git-parse-remote.sh @@ -279,3 +279,16 @@ resolve_alternates () { esac done } + +get_uploadpack () { + data_source=$(get_data_source "$1") + case "$data_source" in + config) + uplp=$(git-repo-config --get "remote.$1.uploadpack") + echo ${uplp:-git-upload-pack} + ;; + *) + echo "git-upload-pack" + ;; + esac +}