threads / bug / 16440

Not-quite-a-bug in pickaxe

Subject: Not-quite-a-bug in pickaxe

## tl;dr

3 messages between Nov 24, 2008 and Nov 24, 2008.

replies: 2people: 2as markdown or json

Johannes Schindelin· Nov 24, 2008, 11:43 UTC · lore
Hi people,

I do not know if I hit that behavior before, but now it hit me big time: if a commit moves a certain string from one place to another, "git log -S<string>" does not pick up that commit. The code responsible for this is in diffcore-pickaxe.c:

                        else if (!diff_unmodified_pair(p) &&
                                 contains(p->one, needle, len, regexp) !=
                                 contains(p->two, needle, len, regexp))
                                has_changes++;

Basically, the "contains()" method says how often the needle was found, and pickaxe just assumes that a move of a string is not interesting enough.

Now, this behavior is probably intended, as searching files is much cheaper than generating the diffs between them, yet it is something you'll have to keep in mind when using "-S".

Ciao, Dscho

Mikael Magnusson· Nov 24, 2008, 15:08 UTC · re: Johannes Schindelin · lore

Re: Not-quite-a-bug in pickaxe

2008/11/24 Johannes Schindelin <Johannes.Schindelin@gmx.de>:
> Hi people,
>
> I do not know if I hit that behavior before,

I'm pretty sure it has, http://thread.gmane.org/gmane.comp.version-control.git/100113/focus=100115 (at least i think that's the same case?)

Show 17 quoted lines
> but now it hit me big time:
> if a commit moves a certain string from one place to another, "git log
> -S<string>" does not pick up that commit.  The code responsible for this
> is in diffcore-pickaxe.c:
>
>                        else if (!diff_unmodified_pair(p) &&
>                                 contains(p->one, needle, len, regexp) !=
>                                 contains(p->two, needle, len, regexp))
>                                has_changes++;
>
> Basically, the "contains()" method says how often the needle was found,
> and pickaxe just assumes that a move of a string is not interesting
> enough.
>
> Now, this behavior is probably intended, as searching files is much
> cheaper than generating the diffs between them, yet it is something you'll
> have to keep in mind when using "-S".
-- 
Mikael Magnusson
Johannes Schindelin· Nov 24, 2008, 17:36 UTC · re: Mikael Magnusson · lore

Re: Not-quite-a-bug in pickaxe

Hi,
On Mon, 24 Nov 2008, Mikael Magnusson wrote:
Show 7 quoted lines
> 2008/11/24 Johannes Schindelin <Johannes.Schindelin@gmx.de>:
>
> > I do not know if I hit that behavior before,
> 
> I'm pretty sure it has, 
> http://thread.gmane.org/gmane.comp.version-control.git/100113/focus=100115 
> (at least i think that's the same case?)

Ah, I finally got around to read Junio's reply. It did not stick back then.

Thanks, Dscho

← back to recent threads