Re: VCS comparison table
- From
Linus Torvalds <torvalds@osdl.org>
- Date
- Oct 17, 2006, 23:09 UTC
- Message-ID
- <Pine.LNX.4.64.0610171605440.3962@g5.osdl.org>
- In-Reply-To
- <45355EEE.3060105@utoronto.ca>
On Tue, 17 Oct 2006, Aaron Bentley wrote:
Show 23 quoted lines
> > > > Excuse me? What does that "throws away your local commit ordering" mean? > > Say this is the ordering in branch A: > > a > | > b > | > c > > Say this is the ordering in branch B: > > a > | > b > |\ > d c > |/ > e > > When A pulls B, it gets the same ordering as B has. If B did not have e > and c, the pull would fail.
Sure. But that doesn't throw away any local commit ordering. The original order (a->b->c) is still very much there. The fact that there was a branch off 'b' and there is also (a->b->d) and a merge of the two at 'e' doesn't take away anything from the original local commit ordering.
Show 5 quoted lines
> > So generating an extra "merge" commit would be actively wrong, and adds > > "history" that is not history at all. > > It's not a tree change, but it records the fact that one branch merged > the other.
But that's a totally specious "record". It has no meaning in a distributed SCM. There is absolutely zero semantic information in it.
The fact that you _locally_ want to remember where you were is a total non-issue for a true distributed system. You shouldn't force everybody else to see your local view - since it has no relevance to them, and doesn't add any information.
> Maybe not in Git.
I don't think there is any in bzr either. Can you explain?
In other words, the empty merge is totally semantically empty even in the bazaar world. Why does it exist?
Linus