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

Re: That improved git-gui blame viewer..

From
Junio C Hamano <gitster@pobox.com>
Date
Jun 12, 2007, 19:14 UTC
Message-ID
<7v645thto7.fsf@assigned-by-dhcp.pobox.com>
In-Reply-To
<20070612135303.GT6073@spearce.org>
"Shawn O. Pearce" <spearce@spearce.org> writes:
Show 13 quoted lines
> Marco Costalba <mcostalba@gmail.com> wrote:
>> On 6/12/07, Junio C Hamano <gitster@pobox.com> wrote:
>> >
>> > (1) Are you emulating CVS-like "a file has an identity, and we
>> >     follow its changes" model?  How does it handle file split,
>> >     merge, and code movement in general?
>> >
>> 
>> It uses 'git rev-list HEAD -- <path>' to get the list of revisions
>> that modified a path,
>
> So apparently yes, qgit is emulating CVS.  And yet much better things
> exist (git-blame).

I would not use the word "better", as it depends on what you are looking for.

Show 7 quoted lines
>> I really would like to keep it like that because it is the way 'git'
>> works, and I would feel uncomfortable in filtering out git results, it
>> seems quite fragile to me.
>
> Its not "the way git works".  Its just one way of looking at the data
> in the object database.  And its not as accurate or as interesting
> as what git-blame does.
Again, I would not say "accurate".

The way Marco describes is a perfectly valid way to satisfy expectations of people migrating from CVS. It's more faithful reproduction of CVS annotate behaviour. In a sense, git-blame does too much, but that is exactly why these "accurate and interesting" behaviours are optional.

Show 8 quoted lines
>> This means that file splits, merges, renames etc.. are handled as much
>> as they are handled in git. IOW *if* 'git rev-list HEAD -- <path>'
>> returns a list of revisions taking in account all of the above, so it
>> will, automatically, do qgit.
>> 
>> BTW _currentlly_ git-rev-list does not do that.
>
> And it may never do it.

Oh, I can guarantee you that git-rev-list will never ever do that. It is to traverse revisions while simplifying with path limiters, and path limiters by definition will not look inside contents. Think of it as asking "Had my project consisted of only arch/i386 and include/asm-i386 directories, what would the history be".

However, adding a new option to "git log" so that you can say 'git log --single-follow=$this_file_at_the_tip $branch' is a separate matter. I think it is a sensible thing to do. But even if we do that, I think --single-follow should limit itself to the rename following of "diff -M/-C" style. It is insane to include another path only because the result did copy&paste only a handful lines out of during its history.

Previous: Shawn O. PearceNext: Marco Costalba
Message 11 of 29 in “That improved git-gui blame viewer..”
  1. Linus TorvaldsJun 9, 2007
  2. Junio C HamanoJun 9, 2007
  3. Shawn O. PearceJun 11, 2007
  4. Linus TorvaldsJun 11, 2007
  5. Junio C HamanoJun 11, 2007
  6. Marco CostalbaJun 12, 2007
  7. Junio C HamanoJun 12, 2007
  8. Marco CostalbaJun 12, 2007
  9. Marco CostalbaJun 12, 2007
  10. Shawn O. PearceJun 12, 2007
  11. Junio C HamanoJun 12, 2007
  12. Marco CostalbaJun 13, 2007
  13. Marco CostalbaJun 13, 2007
  14. Johannes SchindelinJun 13, 2007
  15. Marco CostalbaJun 13, 2007
  16. Johannes SchindelinJun 13, 2007
  17. Marco CostalbaJun 13, 2007
  18. Johannes SchindelinJun 13, 2007
  19. Josef WeidendorferJun 13, 2007
  20. Johannes SchindelinJun 13, 2007
  21. Josef WeidendorferJun 13, 2007
  22. Johannes SchindelinJun 13, 2007
  23. Josef WeidendorferJun 13, 2007
  24. Johannes SchindelinJun 13, 2007
  25. Junio C HamanoJun 13, 2007
  26. Shawn O. PearceJun 14, 2007
  27. Jakub NarebskiJun 13, 2007
  28. Marco CostalbaJun 14, 2007
  29. Marco CostalbaJun 13, 2007

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.