begin quoting James G. Sack (jim) as of Wed, May 23, 2007 at 03:07:54PM -0700: > Andrew Lentvorski wrote: [snip] > > Cheap branching with cheap remerge is a hallmark of the distributed > > source control systems. > > Well svn branching is quite cheap. But merging is a potential headache. > Is merging really easy on distributed systems? Seems like there must be > some powerful magic involved, eh?
The most powerful magic I've seen for merging has been the three-way merge -- what you have, what's in the repository, and what's the common ancestor. And *still* it can get nasty. There comes a time when the computer just can't tell -- the same code is modified in both branches, and *someone* has to decide which to use. The other powerful magic I've seen is a good visualization of the branch history. Most of the time the tools have a decent visualization of the history of a _file_, which is nice, and less often, a decent visualization of the branch of a source tree. I can only see two improvements that haven't been done: 1. identify moved code, especially moved-and-modified code, automatically. That is, I move a function from the top of the file to the bottom of the file, and change it's name, show me that it's been move, not deleted in one place and added in another. 2. identify files that might be derived from other files. When refactoring, I might push half the functions in a file into a separate file; nowhere in any version-control system do I see this sort of common action detected. So you get the same sort of convention that has CVS detractors whining about in CVS: remember to mention the action in your commit log message. (ClearCase has an option to mark a relationship between two files without actually doing anything. This is one of the *few* redeeming features of ClearCase that I found when using it.) > > The primary reason I mention Mercurial more often than git is that the > > Mercurial guys seem to regard Windows support as an equal player to > > Linux support. That isn't always true for git. > > > > However, the functionality of both seems very equivalent. > > I'm not actively working on anything justifying distributed source > control just now, but if I were, I think I might have a look at Hg. I've been poking at git/cogito and hg. I'm impressed, although I'm not quite ready to use 'em in anger and see if the additional complexity is worth it. I suspect that I'll create a few aliases or shell scripts, and be pretty much okay. [snip] > > After 2 or 3 cycles of this, the developers understand their > > dependencies *really* well. > > An interesting way to provide for organizational policy without being > too draconian. Did you invent that? Seems pretty neat to me. It does indeed sounds like a good exercise. -- Beats my approach of just setting up a new machine/account from scratch. Stewart Stremler -- [email protected] http://www.kernel-panic.org/cgi-bin/mailman/listinfo/kplug-list
