Re: Cleaning up git user-interface warts
- From
Linus Torvalds <torvalds@osdl.org>
- Date
- Nov 16, 2006, 03:07 UTC
- Message-ID
- <Pine.LNX.4.64.0611151859370.3349@woody.osdl.org>
- In-Reply-To
- <Pine.LNX.4.64.0611151905460.2591@xanadu.home>
On Wed, 15 Nov 2006, Nicolas Pitre wrote:
> > That is an implementation detail that should be easily overcome once the > notion of tracking branch with URL attribute is implemented.
Nope.
I simply don't _have_ those branches.
Why? Because the kernel is _distributed_. There is no central place (certainly not my repository) that tracks all the possible branches that might get merged.
In other words, I repeat: in a TRULY DISTRIBUTED ENVIRONMENT it makes more sense to have a "pull" that fetches and merges, over something that fetches separately and then merges. Because in a truly distributed environment, you simply DO NOT HAVE static branches that you can associate with particular sources.
See?
And the thing is, I think the git design should be geared towards true distribution. It should NOT be geared toward a fairly static set of branches that all have a fairly static set of other repositories associated with them. Can you see the difference?
I'm personally convinced that one of the reasons people tend to use git in a centralized manner is just a mental disease that has its roots in how they used _other_ SCM's. I don't want git design to be polluted by such a centralized notion.
So to repeat: you can always make "pull" boil down to "pull from myself" (aka just "merge"), but you can _not_ make "fetch + merge" boil down to "pull" without meking up extra state to track separately. In other words, "pull" really is the strictly more powerful operation.