Merge branch 'gp/maint-diffdoc'
[gitweb.git] / git-ls-remote.sh
index e6f574b99b56648e277d128911eb875380f279db..fec70bbf88c614a2dadfc40950fdd7abdf7f2c63 100755 (executable)
@@ -13,7 +13,7 @@ die () {
 }
 
 exec=
-while case "$#" in 0) break;; esac
+while test $# != 0
 do
   case "$1" in
   -h|--h|--he|--hea|--head|--heads)
@@ -27,7 +27,7 @@ do
        shift;;
   -u=*|--u=*|--up=*|--upl=*|--uplo=*|--uploa=*|--upload=*|\
   --upload-=*|--upload-p=*|--upload-pa=*|--upload-pac=*|--upload-pack=*)
-       exec=--upload-pack=$(expr "$1" : '-[^=]*=\(.*\)')
+       exec=--upload-pack=$(expr "z$1" : 'z-[^=]*=\(.*\)')
        shift;;
   --)
   shift; break ;;
@@ -54,11 +54,12 @@ tmpdir=$tmp-d
 
 case "$peek_repo" in
 http://* | https://* | ftp://* )
-        if [ -n "$GIT_SSL_NO_VERIFY" ]; then
-            curl_extra_args="-k"
-        fi
+       if [ -n "$GIT_SSL_NO_VERIFY" -o \
+               "`git config --bool http.sslVerify`" = false ]; then
+               curl_extra_args="-k"
+       fi
        if [ -n "$GIT_CURL_FTP_NO_EPSV" -o \
-               "`git-config --bool http.noEPSV`" = true ]; then
+               "`git 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" ||
@@ -82,15 +83,20 @@ rsync://* )
        (cd $tmpdir && find refs -type f) |
        while read path
        do
-               cat "$tmpdir/$path" | tr -d '\012'
+               tr -d '\012' <"$tmpdir/$path"
                echo "  $path"
        done &&
        rm -fr $tmpdir
        ;;
 
 * )
-       git-peek-remote $exec "$peek_repo" ||
+       if test -f "$peek_repo" ; then
+               git bundle list-heads "$peek_repo" ||
+               echo "failed    slurping"
+       else
+               git-peek-remote $exec "$peek_repo" ||
                echo "failed    slurping"
+       fi
        ;;
 esac |
 sort -t '      ' -k 2 |