threads / discuss / 26640

In-depth git blame?

Subject: In-depth git blame?

## tl;dr

8 messages between Mar 2, 2011 and Mar 8, 2011.

replies: 7people: 4as markdown or json

Jez· Mar 2, 2011, 20:43 UTC · lore
Hi all,

Git-blame is useful, but sometimes I want to know the series of commits that have affected a line -- not just the most recent one. Is there a way to do this?

Regards, Jez

Jeff King· Mar 2, 2011, 21:15 UTC · re: Jez · lore

Re: In-depth git blame?

On Wed, Mar 02, 2011 at 03:43:42PM -0500, Jez wrote:
> Git-blame is useful, but sometimes I want to know the series of
> commits that have affected a line -- not just the most recent one. Is
> there a way to do this?

If you use "git gui blame" or "tig blame", both have a "blame from parent commit" feature. This restarts the blame using the content as it was just before the answer you just got, so you can recursively dig. It's unfortunately a somewhat manual process.

There was a GSoC project to do what you asked, where you would indicate a set of lines and get a "git log"-like output of all the commits touching those lines. But there were some issues with the code, and it never quite made it upstream, I think. I'm not sure what the current status is. Cc'ing Thomas and Bo, who worked on it.

-Peff
Peter Baumann· Mar 2, 2011, 21:29 UTC · re: Jeff King · lore

Re: In-depth git blame?

On Wed, Mar 02, 2011 at 04:15:45PM -0500, Jeff King wrote:
Show 11 quoted lines
> On Wed, Mar 02, 2011 at 03:43:42PM -0500, Jez wrote:
> 
> > Git-blame is useful, but sometimes I want to know the series of
> > commits that have affected a line -- not just the most recent one. Is
> > there a way to do this?
> 
> If you use "git gui blame" or "tig blame", both have a "blame from
> parent commit" feature. This restarts the blame using the content as it
> was just before the answer you just got, so you can recursively dig.
> It's unfortunately a somewhat manual process.
> 
 
Hm. I guess pressing 'B' will blame the parent commit in tig. 
But I can't figure out how to navigate back to the old commit (before pressing 'B')?
Any hints appreciated!
-Peter
Jeff King· Mar 2, 2011, 21:34 UTC · re: Peter Baumann · lore

Re: In-depth git blame?

On Wed, Mar 02, 2011 at 10:29:51PM +0100, Peter Baumann wrote:
Show 9 quoted lines
> > If you use "git gui blame" or "tig blame", both have a "blame from
> > parent commit" feature. This restarts the blame using the content as
> > it was just before the answer you just got, so you can recursively
> > dig.  It's unfortunately a somewhat manual process.
> > 
>  
> Hm. I guess pressing 'B' will blame the parent commit in tig.  But I
> can't figure out how to navigate back to the old commit (before
> pressing 'B')?  Any hints appreciated!

No, it is "," (comma) from the blame viewer in tig to blame starting from the parent of the blamed commit of the highlighted line.

Doing "B" will just re-blame starting at that commit, which will of course give you the same answer (I think it is a global "go to blame view", so it is more useful when you are _not_ in the blame viewer already).

And if you are confused at any point, "h" should give you a context-sensitive list of keystrokes.

-Peff
Peter Baumann· Mar 2, 2011, 21:44 UTC · re: Jeff King · lore

Re: In-depth git blame?

[ Cc Jonas, because he might know more about that ]
On Wed, Mar 02, 2011 at 04:34:37PM -0500, Jeff King wrote:
Show 15 quoted lines
> On Wed, Mar 02, 2011 at 10:29:51PM +0100, Peter Baumann wrote:
> 
> > > If you use "git gui blame" or "tig blame", both have a "blame from
> > > parent commit" feature. This restarts the blame using the content as
> > > it was just before the answer you just got, so you can recursively
> > > dig.  It's unfortunately a somewhat manual process.
> > > 
> >  
> > Hm. I guess pressing 'B' will blame the parent commit in tig.  But I
> > can't figure out how to navigate back to the old commit (before
> > pressing 'B')?  Any hints appreciated!
> 
> No, it is "," (comma) from the blame viewer in tig to blame starting
> from the parent of the blamed commit of the highlighted line.
> 
Thx, I didn't know that. Your help is really appreciated!
Show 8 quoted lines
> Doing "B" will just re-blame starting at that commit, which will of
> course give you the same answer (I think it is a global "go to blame
> view", so it is more useful when you are _not_ in the blame viewer
> already).
> 
> And if you are confused at any point, "h" should give you a
> context-sensitive list of keystrokes.
> 

Hm. I did look at the 'h'elp, but it wasn't mentioned there, at least not in my version (tig version 0.16-9-g7630a8f) here.

Show 6 quoted lines
> -Peff
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
Peter Baumann· Mar 2, 2011, 21:50 UTC · re: Peter Baumann · lore

Re: In-depth git blame?

On Wed, Mar 02, 2011 at 10:44:45PM +0100, Peter Baumann wrote:
Show 31 quoted lines
> [ Cc Jonas, because he might know more about that ]
> 
> On Wed, Mar 02, 2011 at 04:34:37PM -0500, Jeff King wrote:
> > On Wed, Mar 02, 2011 at 10:29:51PM +0100, Peter Baumann wrote:
> > 
> > > > If you use "git gui blame" or "tig blame", both have a "blame from
> > > > parent commit" feature. This restarts the blame using the content as
> > > > it was just before the answer you just got, so you can recursively
> > > > dig.  It's unfortunately a somewhat manual process.
> > > > 
> > >  
> > > Hm. I guess pressing 'B' will blame the parent commit in tig.  But I
> > > can't figure out how to navigate back to the old commit (before
> > > pressing 'B')?  Any hints appreciated!
> > 
> > No, it is "," (comma) from the blame viewer in tig to blame starting
> > from the parent of the blamed commit of the highlighted line.
> > 
> Thx, I didn't know that. Your help is really appreciated!
> 
> > Doing "B" will just re-blame starting at that commit, which will of
> > course give you the same answer (I think it is a global "go to blame
> > view", so it is more useful when you are _not_ in the blame viewer
> > already).
> > 
> > And if you are confused at any point, "h" should give you a
> > context-sensitive list of keystrokes.
> > 
> Hm. I did look at the 'h'elp, but it wasn't mentioned there, at least
> not in my version (tig version 0.16-9-g7630a8f) here.
> 

Ok. I take it back. I was blind not having it seen in the help. Searching for ',' did make me see it :-)

-Peter
Jonas Fonseca· Mar 7, 2011, 23:20 UTC · re: Peter Baumann · lore

Re: In-depth git blame?

On Wed, Mar 2, 2011 at 16:44, Peter Baumann <waste.manager@gmx.de> wrote:
> [ Cc Jonas, because he might know more about that ]
... although he arrives late in the discussion.
Show 11 quoted lines
> On Wed, Mar 02, 2011 at 04:34:37PM -0500, Jeff King wrote:
>> On Wed, Mar 02, 2011 at 10:29:51PM +0100, Peter Baumann wrote:
>>
>> > Hm. I guess pressing 'B' will blame the parent commit in tig.  But I
>> > can't figure out how to navigate back to the old commit (before
>> > pressing 'B')?  Any hints appreciated!
>>
>> No, it is "," (comma) from the blame viewer in tig to blame starting
>> from the parent of the blamed commit of the highlighted line.
>>
> Thx, I didn't know that. Your help is really appreciated!

Pressing 'B' in the blame view reloads the blame view based on the line/commit, which is currently selected. And as Jeff points out ',' reloads based on the parent of the current commit.

Tig is very poor in terms of history (search, blame, commit) so there's is no 'back' button.

-- 
Jonas Fonseca
Peter Baumann· Mar 8, 2011, 06:48 UTC · re: Jonas Fonseca · lore

Re: In-depth git blame?

On Mon, Mar 07, 2011 at 06:20:56PM -0500, Jonas Fonseca wrote:
Show 23 quoted lines
> On Wed, Mar 2, 2011 at 16:44, Peter Baumann <waste.manager@gmx.de> wrote:
> > [ Cc Jonas, because he might know more about that ]
> 
> ... although he arrives late in the discussion.
> 
> > On Wed, Mar 02, 2011 at 04:34:37PM -0500, Jeff King wrote:
> >> On Wed, Mar 02, 2011 at 10:29:51PM +0100, Peter Baumann wrote:
> >>
> >> > Hm. I guess pressing 'B' will blame the parent commit in tig.  But I
> >> > can't figure out how to navigate back to the old commit (before
> >> > pressing 'B')?  Any hints appreciated!
> >>
> >> No, it is "," (comma) from the blame viewer in tig to blame starting
> >> from the parent of the blamed commit of the highlighted line.
> >>
> > Thx, I didn't know that. Your help is really appreciated!
> 
> Pressing 'B' in the blame view reloads the blame view based on the
> line/commit, which is currently selected. And as Jeff points out ','
> reloads based on the parent of the current commit.
> 
> Tig is very poor in terms of history (search, blame, commit) so
> there's is no 'back' button.
Ah. That explain I didn't find any. Thx.
-Peter

← back to recent threads