threads / patch / 10645

patch, 5 partspretty describe: avoid calling find_unique_abbrev() if not needed

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

## tl;dr

One message between Nov 4, 2007 and Nov 4, 2007. Diffs are folded; open one to read it.

replies: 0people: 1as markdown or json

René Scharfe· Nov 4, 2007, 11:49 UTC · lore

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(-)
Show changes to commit.c +21 −14
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

← back to recent threads