X-Git-Url: https://git.octo.it/?p=git.git;a=blobdiff_plain;f=git-ls-remote.sh;h=2fdcaf7886850b1f59a1775bffc23948d1b62c6a;hp=f69926862fba15c28933c6dd616065d331b9a89b;hb=162f41292167a800432fc6bbacfcd9f93a90b0c8;hpb=423325a2d24638ddcc82ce47be5e40be550f4507 diff --git a/git-ls-remote.sh b/git-ls-remote.sh index f6992686..2fdcaf78 100755 --- a/git-ls-remote.sh +++ b/git-ls-remote.sh @@ -2,7 +2,8 @@ # usage () { - echo >&2 "usage: $0 [--heads] [--tags] ..." + echo >&2 "usage: $0 [--heads] [--tags] [-u|--upload-pack ]" + echo >&2 " ..." exit 1; } @@ -11,6 +12,7 @@ die () { exit 1 } +exec= while case "$#" in 0) break;; esac do case "$1" in @@ -18,6 +20,11 @@ do heads=heads; shift ;; -t|--t|--ta|--tag|--tags) tags=tags; shift ;; + -u|--u|--up|--upl|--uploa|--upload|--upload-|--upload-p|--upload-pa|\ + --upload-pac|--upload-pack) + shift + exec="--exec=$1" + shift;; --) shift; break ;; -*) @@ -46,16 +53,24 @@ http://* | https://* ) if [ -n "$GIT_SSL_NO_VERIFY" ]; then curl_extra_args="-k" fi - curl -nsf $curl_extra_args "$peek_repo/info/refs" || + 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 @@ -66,7 +81,7 @@ rsync://* ) ;; * ) - git-peek-remote "$peek_repo" || + git-peek-remote $exec "$peek_repo" || echo "failed slurping" ;; esac |