--- /dev/null
+git-ls-remote-script(1)
+=======================
+v0.1, May 2005
+
+NAME
+----
+git-ls-remote-script - Look at references other repository has.
+
+
+SYNOPSIS
+--------
+'git-ls-remote' [--heads] [--tags] <repository> <refs>...
+
+DESCRIPTION
+-----------
+Displays the references other repository has.
+
+
+OPTIONS
+-------
+--heads --tags::
+ Limit to only refs/heads and refs/tags, respectively.
+ These options are _not_ mutually exclusive; when given
+ both, references stored in refs/heads and refs/tags are
+ displayed.
+
+<repository>::
+ Location of the repository. The shorthand defined in
+ $GIT_DIR/branches/ can be used.
+
+<refs>...::
+ When unspecified, all references, after filtering done
+ with --heads and --tags, are shown. When <refs>... are
+ specified, only references matching the given patterns
+ are displayed.
+
+EXAMPLES
+--------
+
+ $ git ls-remote --tags ./.
+ d6602ec5194c87b0fc87103ca4d67251c76f233a refs/tags/v0.99
+ f25a265a342aed6041ab0cc484224d9ca54b6f41 refs/tags/v0.99.1
+ 7ceca275d047c90c0c7d5afb13ab97efdf51bd6e refs/tags/v0.99.3
+ c5db5456ae3b0873fc659c19fafdde22313cc441 refs/tags/v0.99.2
+ 0918385dbd9656cab0d1d81ba7453d49bbc16250 refs/tags/junio-gpg-pub
+ $ git ls-remote http://www.kernel.org/pub/scm/git/git.git master pu rc
+ 5fe978a5381f1fbad26a80e682ddd2a401966740 refs/heads/master
+ c781a84b5204fb294c9ccc79f8b3baceeb32c061 refs/heads/pu
+ b1d096f2926c4e37c9c0b6a7bf2119bedaa277cb refs/heads/rc
+ $ echo http://www.kernel.org/pub/scm/git/git.git >.git/branches/public
+ $ git ls-remote --tags public v\*
+ d6602ec5194c87b0fc87103ca4d67251c76f233a refs/tags/v0.99
+ f25a265a342aed6041ab0cc484224d9ca54b6f41 refs/tags/v0.99.1
+ c5db5456ae3b0873fc659c19fafdde22313cc441 refs/tags/v0.99.2
+ 7ceca275d047c90c0c7d5afb13ab97efdf51bd6e refs/tags/v0.99.3
+
+Author
+------
+Written by Junio C Hamano <junkio@cox.net>
+
+GIT
+---
+Part of the link:git.html[git] suite
+
. git-sh-setup-script || die "Not a git archive"
usage () {
- echo >&2 "usage: $0 [--heads] [--tags] [--overwrite | --store] repo"
+ echo >&2 "usage: $0 [--heads] [--tags] <repository> <refs>..."
exit 1;
}
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 ;;
--)
esac
done
-case "$#" in 1) ;; *) usage ;; esac
-case ",$store,$overwrite," in *,,*) ;; *) usage ;; esac
+case "$#" in 0) usage ;; esac
case ",$heads,$tags," in
,,,) heads=heads tags=tags other=other ;;
esac
-. git-parse-remote "$@"
+. git-parse-remote "$1"
peek_repo="$_remote_repo"
+shift
tmp=.ls-remote-$$
trap "rm -fr $tmp-*" 0 1 2 3 15
git-peek-remote "$peek_repo"
;;
esac |
-
+sort -t ' ' -k 2 |
while read sha1 path
do
case "$path" in
*)
continue;;
esac
-
- echo "$sha1 $path"
-
- case "$path,$store,$overwrite," in
- *,,, | HEAD,*) continue ;;
+ case "$#" in
+ 0)
+ match=yes ;;
+ *)
+ match=no
+ for pat
+ do
+ case "/$path" in
+ */$pat )
+ match=yes
+ break ;;
+ esac
+ done
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
+ case "$match" in
+ no)
+ continue ;;
+ esac
+ echo "$sha1 $path"
done