From: Jeff King Date: Sat, 05 Mar 2011 13:48:47 GMT Subject: Re: frustrated forensics: hard to find diff that undid a fix Message-ID: <20110305134846.GA2221@sigill.intra.peff.net> In-Reply-To: <20110305125100.GA14547@elie> On Sat, Mar 05, 2011 at 06:51:00AM -0600, Jonathan Nieder wrote: > | $ git log --oneline -m -S "$(cat contrib/fast-import/git-p4)" maint..master > | 07873dc (from 964498e) Merge branch 'maint' > | 6d74e5c (from 08fd871) Merge branch 'mh/p4' > | 6d74e5c (from c9dbab0) Merge branch 'mh/p4' > | $ > > Too many hits (it includes every merge in which one side contains > the string and the other does not). How about -c, which seemed to > produce such nice output with --raw? Yeah, I think the problem is that the diffcore chain doesn't know enough about the merge. It just sees the filepairs between the commit and each parent separately. I looked into this recently as part of this thread: http://article.gmane.org/gmane.comp.version-control.git/165743 I described some reasonable semantics there, but implementing them looked non-trivial. I'd be very happy to be proven wrong. Patches welcome. :) -Peff