X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=git-ls-remote.sh;h=b6882a90c15a7b706966e608e00facbb80f26422;hb=50ac7408018209a2829b7948119270fec7e14ec8;hp=604c5f5bbe5c8882f99552a87b32f7a78019d234;hpb=215a7ad1ef790467a4cd3f0dcffbd6e5f04c38f7;p=git.git diff --git a/git-ls-remote.sh b/git-ls-remote.sh index 604c5f5b..b6882a90 100755 --- a/git-ls-remote.sh +++ b/git-ls-remote.sh @@ -1,12 +1,18 @@ #!/bin/sh # -. git-sh-setup || die "Not a git archive" usage () { - echo >&2 "usage: $0 [--heads] [--tags] ..." + echo >&2 "usage: $0 [--heads] [--tags] [-u|--upload-pack ]" + echo >&2 " ..." exit 1; } +die () { + echo >&2 "$*" + exit 1 +} + +exec= while case "$#" in 0) break;; esac do case "$1" in @@ -14,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 ;; -*) @@ -42,12 +53,16 @@ http://* | https://* ) if [ -n "$GIT_SSL_NO_VERIFY" ]; then curl_extra_args="-k" fi - curl -nsf $curl_extra_args "$peek_repo/info/refs" || exit 1 + curl -nsf $curl_extra_args --header "Pragma: no-cache" "$peek_repo/info/refs" || + echo "failed slurping" ;; rsync://* ) mkdir $tmpdir - rsync -rq "$peek_repo/refs" $tmpdir || exit 1 + rsync -rq "$peek_repo/refs" $tmpdir || { + echo "failed slurping" + exit + } (cd $tmpdir && find refs -type f) | while read path do @@ -58,12 +73,17 @@ rsync://* ) ;; * ) - git-peek-remote "$peek_repo" + git-peek-remote $exec "$peek_repo" || + echo "failed slurping" ;; esac | sort -t ' ' -k 2 | while read sha1 path do + case "$sha1" in + failed) + die "Failed to find remote refs" + esac case "$path" in refs/heads/*) group=heads ;;