?

Log in

No account? Create an account

Fri, May. 6th, 2005, 07:24 pm
More version control stuff

Linus Torvalds thinks that Git is already better at merging than everything else. In the sense that Linus personally has a magic merge algorithm knows as 'Andrew Morton' that's correct, but for everybody else this claim is completely false. (I asked around about what he could mean, and some people suggested that 'better' might have meant 'faster', which is the only explanation which doesn't involve Linus being delusional or lying.)

Unfortunately Linus's stated plans for Git are that it should only ever have whole tree three way merging (because that's the simple, practical, expedient way) and that it will have implicit renames and moves of lines between files (because that's the 'right' way). The resulting approach isn't workable even on paper. Whether the plans will be changed in advance of a disaster remains to be seen.

Meanwhile, we recently made a big advance in merge algorithms, you can read the latest about the upcoming new Codeville merge algorithm in this post.

Sat, May. 7th, 2005 05:16 pm (UTC)
bramcohen: Re: 3-way merge

Yes, he may have thought that the problem was your cleverness on top of 3-way merge, rather than 3-way merge itself. It certainly is true that starting with a new fresh history is avoiding a lot of the merge problems for now. It's also avoiding the network protocol problems, which is an even bigger fudge, because we know for a fact that Git's current network protocol can't handle the kernel with full history in a reasonable manner.

He also might have spent an inordinate amount of time evaluating Subversion before figuring out what a piece of shit it is. That could easily give one the impression, concious or not, that the entire field is full of incompetents.

Working on SCMs certainly is crazy-making. I'm finding the highly mathematical nature of the new weave approach a lot more reassuring than I expected.

Sat, May. 7th, 2005 09:36 pm (UTC)
(Anonymous): Re: 3-way merge

Network protocol -- Yeah, the non-scalability of rsync is going to be a lot more obvious, sooner, than problems with merging.

Subversion -- I doubt it. People have been telling him to give up that BK junk for nice sweet Subversion for years, and he's been telling them to piss off for just as long.

Math is reassuring -- Yeah. I tend to say, if you work on SCM, you will go crazy. Nothing you can do about it; the best you can hope for is to choose which brand crazy you want. I went for "paranoia".

-- Nathaniel

Mon, May. 9th, 2005 01:39 pm (UTC)
ciphergoth: Re: 3-way merge

I don't think that what you're saying about Linus and Subversion contradicts what bramcohen is saying - it might be his main point of comparison even though he knows how weak it is.

Mon, May. 9th, 2005 09:04 pm (UTC)
(Anonymous): Re: 3-way merge

Linus mind = KISS. Don't expect him to waste a single minute looking around complex algorithms when he thinks there're ways of avoiding all that complexity with simpler concepts.

Mon, May. 9th, 2005 09:06 pm (UTC)
(Anonymous): Re: 3-way merge

Linus mind = KISS. Don't expect him to waste a single minute looking around complex algorithms when he thinks there're ways of avoiding all that complexity with simpler concepts. He certainly doesn't seems to give a fuck for real SCMs, just for what it is git's task, keeping track of changes.

Mon, May. 9th, 2005 09:29 pm (UTC)
bramcohen: Re: 3-way merge

If Git were doing nothing but snapshotting, that would make sense, but it's also doing merging, and while KISS is nice, a simple technique which sucks still sucks, and in actual point of fact the techniques employed in modern VCSs are still fairly simple. Linus seems to be motivated more by NIH than KISS.

Tue, May. 10th, 2005 08:09 am (UTC)
ciphergoth: Re: 3-way merge

To paraphrase Einstein, "Make things as simple as possible, but no simpler". Linus seems to be behaving as if he's the first person to have thought hard about the problem.

Wed, May. 11th, 2005 04:56 pm (UTC)
(Anonymous): Re: 3-way merge

He probably thinks that.

Remember, he's a "unixy" guy. Multics was "better" than Unix, it was funded by MIT, AT&T, IBM, it had the best experts in the OS area, lots of money and programmers. And then a couple of young programmers who knew nothing about operating systems thought that it was just too complex and decided to do his own thing, and the rest is story. Sometimes knowing nothing is just better.

So I'm not comparing you with multics, maybe you're right and he isn't I'm just saying that he is _not_ going to listen you if he thinks there's a way of doing things simpler. You may think that the "move lines between files" is crazy, but it's what programmers actually _do_, so I'm not suprised he said that and that he thinks he's the "right way".

It's not the first time he has been told he's wrong. People said spinlocks were a crappy way of doing a scalable kernel, that linux should follow the Solaris/irix/etc pathlike all unixes had done, that it wouldn't work well. And now Linux is running in 512-cpu boxes with much less complexity in its locking than other OSes. The same happened with "memory zones", the same happened with debuggers (he is never going to include a in-kernel debugger like everybody does because he doesn't likes them) and with lots of things. Arrogance is not what drives himself - he often changes his mind and contradicts himself just because he was "wrong before".

So, I'm not saying he's right with git, but he's just a weird guy. Try to live with it :)