From: Jeff King Date: Tue, 18 Jan 2011 20:50:40 GMT Subject: Re: gitk "find commit adding/removing string"/possible pickaxe bug? Message-ID: <20110118205040.GA20970@sigill.intra.peff.net> In-Reply-To: <201101182139.28808.trast@student.ethz.ch> On Tue, Jan 18, 2011 at 09:39:28PM +0100, Thomas Rast wrote: > So indeed > > git log -Squux -c -p > > gives a combined diff. But OTOH > > git log -Sbar -c -p > > doesn't; it only gives a diff for the commit that introduced 'bar'. I > guess this makes sense: -S notices that the number of 'bar's is > actually the same as in *one* merge parent, hence the merge cannot be > all that interesting. OTOH it still shows the merge commit in the > history, which is a bit strange. --pickaxe-all does not make a > difference either; Hrm. What I expected[1] to happen would be for the diff machinery to look at each filepair individually, one of them to trigger -S, which shows the commit, and then to fail to produce a combined diff because we threw away the other uninteresting filepair. But in that case, --pickaxe-all _should_ show something, as its point is to keep all of the filepairs. And that's clearly not happening. So now I don't know what's going on. I'll try to trace through the diff machinery and see if that gives a clue. -Peff [1] That's what I expect, but not necessarily what I want. I think what I would want is for it to do a token count of the merge commit, and if it fails to match _every_ parent, then it it interesting. Otherwise, the content presumably came from that parent.