git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Blaming differences

From
Thomas Rast <trast@student.ethz.ch>
Date
Jun 19, 2012, 07:07 UTC
Message-ID
<87hau76aqr.fsf@thomas.inf.ethz.ch>
In-Reply-To
<CABURp0omoLoNaOhD3Vx734aVtm5sbk0E7_2uaZJWrWs=_g84iA@mail.gmail.com>
Phil Hord <phil.hord@gmail.com> writes:
Show 7 quoted lines
> I want something like a product of diff and blame.  I want to see some
> kind of "blame" output for each line of "diff -U0".
>
> I tried something like this:
>    git blame $changed_files
>
> Is there such a command already?
Perhaps the WIP 'log -L' feature can help:
  http://thread.gmane.org/gmane.comp.version-control.git/199385
Show 15 quoted lines
> I'd also like to do something of the inverse operation:  I want to
> find commits within a range whose changes are NOT in some other
> commit.   So, say I have these four commits
>    A---B---C---D
>
> Where D was created by 'git revert B'.
> I'd like to find out somehow that this is equivalent to
>    A--C
>
> So that if I remove B and D completely, the with just A and C will get
> me to the same end result.
>
> Something like 'git list-contributors HEAD' which would show me A and
> C, since these are the only commits that appear in any 'git blame
> $any_file'.

I wonder if these are really equivalent. The first one is perhaps not feasible: If it can only detect exact reverts, that's not incredibly helpful; the commit message will probably tell you that it's a revert anyway. I suspect that distinguishing conflicted reverts from true changes is AI-complete. You're free to go and try, though :-)

The second one, "find all commits which appear in blame output", is different: it would only list commits which have surviving lines. For example,

  $ git blame --incremental commit.h | grep -E -o '^[0-9a-f]{40}' | sort -u | wc -l
  77
  $ git rev-list --no-merges HEAD -- commit.h | wc -l
  110

tells me that there are 33 commits changing commit.h without any surviving lines. However there were no reverts:

  $ git log --grep=Revert -- commit.h
comes up empty.
-- 
Thomas Rast
trast@{inf,student}.ethz.ch
Previous: Phil HordNext: Chris Packham
Message 2 of 4 in “Blaming differences”
  1. Phil HordJun 18, 2012
  2. Thomas RastJun 19, 2012
  3. Chris PackhamJun 20, 2012
  4. Chris PackhamJun 20, 2012

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.