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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxxxxxx>
---
 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
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux