All of lore.kernel.org
 help / color / mirror / Atom feed
From: "René Scharfe" <rene.scharfe@lsrfire.ath.cx>
To: Junio C Hamano <gitster@pobox.com>
Cc: Johannes Schindelin <Johannes.Schindelin@gmx.de>, git@vger.kernel.org
Subject: Re: [PATCH 3/3] pretty=format: Avoid some expensive calculations when not needed
Date: Mon, 05 Nov 2007 21:21:03 +0100	[thread overview]
Message-ID: <472F7B2F.4050608@lsrfire.ath.cx> (raw)
In-Reply-To: <7v8x5cqxn0.fsf@gitster.siamese.dyndns.org>

Junio C Hamano schrieb:
> 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.
> 
> 
>> 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?

How about (ab)using the value field?  Let interp_find_active() mark
unneeded entries with NULL, and the rest with some cookie.  All table
entries with non-NULL values need to be initialized.  interp_set_entry()
needs to be aware of this cookie, as it mustn't free() it.  The cookie
could be the address of a static char* in interpolate.c.

  reply	other threads:[~2007-11-05 20:21 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-11-04 19:14 [PATCH 0/3] Make user formatted commit listing less expensive Johannes Schindelin
2007-11-04 19:15 ` [PATCH 1/3] Split off the pretty print stuff into its own file Johannes Schindelin
2007-11-05 21:16   ` Junio C Hamano
2007-11-04 19:15 ` [PATCH 2/3] interpolate.[ch]: Add a function to find which interpolations are active Johannes Schindelin
2007-11-04 19:15 ` [PATCH 3/3] pretty=format: Avoid some expensive calculations when not needed Johannes Schindelin
2007-11-05 19:51   ` Junio C Hamano
2007-11-05 20:21     ` René Scharfe [this message]
2007-11-05 20:25       ` Jon Loeliger
2007-11-05 23:53       ` Johannes Schindelin
2007-11-06  1:06       ` Junio C Hamano
2007-11-06 22:31         ` René Scharfe
2007-11-06 23:17           ` René Scharfe
2007-11-06 23:45             ` Johannes Schindelin
2007-11-07 23:19               ` René Scharfe
2007-11-08  0:14                 ` Johannes Schindelin
2007-11-07  0:11             ` Pierre Habouzit
2007-11-07  0:14               ` Pierre Habouzit
2007-11-07 23:21                 ` René Scharfe
2007-11-07 23:31                   ` Pierre Habouzit
2007-11-07 20:43             ` Junio C Hamano
2007-11-09  0:49               ` René Scharfe
2007-11-06 23:36           ` Johannes Schindelin
2007-11-06 23:38             ` [PATCH 1/2] interpolate.[ch]: Add a function to find which interpolations are active Johannes Schindelin
2007-11-06 23:38             ` [PATCH 2/2] pretty=format: Avoid some expensive calculations when not needed Johannes Schindelin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=472F7B2F.4050608@lsrfire.ath.cx \
    --to=rene.scharfe@lsrfire.ath.cx \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.