X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=git-ls-remote.sh;h=03b624ef33dd3690a3cf24b4eaab830e5875789b;hb=e861ce1692fa9809f3e7b898804f8ddaf7cd8975;hp=2c9a588d21e4eaf6358148949ace2dc825798c55;hpb=36b5b3c65948694d9a92de5a17f2b97c3cd84879;p=git.git diff --git a/git-ls-remote.sh b/git-ls-remote.sh index 2c9a588d2..03b624ef3 100755 --- a/git-ls-remote.sh +++ b/git-ls-remote.sh @@ -49,20 +49,32 @@ trap "rm -fr $tmp-*" 0 1 2 3 15 tmpdir=$tmp-d case "$peek_repo" in -http://* | https://* ) +http://* | https://* | ftp://* ) if [ -n "$GIT_SSL_NO_VERIFY" ]; then curl_extra_args="-k" fi - curl -nsf $curl_extra_args "$peek_repo/info/refs" || + if [ -n "$GIT_CURL_FTP_NO_EPSV" -o \ + "`git-repo-config --bool http.noEPSV`" = true ]; then + curl_extra_args="${curl_extra_args} --disable-epsv" + fi + curl -nsf $curl_extra_args --header "Pragma: no-cache" "$peek_repo/info/refs" || echo "failed slurping" ;; rsync://* ) - mkdir $tmpdir + mkdir $tmpdir && + rsync -rlq "$peek_repo/HEAD" $tmpdir && rsync -rq "$peek_repo/refs" $tmpdir || { echo "failed slurping" exit } + head=$(cat "$tmpdir/HEAD") && + case "$head" in + ref:' '*) + head=$(expr "z$head" : 'zref: \(.*\)') && + head=$(cat "$tmpdir/$head") || exit + esac && + echo "$head HEAD" (cd $tmpdir && find refs -type f) | while read path do @@ -82,7 +94,7 @@ while read sha1 path do case "$sha1" in failed) - die "Failed to find remote refs" + exit 1 ;; esac case "$path" in refs/heads/*)