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.

Sun, May. 8th, 2005 04:02 am (UTC)
invrnrv: Re: VCS...

what about the real-time aspect that i mentioned? it wouldn't be hard to figure out whether X given Y or Y given X creates more compile errors than the sum of X and Y alone, in which case there is a conflict. This should be relatively straightforward to implement. By alerting the coders while they're programming it resolves possible conflicts so there will be no trouble merging.

Also, it would be ideal to hook up the IDE to your VCS because that gives you a lot of information about what line went where.

i'm just rambling my 2 cents. take it for what its worth =]

Sun, May. 8th, 2005 04:59 am (UTC)
bramcohen: Re: VCS...

I'm not sure what you mean about that compilation stuff. Certainly one can have scripts which attempt a build before every commit and after every update.

Trying to infer line movement based on what goes on in the editor is probably a bad idea. Users have a tendency to do things like copy over a function, edit the new copy, then delete the old one, with the intention of this being a modification of the old function, not a creation of a new one. Microsoft Word's version control tells people when they do this, which helps them do the right thing, but in the programming world there is no equivalent concept.