Re: merge time

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On Sun, 29 Jul 2007, Matthew L Foster wrote:
> 
> 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.

> 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
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux