Thursday, May 31, 2007

Time to move to a new version control system

I used to be pretty happy with Darcs, but now that the repository contains some 3600 patches, Darcs just doesn't scale anymore. The situation is so bad that I'm not sure I'll be able to actually push the new module system patches -- so far I have 8 rather large patches which move a lot of files around, and I'm unable to push it to my x86 box on the LAN. Also Doug has been complaining about Darcs on Windows -- sometimes it takes 10 minutes to record a patch, stuff like that.

Now I don't know if Darcs is using lousy algorithms, or if writing fast code in Haskell is too hard, or if Darcs is simply not designed for larger projects, but I don't want to put up with it anymore. Darcs was a huge improvement over CVS, but now the Factor project has outgrown it.

Anybody know of a distributed version control system which can cope with larger repositories? If I'm unable to push out my current set of changes, I might have to switch to a new VCS really soon now.

14 comments:

Anonymous said...

I take it 'darcs optimize --checkpoint' doesn't help much?

Anonymous said...

Darcs' whole current approach is flawed. The only other viable alternatives in my mind are Git or Mercurial (for me, in that order).

Adam Langley said...

I like darcs a lot, but I'll agree that it has big issues with scaling. It's a known algorithmic issue and there's a project working on fixing it at the moment.

However, for an immediate solution I think git and hg (mercurial) are the only reasonable solutions. It used to be the case that git was far too complex for anyone save Linus to use very well, but the documentation has improved a lot recently. Hg is very similar in design (it's just written in Python) and even Linus admits that it's a good VCS[1].

Between them - I don't know. Flip a coin? Whichever you choose, lookup the queues support (it's a subproject in both). They give you quilt[2] like functionality, which I find very helpful.

[1] http://video.google.com/url?docid=-2199332044603874737&esrc=sr1&ev=v&q=linus&vidurl=http://www.youtube.com/watch%3Fv%3D4XpnKHJAok8&usg=AL29H208a955P74_t2gM4t8Jz8cYMjdMBg
[2] http://savannah.nongnu.org/projects/quilt

puzza007 said...

Mozilla are moving (have moved?) to Mercurial http://weblogs.mozillazine.org/preed/2007/04/version_control_system_shootou_1.html

Anonymous said...

Hey, as I already
told about it
, I maintain
an up-to-date , so you can check immediately how suitable is Mercurial for you.

My 2c: Git has a very complex UI, while Mercurial is just as
easy and intuive to use as darcs. I believe that a version control tool should get out of
the way. That's one reason to prefer Mercurial. The other is the better support for Windows.
Factor supports Windows so its
VCS is expected to do that equally well.

Anonymous said...

Hey, as I already
told about it
, I maintain
an up-to-date , so you can check immediately how suitable is Mercurial for you.

My 2c: Git has a very complex UI, while Mercurial is just as
easy and intuive to use as darcs. I believe that a version control tool should get out of
the way. That's one reason to prefer Mercurial. The other is the better support for Windows.
Factor supports Windows so its
VCS is expected to do that equally well.

Anonymous said...

git is pretty good, io moved to that a couple months ago.

Anonymous said...

Mercurial seems the best options, and huge projects like OpenSolaris move (have moved?) to it, so it should handle large projects.
Other Projects using it:
http://www.selenic.com/mercurial/wiki/index.cgi/ProjectsUsingMercurial

A quite impressive list.

I'm not sure about git... from what I know they have problems on anything that's not Linux.

Unknown said...

Sun also decided to use Mercurial as the new VCS for the OpenJDK.

Smelly Pooh said...

Currently Mercurial seems to be the best option. As has already been mentioned, OpenSolaris and Mozilla are using it.

You might also be interested in John Goerzen's evaluation of current distributed VCSs here:

http://changelog.complete.org/index.php?serendipity%5Baction%5D=search&serendipity%5BsearchTerm%5D=mercurial

Hans Schmid said...

Hi Slava,

good to see you working so hard on Factor.
Please see Linus speaking on git
http://www.youtube.com/watch?v=4XpnKHJAok8

Hans Schmid said...

Hi Slava,

good to see you are working so hard on Factor. Hadn't got a chance to work with the latest release because I am busy with my work.

Please see Linus speaking on git

http://www.youtube.com/watch?v=4XpnKHJAok8

Take care,
Hans aka dressguard

(maybe you remember me from the FFT code. I extended it actually to 2d and calculated some diffraction patterns with it.)

Anonymous said...

I have heard good things about git also.

s3bastien said...

Hi Slava,

I also had bad experiences with Darcs (the "poison patch", where you cannot checkout anymore). I switched to Mercurial, which much faster and less error-prone (IMO).