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

[RFC/PATCH] log: decorate detached HEAD differently

From
Michael J Gruber <git@drmicha.warpmail.net>
Date
Feb 18, 2015, 13:19 UTC
Message-ID
<2df73f987d69531622681a560ce8ccbd88b15501.1424264942.git.git@drmicha.warpmail.net>
In-Reply-To
<54E46635.4060009@drmicha.warpmail.net>

"git status" and "git branch" let the user know when the HEAD is detached, while "git log --decorate" does not.

Change the decoration by a detached HEAD to "detached HEAD". This can be seen as giving more information about the decoration item itself in the same way as we prefix tags by "tag: ".

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
---
This turned out to be easy to do, though I am still undecided.
Personally, I like to think of refs as objects (and have implemented refname
objects in the past), but that view is not too popular.

So, maybe the analogy between ref peeling and symref resolving (for HEAD) is not that strong after all. They are both indirections, though different technically.

The RFC patch only checks HEAD for being a symref, the output is analogous to the summary of "git commit".

 log-tree.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/log-tree.c b/log-tree.c
index 7f0890e..2eac4b6 100644
--- a/log-tree.c
+++ b/log-tree.c
@@ -118,8 +118,14 @@ static int add_ref_decoration(const char *refname, const unsigned char *sha1, in
 		type = DECORATION_REF_TAG;
 	else if (!strcmp(refname, "refs/stash"))
 		type = DECORATION_REF_STASH;
-	else if (!strcmp(refname, "HEAD"))
+	else if (!strcmp(refname, "HEAD")) {
+		char *junk_sha1[20];
+		char *head;
 		type = DECORATION_REF_HEAD;
+		head = resolve_ref_unsafe("HEAD", 0, junk_sha1, NULL);
+		if (!strcmp(head, "HEAD"))
+			refname = "detached HEAD";
+	}
 
 	if (!cb_data || *(int *)cb_data == DECORATE_SHORT_REFS)
 		refname = prettify_refname(refname);
-- 
2.3.0.136.g92a3b58
Previous: Michael J GruberNext: Junio C Hamano
Message 5 of 23 in “Should "git log --decorate" indicate whether the HEAD is detached?”
  1. Julien CretelFeb 16, 2015
  2. Junio C HamanoFeb 16, 2015
  3. Julien CretelFeb 16, 2015
  4. Michael J GruberFeb 18, 2015
  5. log: decorate detached HEAD differentlyMichael J Gruber, Feb 18, 2015
  6. Junio C HamanoFeb 18, 2015
  7. Michael J GruberFeb 18, 2015
  8. Junio C HamanoFeb 18, 2015
  9. Michael J GruberFeb 19, 2015
  10. Julien CretelFeb 19, 2015
  11. Junio C HamanoFeb 20, 2015
  12. log: decorate detached HEAD differentlyMichael J Gruber, Mar 6, 2015
  13. Michael J GruberMar 6, 2015
  14. Junio C HamanoMar 6, 2015
  15. Michael J GruberMar 9, 2015
  16. Junio C HamanoMar 10, 2015
  17. Michael J GruberMar 10, 2015
  18. 0/2 log decorations for HEADMichael J Gruber, Mar 10, 2015
  19. Junio C HamanoMar 10, 2015
  20. Michael J GruberMar 11, 2015
  21. Julien CretelMar 23, 2015
  22. 1/2 log-tree: properly reset colorsMichael J Gruber, Mar 10, 2015
  23. 2/2 log: decorate HEAD with branch nameMichael J Gruber, Mar 10, 2015

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.