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

Re: merge time

From
Linus Torvalds <torvalds@linux-foundation.org>
Date
Jul 29, 2007, 23:35 UTC
Message-ID
<alpine.LFD.0.999.0707291623160.3442@woody.linux-foundation.org>
In-Reply-To
<630183.45851.qm@web51001.mail.re2.yahoo.com>
On Sun, 29 Jul 2007, Matthew L Foster wrote:
Show 5 quoted lines
> 
> From viewing gitweb.cgi I have observed a situation where Linus creates 
> a tag, say rc1, and then he later merges changes but some subset of 
> those changes/commits show up in the list in time order as taking place 
> _before_ the rc1 tag was made even though they were merged after.

Absolutely. This is very common indeed. It's even more common with not the -rc1 tag, but a release.

When I cut a full release, that "opens the floodgates" for the merge window, and a lot of people who have committed their changes (maybe weeks or *months* before) but where the changes weren't appropriate to be merged before the merge window, will now ask me to pull.

So you may have the situation that 2.6.22 was released, but then a few days later I'll merge stuff that was actually committed two weeks before the 2.6.22 release, but was not _in_ the release.

> Do I describe a real or possible phenomenon? And does this happen 
> because the developer that made the subset of changes in question commit 
> them to his/her local repository in time order before the rc1 tag was 
> made?

Yes. I would seriously suggest you not use "gitweb" as your way to look at the repository, because you'll never see all the interactions that way.

Cloning a git repository (not necessarily the kernel, but it needs to be something with concurrent developement), and exploring it locally with "gitk" or "qgit" is a _lot_ more informative. When you see the actual history chains graphically, something that might look "odd" in gitweb (commits that look old but weren't there a few days ago) suddenly makes tons of sense.

Show 6 quoted lines
> So an external repository had the change before the rc1 tag was made but 
> Linus' repository didn't? But internally git on Linus' machine knows 
> that the gitweb.cgi displayed time order is wrong as far as the state is 
> concerned because each repository's index file keeps local track of the 
> true local state [just time isn't reconcilable], or am I missing 
> something(s)?

Well, there i sno "wrong" time. There are just "different" times. The only thing git really tracks is not actually the time (that's purely for human consumption), but the *relationship* between commits. So git really very fundmanetally just tracks things like "commit X was the parent of commit Y", and the time is really immaterial.

The time, to git, is not really different from authorship: it's very important to track when something was done, but it's really purely informational, exactly the same way the _author_ is purely informational. It has no "meaning" for git itself.

> Is it possible for gitweb.cgi to have a new view mode that 
> sorts/displays the list based on merge time for commits (the time merged 
> into Linus' or whatever repository) so the above situation doesn't 
> happen?

The public repositories don't even know what the merge time was for me. That's a purely local feature, and while I can see it in my private repository that I actually did the merge in, I don't publish that information. It's incidental, and quite frankly, it's "wrong" to care: because "Linus' tree" is really not even supposed to be special.

		Linus
Previous: Jakub NarebskiNext: Matthew L Foster
Message 3 of 35 in “merge time”
  1. Matthew L FosterJul 29, 2007
  2. Jakub NarebskiJul 29, 2007
  3. Linus TorvaldsJul 29, 2007
  4. Matthew L FosterJul 30, 2007
  5. david@lang.hmJul 30, 2007
  6. Linus TorvaldsJul 30, 2007
  7. Matthew L FosterJul 30, 2007
  8. Linus TorvaldsJul 30, 2007
  9. Linus TorvaldsJul 30, 2007
  10. Matthew L FosterJul 30, 2007
  11. SeanJul 30, 2007
  12. Matthew L FosterJul 30, 2007
  13. Steffen ProhaskaJul 30, 2007
  14. Junio C HamanoJul 30, 2007
  15. Steffen ProhaskaJul 30, 2007
  16. Shawn O. PearceJul 30, 2007
  17. Steffen ProhaskaJul 30, 2007
  18. Jeff KingJul 30, 2007
  19. Junio C HamanoJul 30, 2007
  20. Jeff KingJul 30, 2007
  21. Steffen ProhaskaJul 30, 2007
  22. Jeff KingJul 30, 2007
  23. david@lang.hmJul 30, 2007
  24. Jeff KingJul 30, 2007
  25. Linus TorvaldsJul 30, 2007
  26. Steffen ProhaskaJul 31, 2007
  27. david@lang.hmJul 31, 2007
  28. Rogan DawesJul 30, 2007
  29. Matthew L FosterJul 30, 2007
  30. Johannes SchindelinJul 30, 2007
  31. Matthew L FosterJul 30, 2007
  32. Rogan DawesJul 30, 2007
  33. Matthew L FosterJul 30, 2007
  34. david@lang.hmJul 30, 2007
  35. Jakub NarebskiJul 30, 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.