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

Re: What's cooking in git.git (topics)

From
Linus Torvalds <torvalds@linux-foundation.org>
Date
Jun 21, 2007, 17:44 UTC
Message-ID
<alpine.LFD.0.98.0706211034500.3593@woody.linux-foundation.org>
In-Reply-To
<alpine.LFD.0.98.0706211005520.3593@woody.linux-foundation.org>
On Thu, 21 Jun 2007, Linus Torvalds wrote:
Show 5 quoted lines
> 
> But "git log" itself really fundamentally has no clue, and you really 
> should see "git log" as a *linearization* thing. It linearizes the history 
> by creating a one-dimensional streaming log. And within that linearized 
> history, there can not be anything like "concurrent renames".
Btw, just to clarify:
	This is absolutely not somethign unique to "--follow" and rename 
	detection!

when you do a simple "git log -p", you will very commonly see the issue of the same patch being applied twice, and if you think of the linearized "git log" output is somehow "the Truth" with a capital "T", then you'd obviously believe that the thing shows up twice in the end result.

It doesn't even have to be the same patch: you can have a patch that shows up in one branch, and that *never* makes it into the end result, even though the other branch didn't "undo" it. A merge may have chosen just the one side (not necessarily due to "-s ours" or anythign like that: a merge conflict may have been resoled that way).

So the individual logs of changes are not "meaningful" in that sense. Not with --follow, and not without. They are a locally linearized version of history, and as such you cannot put the world together just based on them. You need to have the bigger picture to get the end result.

Does that mean that linearization is meaningless? No, obviously not. Does it mean that you *can* get confused by it? Yes, absolutely. Does rename detection add new _ways_ of getting confused? Oh, YES! The example from the kernel is a great one.

I still think "git log --follow" is actually a really good thing. People will find places like this where they are confused, and maybe we'll have to teach them about the effects of linearizing their history, but especially if you come from the CVS/SVN world, your history has _always_ been linear, so git will always get that case right.

And once you get used to merges, you'll start understanding why git does what git does more, and then the "git log --follow" behaviour will still perhaps not be what you might always want at any particular point in time, but it's something you can understand and deal with.

And it's still hugely preferable to "file identities", which have their own (and much more fundamental) problems over merges.

		Linus
Previous: Linus TorvaldsNext: Junio C Hamano
Message 26 of 34 in “What's cooking in git.git (topics)”
  1. Junio C HamanoMay 13, 2007
  2. Julian PhillipsMay 13, 2007
  3. Junio C HamanoMay 13, 2007
  4. Julian PhillipsMay 14, 2007
  5. Daniel BarkalowMay 14, 2007
  6. Junio C HamanoMay 17, 2007
  7. Daniel BarkalowMay 17, 2007
  8. Junio C HamanoMay 17, 2007
  9. Daniel BarkalowMay 17, 2007
  10. Junio C HamanoMay 19, 2007
  11. Junio C HamanoMay 23, 2007
  12. Shawn O. PearceMay 24, 2007
  13. Junio C HamanoMay 29, 2007
  14. Junio C HamanoJun 2, 2007
  15. Johannes SchindelinJun 3, 2007
  16. Shawn O. PearceJun 3, 2007
  17. Nicolas PitreJun 3, 2007
  18. Dana HowJun 3, 2007
  19. Junio C HamanoJun 7, 2007
  20. Junio C HamanoJun 13, 2007
  21. Johannes SchindelinJun 13, 2007
  22. Linus TorvaldsJun 14, 2007
  23. Matthias LederhoferJun 18, 2007
  24. Junio C HamanoJun 21, 2007
  25. Linus TorvaldsJun 21, 2007
  26. Linus TorvaldsJun 21, 2007
  27. Junio C HamanoJun 25, 2007
  28. Jeffrey C. OllieJun 25, 2007
  29. Matthias LederhoferJun 26, 2007
  30. Junio C HamanoJun 27, 2007
  31. Matthias LederhoferJun 28, 2007
  32. Junio C HamanoJun 29, 2007
  33. Junio C HamanoJul 2, 2007
  34. Junio C HamanoJul 28, 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.