git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH] show-ref: make --head always show the HEAD ref

From
Doug Bell <madcityzen@gmail.com>
Date
Jul 13, 2013, 02:03 UTC
Message-ID
<1373680988-72804-2-git-send-email-madcityzen@gmail.com>
In-Reply-To
<1373680988-72804-1-git-send-email-madcityzen@gmail.com>
The docs seem to say that doing
	git show-ref --head --tags

would show both the HEAD ref and all the tag refs. However, doing both --head and either of --tags or --heads would filter out the HEAD ref.

Also update the documentation to describe the new behavior.
Signed-off-by: Doug Bell <madcityzen@gmail.com>
---
 Documentation/git-show-ref.txt | 10 ++++++----
 builtin/show-ref.c             |  8 ++++++--
 2 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/Documentation/git-show-ref.txt b/Documentation/git-show-ref.txt
index de4d352..b0a309b 100644
--- a/Documentation/git-show-ref.txt
+++ b/Documentation/git-show-ref.txt
@@ -21,6 +21,8 @@ commit IDs. Results can be filtered using a pattern and tags can be
 dereferenced into object IDs. Additionally, it can be used to test whether a
 particular ref exists.
 
+By default, shows the tags, heads, and remote refs.
+
 The --exclude-existing form is a filter that does the inverse, it shows the
 refs from stdin that don't exist in the local repository.
 
@@ -32,14 +34,14 @@ OPTIONS
 
 --head::
 
-	Show the HEAD reference.
+	Show the HEAD reference, even if it would normally be filtered out.
 
 --tags::
 --heads::
 
-	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.
+	Limit to "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.
 
 -d::
 --dereference::
diff --git a/builtin/show-ref.c b/builtin/show-ref.c
index 4a0310d..4b069e7 100644
--- a/builtin/show-ref.c
+++ b/builtin/show-ref.c
@@ -31,6 +31,9 @@ static int show_ref(const char *refname, const unsigned char *sha1, int flag, vo
 	const char *hex;
 	unsigned char peeled[20];
 
+	if (show_head && !strncmp(refname, "HEAD\0", 5))
+		goto match;
+
 	if (tags_only || heads_only) {
 		int match;
 
@@ -167,9 +170,10 @@ static const struct option show_ref_options[] = {
 	OPT_BOOLEAN(0, "verify", &verify, N_("stricter reference checking, "
 		    "requires exact ref path")),
 	{ OPTION_BOOLEAN, 'h', NULL, &show_head, NULL,
-	  N_("show the HEAD reference"),
+	  N_("show the HEAD reference, even if it would be filtered out"),
 	  PARSE_OPT_NOARG | PARSE_OPT_HIDDEN },
-	OPT_BOOLEAN(0, "head", &show_head, N_("show the HEAD reference")),
+	OPT_BOOLEAN(0, "head", &show_head,
+	  N_("show the HEAD reference, even if it would be filtered out")),
 	OPT_BOOLEAN('d', "dereference", &deref_tags,
 		    N_("dereference tags into object IDs")),
 	{ OPTION_CALLBACK, 's', "hash", &abbrev, N_("n"),
-- 
1.7.12.4
Previous: Doug BellNext: Junio C Hamano
Message 5 of 8 in “show-ref: make --head always show the HEAD ref”
  1. show-ref: make --head always show the HEAD refDoug Bell, May 30, 2013
  2. Junio C HamanoJul 11, 2013
  3. Doug BellJul 13, 2013
  4. show-ref: make --head always show the HEAD refDoug Bell, Jul 13, 2013
  5. show-ref: make --head always show the HEAD refDoug Bell, Jul 13, 2013
  6. Junio C HamanoJul 15, 2013
  7. show-ref: make --head always show the HEAD refDoug Bell, Jul 17, 2013
  8. show-ref: make --head always show the HEAD refDoug Bell, Jul 17, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.