Re: [PATCH 3/3] pretty=format: Avoid some expensive calculations when not needed
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Nov 5, 2007, 19:51 UTC
- Message-ID
- <7v8x5cqxn0.fsf@gitster.siamese.dyndns.org>
- In-Reply-To
- <Pine.LNX.4.64.0711041915290.4362@racer.site>
Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
> Unfortunately, we cannot reuse the result of that function, which > would be cleaner: there are more users than just git log. Most > notably, git-archive with "$Format:...$" substitution.
That makes sense.
Show 17 quoted lines
> diff --git a/pretty.c b/pretty.c
> index 490cede..241e91c 100644
> --- a/pretty.c
> +++ b/pretty.c
> @@ -393,6 +393,7 @@ void format_commit_message(const struct commit *commit,
> int i;
> enum { HEADER, SUBJECT, BODY } state;
> const char *msg = commit->buffer;
> + char *active = interp_find_active(format, table, ARRAY_SIZE(table));
> ...
> + if (active[IHASH])
> + interp_set_entry(table, IHASH,
> + sha1_to_hex(commit->object.sha1));
> + if (active[IHASH_ABBREV])
> + interp_set_entry(table, IHASH_ABBREV,
> find_unique_abbrev(commit->object.sha1,
> DEFAULT_ABBREV));Instead of allocating a separate array and freeing at the end, wouldn't it make more sense to have a bitfield that records what is used by the format string inside the array elements?