revision.c: explain what tree_difference does
[gitweb.git] / git-ls-remote.sh
index 2fdcaf7886850b1f59a1775bffc23948d1b62c6a..a6ed99a7c52ac557b01e4dbf271abdf5b9a18b4b 100755 (executable)
@@ -23,7 +23,11 @@ do
   -u|--u|--up|--upl|--uploa|--upload|--upload-|--upload-p|--upload-pa|\
   --upload-pac|--upload-pack)
        shift
-       exec="--exec=$1"
+       exec="--upload-pack=$1"
+       shift;;
+  -u=*|--u=*|--up=*|--upl=*|--uplo=*|--uploa=*|--upload=*|\
+  --upload-=*|--upload-p=*|--upload-pa=*|--upload-pac=*|--upload-pack=*)
+       exec=--upload-pack=$(expr "z$1" : 'z-[^=]*=\(.*\)')
        shift;;
   --)
   shift; break ;;
@@ -49,10 +53,14 @@ 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
+       if [ -n "$GIT_CURL_FTP_NO_EPSV" -o \
+               "`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" ||
                echo "failed    slurping"
        ;;
@@ -81,8 +89,13 @@ rsync://* )
        ;;
 
 * )
-       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 |
@@ -90,7 +103,7 @@ while read sha1 path
 do
        case "$sha1" in
        failed)
-               die "Failed to find remote refs"
+               exit 1 ;;
        esac
        case "$path" in
        refs/heads/*)