ls-remote: drop storing operation and add documentation.
authorJunio C Hamano <junkio@cox.net>
Mon, 8 Aug 2005 08:20:03 +0000 (01:20 -0700)
committerJunio C Hamano <junkio@cox.net>
Wed, 10 Aug 2005 06:38:51 +0000 (23:38 -0700)
The store operation was never useful because we needed to fetch
the objects needed to complete the reference.  Remove it.

The fetch command fetch multiple references shortly to
replace the lost "store" functionality in more a generic way.

Signed-off-by: Junio C Hamano <junkio@cox.net>
Documentation/git-ls-remote-script.txt [new file with mode: 0644]
git-ls-remote-script

diff --git a/Documentation/git-ls-remote-script.txt b/Documentation/git-ls-remote-script.txt
new file mode 100644 (file)
index 0000000..0b98e6a
--- /dev/null
@@ -0,0 +1,64 @@
+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
+
index 31cdac8bfed3837653d80828c7cf60647df0af07..75f60278669851d627a9ff2f8e87c9382af72c6a 100755 (executable)
@@ -3,7 +3,7 @@
 . 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;
 }
 
@@ -12,10 +12,6 @@ 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 ;;
   --)
@@ -27,15 +23,15 @@ do
   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
@@ -65,7 +61,7 @@ rsync://* )
        git-peek-remote "$peek_repo"
        ;;
 esac |
-
+sort -t '      ' -k 2 |
 while read sha1 path
 do
        case "$path" in
@@ -82,23 +78,23 @@ do
        *)
                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