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

[PATCH 6/5] pretty describe: avoid calling find_unique_abbrev() if not needed

From
René Scharfe <rene.scharfe@lsrfire.ath.cx>
Date
Nov 4, 2007, 11:49 UTC
Message-ID
<472DB1BB.9080805@lsrfire.ath.cx>

As suggested by Junio, --pretty=format can be sped up by avoiding to call find_unique_abbrev() if it's not needed. This is quite easy after the "pretty describe" series, as interp_count() exists and has already been called to avoid the (even bigger) overhead of the describe placeholders.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
---
 commit.c |   35 +++++++++++++++++++++--------------
 1 files changed, 21 insertions(+), 14 deletions(-)
diff --git a/commit.c b/commit.c
index 06d5cec..9ff4735 100644
--- a/commit.c
+++ b/commit.c
@@ -851,13 +851,17 @@ void format_commit_message(struct commit *commit,
 	if (!commit->object.parsed)
 		parse_object(commit->object.sha1);
 	interp_set_entry(table, IHASH, sha1_to_hex(commit->object.sha1));
-	interp_set_entry(table, IHASH_ABBREV,
-			find_unique_abbrev(commit->object.sha1,
-				DEFAULT_ABBREV));
+	if (occurs[IHASH_ABBREV]) {
+		interp_set_entry(table, IHASH_ABBREV,
+		                 find_unique_abbrev(commit->object.sha1,
+		                                    DEFAULT_ABBREV));
+	}
 	interp_set_entry(table, ITREE, sha1_to_hex(commit->tree->object.sha1));
-	interp_set_entry(table, ITREE_ABBREV,
-			find_unique_abbrev(commit->tree->object.sha1,
-				DEFAULT_ABBREV));
+	if (occurs[ITREE_ABBREV]) {
+		interp_set_entry(table, ITREE_ABBREV,
+		                 find_unique_abbrev(commit->tree->object.sha1,
+		                                    DEFAULT_ABBREV));
+	}
 	interp_set_entry(table, ILEFT_RIGHT,
 			 (commit->object.flags & BOUNDARY)
 			 ? "-"
@@ -873,14 +877,17 @@ void format_commit_message(struct commit *commit,
 			sha1_to_hex(p->item->object.sha1));
 	interp_set_entry(table, IPARENTS, parents + 1);
 
-	parents[1] = 0;
-	for (i = 0, p = commit->parents;
-			p && i < sizeof(parents) - 1;
-			p = p->next)
-		i += snprintf(parents + i, sizeof(parents) - i - 1, " %s",
-			find_unique_abbrev(p->item->object.sha1,
-				DEFAULT_ABBREV));
-	interp_set_entry(table, IPARENTS_ABBREV, parents + 1);
+	if (occurs[IPARENTS_ABBREV]) {
+		parents[1] = 0;
+		for (i = 0, p = commit->parents;
+		     p && i < sizeof(parents) - 1;
+		     p = p->next)
+			i += snprintf(parents + i, sizeof(parents) - i - 1,
+			              " %s",
+			              find_unique_abbrev(p->item->object.sha1,
+			                                 DEFAULT_ABBREV));
+		interp_set_entry(table, IPARENTS_ABBREV, parents + 1);
+	}
 
 	if (occurs[IDESC] || occurs[IDESC_DEPTH] || occurs[IDESC_NAME]) {
 		struct strbuf desc;
-- 
1.5.3.5.529.ge3d6d
Message 1 of 1 in “pretty describe: avoid calling find_unique_abbrev() if not needed”
  1. 6/5 pretty describe: avoid calling find_unique_abbrev() if not neededRené Scharfe, Nov 4, 2007

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.