]> git.ipfire.org Git - thirdparty/git.git/commit - builtin.h
Add "git show-ref" builtin command
authorLinus Torvalds <torvalds@osdl.org>
Fri, 15 Sep 2006 18:19:32 +0000 (11:19 -0700)
committerJunio C Hamano <junkio@cox.net>
Sat, 16 Sep 2006 09:23:51 +0000 (02:23 -0700)
commit358ddb62cfd03bba1ca2f1ae8e81b9510f42ea9a
treea8bc7ce64df2e267225e84c473a8770992ef52f4
parente7676d2f6454c9c99e600ee2ce3c7205a9fcfb5f
Add "git show-ref" builtin command

It's kind of like "git peek-remote", but works only locally (and thus
avoids the whole overhead of git_connect()) and has some extra
verification features.

For example, it allows you to filter the results, and to choose whether
you want the tag dereferencing or not. You can also use it to just test
whether a particular ref exists.

For example:

git show-ref master

will show all references called "master", whether tags or heads or
anything else, and regardless of how deep in the reference naming
hierarchy they are (so it would show "refs/heads/master" but also
"refs/remote/other-repo/master").

When using the "--verify" flag, the command requires an exact ref path:

git show-ref --verify refs/heads/master

will only match the exact branch called "master".

If nothing matches, show-ref will return an error code of 1, and in the
case of verification, it will show an error message.

For scripting, you can ask it to be quiet with the "--quiet" flag, which
allows you to do things like

git-show-ref --quiet --verify -- "refs/heads/$headname" ||
echo "$headname is not a valid branch"

to check whether a particular branch exists or not (notice how we don't
actually want to show any results, and we want to use the full refname for
it in order to not trigger the problem with ambiguous partial matches).

To show only tags, or only proper branch heads, use "--tags" and/or
"--heads" respectively (using both means that it shows tags _and_ heads,
but not other random references under the refs/ subdirectory).

To do automatic tag object dereferencing, use the "-d" or "--dereference"
flag, so you can do

git show-ref --tags --dereference

to get a listing of all tags together with what they dereference.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Makefile
builtin-show-ref.c [new file with mode: 0644]
builtin.h
git.c