February 4, 2008
Revision control systems
Every serious programming team, even if it consists only of you, should use a distributed revision control system.
Over the last few years, I have tried the most popular. Here’s a quick comparison of them:
- Git: Jeez, everyone seems to like this one. While I might agree that it’s powerful stuff, I do not wish to spend weeks figuring out the innards of my RCS. I got things like work to do, you know.
- SVK: SVK is a hack to make SVN distributed. ‘Nuff said.
- Monotone: Easier than Git, and does the job. But still too much boilerplate.
- Bazaar: Does the job, but is a little conservative in its approach.
- Darcs: Best candidate for me, were it only more performant. Importing the Yahoo! User Interface library takes ages and load of memory. No user-defined hooks and nested repositories either. Sorry. But still great for small projects.
- Mercurial (hg): Easy to get started with. Nested repositories. Fine-grained control over user-based hooks.
Extensions for everything (e.g. cherry picking, selective recording).
Darcs is my personal favorite, but it’s not possible to manage bigger projects with it, and you can hardly automate deployment or testing without hooks. Plus, certain virtualization software has problems with GHC’s memory allocation.
So I’m going to stay with Mercurial. See also this comparison between Darcs and Mercurial.
Comments(11)
Hi Leslie,
I have had the same problem as you (finding a good distributed revision control system).
Git and Mercurial are the most popular. I think they are also the most promising due to their active communities.
After having played with both my choice is Mercurial for 2 reasons :
1 – Mercurial is designed for simplicity and ease of use and is very well documented. This is a major feature if you have a non homogeneous community of developers where people do not have the same level of understanding and using a revision control system (distributed or centralized). Git is far to complicated and to feature rich : a beginner is lost quickly.
2 – Mercurial code base is homogeneous, small and portable. It has also a simple plugin interface. It make it easly extensible, maintainable and hackable for a particular need.
Unfortunatly Git has more enthousiast web hosting people : it is very easy to host a project using Git, whereas Mercurial repository hosting is difficult to find :-(
As a conclusion I would say that Mercurial is Kiss which make it a good candidate for an Arch user ;-)
Cheers,
Chicha
Hey, what doesn’t SVK do that your favourite does?
It’s been a while since I used SVK (say, two years). For me, SVK is an *acceptable* solution, but I’m way more comfortable with the natural simplicity of Darcs, Bazaar and Mercurial, especially regarding the “mirror” stuff of SVK.
Plus, SVN branches take up a lot of space when you copy them around…
I use SVK and so far I find it great.
I’ve also used darcs but gave up when I went above 500 or so chunky patches. Theory of patches my butt!
I had also selected mercurial, as it cross-platform, and easy to use. I maintain all my home, and some of work projects. And it’s works fine, especially with emacs ;-)
I’m surprised that so many of you use Mercurial. One hardly ever sees it, most people seem to either go for Darcs or Git.
Chicha: your remarks are very interesting, thank you. I suppose it’s the ArchLinux mindset indeed that is behind our decision to use Mercurial :)
As for the web hosting, I guess that’ll come with time. Willing to set some up? I got a server lying around.
Just found a longer and more viperish piece on Mercurial vs Git here:
http://texagon.blogspot.com/2008/02/use-mercurial-you-git.html
I’ve had similar experiences. “rebase”? “merge”? “pull”? “origin”? “master”?? If I’d have liked a Space Opera, I’d have bought one…
just wondering: what do you mean by “no user defined hooks” in darcs?
I use custom commands on test/predist always, so you do not mean that, or maybe you mean “not enough” (I believe mercurial has much more hooking points) ?
Hi, Leslie.
What do you like most about Darcs? I’ve looked at it, but (perhaps unfairly) haven’t given it the same attention as Git or Hg.
I’m glad not to be alone in feeling a bit alienated by Git. Eh, who knows? Maybe it’ll smooth some of its rough edges over time, as clumsy people like me keep dropping it on the floor….
I haven’t needed hooks for a while in Darcs now, so either 1) they got added within the last, say, 18 months, or the were to coarse for me.
IIRC I had a bunch of txt2tags sources and wanted to send them automatically to the converter on each repo push to my server.
It wasn’t possible with Darcs, so I resorted to Hg.
Thanks for being more diligent than I was, riffraff. :)
I had exactly the same evaluation as you have had . I am now using Mercurial for any new or personal projects.