Re: [PATCH] blame: add the ability to ignore commits
- From
- Barret Rhoden <brho@google.com>
- Date
- Jan 14, 2019, 15:19 UTC
- Message-ID
- <20190114101956.2b899d0e@brho.roam.corp.google.com>
- In-Reply-To
- <xmqq1s5k16zj.fsf@gitster-ct.c.googlers.com>
On 2019-01-10 at 14:29 Junio C Hamano <gitster@pobox.com> wrote:
Show 21 quoted lines
> > For instance, commit X does this: > > > > -foo(x,y); > > +foo(x,y,z); > > > > Then commit Y comes along to reformat it: > > > > -foo(x,y,z); > > +foo(x, y, z); > > > > And the history / rev-list for the file looks like: > > > > ---O---A---X---B---C---D---Y---E---F > > > > I want to ignore/skip Y and see X in the blame output. > > If you skip Y, the altered history would have "foo(x, y, z)" in E, > "foo(x,y,z)" in X, and "foo(x,y)" in A. If you start blaming from > F, you'd get E as the commit that explains the latest state. If you > do not skip Y, you'd get Y. I am not sure how you'd get X in either > case.
The way to do it is to let the blames get passed to Y - don't yank it from the graph. Then when trying to pass the blames from Y to its parent, when we get a diff chunk that Y is responsible for, instead of keeping it on Y's suspect list, we hand the blame_entry to D. That blame_entry will get passed all the way back to X, which also has a diff that touches that line.
Basically we do the same blame processing as usual, but just don't let any blames stick to Y.
Barret