On 2006-10-19 04:10:45 -0500, Matthew D. Fuller wrote: > I think this has the causality backward. It's avoided because it > changes the ancestry of the branch in question, by rearranging the > left parents; this ties into Linus' assertion that all parents ought > to be treated equally, which I'm beginning to think is the base > lynchpin of this whole dissension. Yes, it seems you have found the needle. :-) In git, history is a DAG; a commit has a _set_ of parents, so by definition they are not ordered. This has a number of consequences. For example, you can't really answer the question "Which branch was this commit on?". All you can say is that "This commit is reachable from (and therefore part of) branches X, Y, and Z." In all other SCMs I have seen, a "branch" is conceptually an ordered series of commits (some of which may be merges). In git, a "branch" is a pointer to a commit, period. The commit knows its set of parents, so all its history is there, but there is fundamentally no way to tell which branch a commit was "on" when it was created. This is an important point; it means there is no concept of "my" or "your" branch. Every participant is adding commits to the same DAG, and may at any point decide to share her additions with someone else, or keep them private forever. And because "branches" don't really exist, every commit really is created equal. Really, every commit. Not even the initial commit of a project is special -- it's just a commit with an empty parent set. And, it's perfectly possible to make a (merge) commit whose parents belong to previously disconnected parts of the DAG. This of course means that it's not even possible to differentiate commits based on which project they're part of, since one can create a commit whose parents belong to different projects. All commits are _really_ born equal! There's just one great DAG of all git commits that could possibly exist. (This has been done in git's own history; the graphical viewer gitk was originally a separate project, with its own initial commit, but that initial commit is now reachable from all commits currently being made to git -- that is, it has been merged.) This structure of things may seem complex, since it's different, but mathematically it's quite simple, and that's what counts in the end if you want to do nontrivial things. -- Karl Hasselström, kha@xxxxxxxxxxx www.treskal.com/kalle - 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