From: Mikael Magnusson Date: Mon, 24 Nov 2008 15:08:30 GMT Subject: Re: Not-quite-a-bug in pickaxe Message-ID: <237967ef0811240708t58d48c84ud0626ba3aaed47b6@mail.gmail.com> In-Reply-To: 2008/11/24 Johannes Schindelin : > 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?) > but now it hit me big time: > if a commit moves a certain string from one place to another, "git log > -S" 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