On Fri, Apr 15, 2005 at 02:03:08PM +0200, Johannes Schindelin wrote: > I disagree. In order to be trusted, this thing has to catch the following > scenario: > > Skywalker and Solo start from the same base. They commit quite a lot to > their trees. In between, Skywalker commits a tree, where the function > "kazoom()" has been added to the file "deathstar.c", but Solo also added > this function, but to the file "moon.c". A file-based merge would have no > problem merging each file, such that in the end, "kazoom()" is defined > twice. > > The same problems arise when one tries to merge line-wise, i.e. when for > each line a (possibly different) merge-parent is sought.
Be careful. There is a very big tradeoff between 100% perfections in catching these sorts of errors, and usability. There exists SCM's where you are not allowed to do commit such merges until you do a test compile, or run a regression test suite (that being the only way to catch these sorts of problems when we merge two branches like this). BitKeeper never caught this sort of thing, and we trusted it. In practice it was also rarely a problem. I'll also note that BitKeeper doesn't restrict you from doing a committing a changeset when you have modified files that have yet to be checked in to the tree. Same issue; you can accidentally check in changesets that in trees that won't build, but if we added this kind of SCM-by-straightjacket philosophy it would decrease our productivity and people would simply not use such an SCM, thus negating its effectiveness. - Ted - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html