public inbox for git@vger.kernel.org 
 help / color / mirror / Atom feed
From: Michael J Gruber <git@drmicha•warpmail.net>
To: Jeff King <peff@peff•net>
Cc: git@vger•kernel.org, Junio C Hamano <gitster@pobox•com>
Subject: Re: [PATCH 6/6] grep: obey --textconv for the case rev:path
Date: Sat, 20 Apr 2013 16:42:49 +0200	[thread overview]
Message-ID: <5172A969.9000106@drmicha.warpmail.net> (raw)
In-Reply-To: <20130420042445.GD24970@sigill.intra.peff.net>

Jeff King venit, vidit, dixit 20.04.2013 06:24:
> On Fri, Apr 19, 2013 at 06:44:49PM +0200, Michael J Gruber wrote:
> 
>> @@ -820,12 +820,13 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
>>  	for (i = 0; i < argc; i++) {
>>  		const char *arg = argv[i];
>>  		unsigned char sha1[20];
>> +		struct object_context oc;
>>  		/* Is it a rev? */
>> -		if (!get_sha1(arg, sha1)) {
>> +		if (!get_sha1_with_context(arg, 0, sha1, &oc)) {
>>  			struct object *object = parse_object_or_die(sha1, arg);
>>  			if (!seen_dashdash)
>>  				verify_non_filename(prefix, arg);
>> -			add_object_array(object, arg, &list);
>> +			add_object_array_with_context(object, arg, &list, xmemdupz(&oc, sizeof(struct object_context)));
> 
> Hrm. I'm not excited about the extra allocation here. Who frees it?
> 
>> +void add_object_array(struct object *obj, const char *name, struct object_array *array)
>> +{
>> +	add_object_array_with_mode(obj, name, array, S_IFINVALID);
>> +}
>> +
>> +void add_object_array_with_mode(struct object *obj, const char *name, struct object_array *array, unsigned mode)
>> +{
>> +	add_object_array_with_mode_context(obj, name, array, mode, NULL);
>> +}
>> +
>> +void add_object_array_with_context(struct object *obj, const char *name, struct object_array *array, struct object_context *context)
>> +{
>> +	if (context)
>> +		add_object_array_with_mode_context(obj, name, array, context->mode, context);
>> +	else
>> +		add_object_array_with_mode_context(obj, name, array, S_IFINVALID, context);
>> +}
> 
> And this mass of almost-the-same functions is gross, too, especially
> given that the object_context contains a mode itself.

Well, it's just providing different ways to call into the one and only
function, in order to satisfy different callers' needs. It's not unheard
of (or rather: unseen) in our code, is it?

> Unfortunately, I'm not sure if I have a more pleasant suggestion. I seem
> to recall wrestling with this issue during the last round, too.

Yes, I think that's what we ended up with. At least it's just one
context struct per argument to grep, so it's not that bad after all.

I vaguely seem to recall we had some more general framework cooking but
I may be wrong (I was offline due to sickness for a while). It was about
attaching some additional info to something. Yes, I said "vaguely" ...

Michael

  reply	other threads:[~2013-04-20 14:55 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-04-19 16:44 [PATCH 0/6] grep with textconv Michael J Gruber
2013-04-19 16:44 ` [PATCH 1/6] t4030: demonstrate behavior of show " Michael J Gruber
2013-04-20  4:04   ` Jeff King
2013-04-20 13:35     ` Michael J Gruber
2013-04-19 16:44 ` [PATCH 2/6] show: obey --textconv for blobs Michael J Gruber
2013-04-20  4:06   ` Jeff King
2013-04-20 13:38     ` Michael J Gruber
2013-04-21  3:37       ` Jeff King
2013-04-22 10:29         ` Michael J Gruber
2013-04-22 15:25         ` Junio C Hamano
2013-04-22 15:29           ` Jeff King
2013-04-22 15:37             ` Jeremy Rosen
2013-04-22 15:54               ` Matthieu Moy
2013-04-23  8:58                 ` Michael J Gruber
2013-04-19 16:44 ` [PATCH 3/6] cat-file: do not die on --textconv without textconv filters Michael J Gruber
2013-04-19 18:15   ` Junio C Hamano
2013-04-20  4:17   ` Jeff King
2013-04-20 14:27     ` Michael J Gruber
2013-04-19 16:44 ` [PATCH 4/6] t7008: demonstrate behavior of grep with textconv Michael J Gruber
2013-04-19 16:44 ` [PATCH 5/6] grep: allow to use textconv filters Michael J Gruber
2013-04-20  4:31   ` Jeff King
2013-04-19 16:44 ` [PATCH 6/6] grep: obey --textconv for the case rev:path Michael J Gruber
2013-04-20  4:24   ` Jeff King
2013-04-20 14:42     ` Michael J Gruber [this message]
2013-04-21  3:41       ` Jeff King
2013-04-19 18:24 ` [PATCH 0/6] grep with textconv Junio C Hamano
2013-04-20  4:26   ` Jeff King
2013-04-20 13:32   ` Michael J Gruber
2013-04-23 12:11     ` [PATCHv2 0/7] " Michael J Gruber
2013-04-23 12:11       ` [PATCHv2 1/7] t4030: demonstrate behavior of show " Michael J Gruber
2013-04-23 15:11         ` Junio C Hamano
2013-04-23 12:11       ` [PATCHv2 2/7] show: obey --textconv for blobs Michael J Gruber
2013-04-23 15:14         ` Junio C Hamano
2013-04-24 10:09           ` Michael J Gruber
2013-04-24 17:30             ` Junio C Hamano
2013-04-23 12:11       ` [PATCHv2 3/7] cat-file: do not die on --textconv without textconv filters Michael J Gruber
2013-04-23 15:15         ` Junio C Hamano
2013-04-23 12:11       ` [PATCHv2 4/7] t7008: demonstrate behavior of grep with textconv Michael J Gruber
2013-04-23 15:16         ` Junio C Hamano
2013-04-24 10:09           ` Michael J Gruber
2013-04-24 17:29             ` Junio C Hamano
2013-04-23 12:11       ` [PATCHv2 5/7] grep: allow to use textconv filters Michael J Gruber
2013-04-23 12:11       ` [PATCHv2 6/7] grep: honor --textconv for the case rev:path Michael J Gruber
2013-04-23 12:11       ` [PATCHv2 7/7] git grep: honor textconv by default Michael J Gruber
2013-04-23 15:20         ` Junio C Hamano
2013-04-24 10:05           ` Michael J Gruber
2013-04-24 17:35             ` Junio C Hamano
2013-04-24 17:57               ` Matthieu Moy
2013-04-24 18:55                 ` Junio C Hamano
2013-04-26 11:59                   ` Michael J Gruber
2013-04-26 13:23                     ` Matthieu Moy
2013-04-29  9:04                       ` Michael J Gruber
2013-04-29 15:04                         ` Junio C Hamano
2013-05-10 15:08                           ` [PATCHv3 0/7] textconv with grep and show Michael J Gruber
2013-05-10 15:10                             ` [PATCHv3 1/7] t4030: demonstrate behavior of show with textconv Michael J Gruber
2013-05-10 15:10                             ` [PATCHv3 2/7] diff_opt: track whether flags have been set explicitly Michael J Gruber
2013-05-10 15:31                               ` Eric Sunshine
2013-05-10 15:10                             ` [PATCHv3 3/7] show: honor --textconv for blobs Michael J Gruber
2013-05-10 17:02                               ` Junio C Hamano
2013-05-10 17:34                                 ` Jeff King
2013-05-10 18:04                                   ` Junio C Hamano
2013-05-11  0:25                                     ` Jeff King
2013-05-11 19:54                                       ` Junio C Hamano
2013-05-11  8:54                                 ` Michael J Gruber
2013-05-11 10:00                                   ` Michael J Gruber
2013-05-13  5:01                                     ` Junio C Hamano
2013-05-13 11:55                                       ` Jeff King
2013-05-13 14:57                                         ` Michael J Gruber
2013-05-13 15:41                                           ` Junio C Hamano
2013-05-16  3:31                                           ` Jeff King
2013-05-11 17:36                                   ` Junio C Hamano
2013-05-12 12:13                                     ` Michael J Gruber
2013-05-10 15:10                             ` [PATCHv3 4/7] cat-file: do not die on --textconv without textconv filters Michael J Gruber
2013-05-10 15:10                             ` [PATCHv3 5/7] t7008: demonstrate behavior of grep with textconv Michael J Gruber
2013-05-10 15:10                             ` [PATCHv3 6/7] grep: allow to use textconv filters Michael J Gruber
2013-05-10 15:10                             ` [PATCHv3 7/7] grep: honor --textconv for the case rev:path Michael J Gruber
2013-05-10 18:11                               ` Junio C Hamano
2013-05-10 18:31                                 ` Junio C Hamano

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=5172A969.9000106@drmicha.warpmail.net \
    --to=git@drmicha$(echo .)warpmail.net \
    --cc=git@vger$(echo .)kernel.org \
    --cc=gitster@pobox$(echo .)com \
    --cc=peff@peff$(echo .)net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox