#!/bin/sh
#

usage () {
    echo >&2 "usage: $0 [--heads] [--tags] [-u|--upload-pack <upload-pack>]"
    echo >&2 "          <repository> <refs>..."
    exit 1;
}

die () {
    echo >&2 "$*"
    exit 1
}

exec=
while case "$#" in 0) break;; esac
do
  case "$1" in
  -h|--h|--he|--hea|--head|--heads)
  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="--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 ;;
  -*)
  usage ;;
  *)
  break ;;
  esac
done

case "$#" in 0) usage ;; esac

case ",$heads,$tags," in
,,,) heads=heads tags=tags other=other ;;
esac

. git-parse-remote
peek_repo="$(get_remote_url "$@")"
shift

tmp=.ls-remote-$$
trap "rm -fr $tmp-*" 0 1 2 3 15
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_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"
	;;

rsync://* )
	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
		tr -d '\012' <"$tmpdir/$path"
		echo "	$path"
	done &&
	rm -fr $tmpdir
	;;

* )
	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 |
while read sha1 path
do
	case "$sha1" in
	failed)
		exit 1 ;;
	esac
	case "$path" in
	refs/heads/*)
		group=heads ;;
	refs/tags/*)
		group=tags ;;
	*)
		group=other ;;
	esac
	case ",$heads,$tags,$other," in
	*,$group,*)
		;;
	*)
		continue;;
	esac
	case "$#" in
	0)
		match=yes ;;
	*)
		match=no
		for pat
		do
			case "/$path" in
			*/$pat )
				match=yes
				break ;;
			esac
		done
	esac
	case "$match" in
	no)
		continue ;;
	esac
	echo "$sha1	$path"
done
