On Thu, Dec 14, 2017 at 6:18 PM, Junio C Hamano <gitster@xxxxxxxxx> wrote: > Jonathan Nieder <jrnieder@xxxxxxxxx> writes: > >>> Regarding finding a better name, I would want to hear from others, >>> I am happy with --find-object, though I can see --pickaxe-object >>> or --object--filter to be a good narrative as well. >> >> Drat, I was hoping for an opinion. > > I think it would make it a better companion to --pickaxe but we need > to align its behaviour a little bit so that it plays better with the > "--pickaxe-all" option, and also needs to hide mode and name only > changes just like pickaxe. I looked into this, and the small changes needed led me to thinking it could be integrated into the diffcore-pickaxe code completely, roughly like (spaces mangled): diff --git a/diffcore-pickaxe.c b/diffcore-pickaxe.c index 9476bd2108..46f875a7b4 100644 --- a/diffcore-pickaxe.c +++ b/diffcore-pickaxe.c @@ -124,13 +124,21 @@ static int pickaxe_match(struct diff_filepair *p, struct diff_options *o, mmfile_t mf1, mf2; int ret; - if (!o->pickaxe[0]) - return 0; - /* ignore unmerged */ if (!DIFF_FILE_VALID(p->one) && !DIFF_FILE_VALID(p->two)) return 0; + if (options->objfind) { + if ((DIFF_FILE_VALID(p->one) && + oidset_contains(options->objfind, &p->one->oid)) || + (DIFF_FILE_VALID(p->two) && + oidset_contains(options->objfind, &p->two->oid))) + return 1; + } + + if (!o->pickaxe[0]) + return 0; + if (o->flags.allow_textconv) { textconv_one = get_textconv(p->one); textconv_two = get_textconv(p->two); ---8<--- But then, it seems as if any pickaxe option is incompatible with any other, i.e. from reading the code, you cannot combine -S and -G, or even give one of them twice. I guess that would be not a big deal for the --pickaxe-object, but just want to point it out. > After all, the diffcore-blobfind code was written while looking at > the diffcore-pickaxe's code in another window shown in the pager, > and I tend to agree with your earlier message that this is an > extreme case of -S<contents> where the contents happens to be the > whole file. I disagree, as the user doesn't have the content, but the hash over the content only and wants to know more about it. The new option cannot be used to find a file whose partial content hashes to the given sha1, either. So with these considerations, I would keep the patch as currently\ queued at sb/diff-blobfind. Thanks, Stefan