X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=git-fetch.sh;h=fcc24f85c3e5d79f2e05511ad42d77e05626cc7a;hb=816c02ce8ecddce065e83db9f4ecb78f6b0e23dc;hp=d1659e2cfe78fef5bd8712edcedbf7296eb316be;hpb=2c620a1ad1dce1e249d66ce18c7b1cce22d5d64c;p=git.git diff --git a/git-fetch.sh b/git-fetch.sh index d1659e2c..fcc24f85 100755 --- a/git-fetch.sh +++ b/git-fetch.sh @@ -18,16 +18,18 @@ force= verbose= update_head_ok= exec= +upload_pack= 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) + --upl|--uplo|--uploa|--upload|--upload-|--upload-p|\ + --upload-pa|--upload-pac|--upload-pack) shift exec="--exec=$1" + upload_pack="-u $1" ;; -f|--f|--fo|--for|--forc|--force) force=t @@ -202,7 +204,7 @@ reflist=$(get_remote_refs_for_fetch "$@") if test "$tags" then taglist=$(IFS=" " && - git-ls-remote --tags "$remote" | + git-ls-remote $upload_pack --tags "$remote" | while read sha1 name do case "$name" in @@ -366,20 +368,25 @@ fetch_main "$reflist" # automated tag following case "$no_tags$tags" in '') - taglist=$(IFS=" " && - git-ls-remote --tags "$remote" | - sed -ne 's|^\([0-9a-f]*\)[ ]\(refs/tags/.*\)^{}$|\1 \2|p' | - while read sha1 name - do - test -f "$GIT_DIR/$name" && continue - git-check-ref-format "$name" || { - echo >&2 "warning: tag ${name} ignored" - continue - } - git-cat-file -t "$sha1" >/dev/null 2>&1 || continue - echo >&2 "Auto-following $name" - echo ".${name}:${name}" - done) + case "$reflist" in + *:refs/*) + # effective only when we are following remote branch + # using local tracking branch. + taglist=$(IFS=" " && + git-ls-remote $upload_pack --tags "$remote" | + sed -ne 's|^\([0-9a-f]*\)[ ]\(refs/tags/.*\)^{}$|\1 \2|p' | + while read sha1 name + do + test -f "$GIT_DIR/$name" && continue + git-check-ref-format "$name" || { + echo >&2 "warning: tag ${name} ignored" + continue + } + git-cat-file -t "$sha1" >/dev/null 2>&1 || continue + echo >&2 "Auto-following $name" + echo ".${name}:${name}" + done) + esac case "$taglist" in '') ;; ?*)