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