#!/bin/sh # . git-sh-setup-script || die "Not a git archive" usage () { echo >&2 "usage: $0 [--heads] [--tags] [--overwrite | --store] repo" exit 1; } while case "$#" in 0) break;; esac do case "$1" in -h|--h|--he|--hea|--head|--heads) heads=heads; shift ;; -o|--o|--ov|--ove|--over|--overw|--overwr|--overwri|--overwrit|--overwrite) overwrite=overwrite; shift ;; -s|--s|--st|--sto|--stor|--store) store=store; shift ;; -t|--t|--ta|--tag|--tags) tags=tags; shift ;; --) shift; break ;; -*) usage ;; *) break ;; esac done case "$#" in 1) ;; *) usage ;; esac case ",$store,$overwrite," in *,,*) ;; *) usage ;; esac case ",$heads,$tags," in ,,,) heads=heads tags=tags other=other ;; esac . git-parse-remote "$@" peek_repo="$_remote_repo" tmp=.ls-remote-$$ trap "rm -fr $tmp-*" 0 1 2 3 15 tmpdir=$tmp-d case "$peek_repo" in 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 ;; rsync://* ) mkdir $tmpdir rsync -rq "$peek_repo/refs" $tmpdir || exit 1 (cd $tmpdir && find refs -type f) | while read path do cat "$tmpdir/$path" | tr -d '\012' echo " $path" done && rm -fr $tmpdir ;; * ) git-peek-remote "$peek_repo" ;; esac | while read sha1 path do case "$path" in refs/heads/*) group=heads ;; refs/tags/*) group=tags ;; *) group=other ;; esac case ",$heads,$tags,$other," in *,$group,*) ;; *) continue;; esac echo "$sha1 $path" case "$path,$store,$overwrite," in *,,, | HEAD,*) continue ;; esac if test -f "$GIT_DIR/$path" && test "$overwrite" == "" then continue fi # Be careful. We may not have that object yet! if git-cat-file -t "$sha1" >/dev/null 2>&1 then echo "$sha1" >"$GIT_DIR/$path" else echo >&2 "* You have not fetched updated $path ($sha1)." fi done