X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=git-fetch.sh;h=48818f822451b3d69e7cd90e81e34bf137ead4dd;hb=fd7e9fb7ae206a64b87c7faecfc88716e98a7577;hp=83143f82cfa3b92a38a9caa2b00860541d139aa2;hpb=afcb536f288f28bb37acf11a5666a219b8f20200;p=git.git diff --git a/git-fetch.sh b/git-fetch.sh index 83143f82..48818f82 100755 --- a/git-fetch.sh +++ b/git-fetch.sh @@ -166,7 +166,10 @@ fast_forward_local () { mb=$(git-merge-base "$local" "$2") && case "$2,$mb" in $local,*) - echo >&2 "* $1: same as $3" + if test -n "$verbose" + then + echo >&2 "* $1: same as $3" + fi ;; *,$local) echo >&2 "* $1: fast forward to $3" @@ -211,12 +214,12 @@ esac reflist=$(get_remote_refs_for_fetch "$@") if test "$tags" then - taglist=$(IFS=" " && + taglist=`IFS=" " && git-ls-remote $upload_pack --tags "$remote" | while read sha1 name do case "$name" in - (*^*) continue ;; + *^*) continue ;; esac if git-check-ref-format "$name" then @@ -224,7 +227,7 @@ then else echo >&2 "warning: tag ${name} ignored" fi - done) + done` if test "$#" -gt 1 then # remote URL plus explicit refspecs; we need to merge them. @@ -270,14 +273,22 @@ fetch_main () { if [ -n "$GIT_SSL_NO_VERIFY" ]; then curl_extra_args="-k" fi - remote_name_quoted=$(perl -e ' + max_depth=5 + depth=0 + head="ref: $remote_name" + while (expr "z$head" : "zref:" && expr $depth \< $max_depth) >/dev/null + do + remote_name_quoted=$(perl -e ' my $u = $ARGV[0]; + $u =~ s/^ref:\s*//; $u =~ s{([^-a-zA-Z0-9/.])}{sprintf"%%%02x",ord($1)}eg; print "$u"; - ' "$remote_name") - head=$(curl -nsfL $curl_extra_args "$remote/$remote_name_quoted") && + ' "$head") + head=$(curl -nsfL $curl_extra_args "$remote/$remote_name_quoted") + depth=$( expr \( $depth + 1 \) ) + done expr "z$head" : "z$_x40\$" >/dev/null || - die "Failed to fetch $remote_name from $remote" + die "Failed to fetch $remote_name from $remote" echo >&2 Fetching "$remote_name from $remote" using http git-http-fetch -v -a "$head" "$remote/" || exit ;;