Mercurial, Git and Bazaar, OH MY!
I’ve pretty much always used a source code management system in my daily development since the day I learned they existed some dozen or so years ago. I used to use CVS for my personal projects (and CVS, PVCS, Dimensions, MKS, and ClearCase at work). Then Subversion (SVN) became the new hawtness and I switched to it – a fairly easy thing to do since it was very similar in many ways conceptually and continued the philosophical tenet of a centralized repository. Now, in the indie Mac blogosphere – and certainly in the open-source world, SVN is old and busted and a new generation of revision control systems seem to be making their way onto the field – the distributed revision control system.
Instead of maintaining a centralized repository that includes all the history and each developer checking out and developing on a simple “working copy”, the distributed system allows each participant to maintain a complete and individual copy of both the entire history as well as a working copy. Working offline or “away” from the central repository is no longer an issue. Sharing and merging code becomes a distributed – almost peer-to-peer affair.
In actuality, for personal projects, this makes a heap of a lot more sense. It’s much more lightweight and amenable to the way most indie developers or small development teams work. As has been shown recently with the Linux kernel and others, it can also work well for immensely large projects as well. Also, CVS and SVN have some historical idiosyncracies that can be a bit annoying (like littering .svn directories all over the place).
Linus of Linux kernel fame has his weight behind Git. Canonical of Ubuntu fame has inspired and built Bazaar. Some guy name Matt wrote Mercurial. So far, Mercurial and Git seem to have the most mind share. Each has its own pros and cons, but overall, they are generally all quite similar.
I have yet to pick my variant. Right now I’m leaning toward Mercurial – primarily because 1) I think Linus Torvalds is an elitist jerk and Git is the least documented and complex of the three and 2) Bazaar seems to be a bit behind the other two in acceptance. My biggest roadblock right now is that I was just starting to get accustomed to using the SCM support with SVN in Xcode – and Xcode doesn’t support any of these new fangled version control systems yet.
Any thoughts about these three new contenders? Or is distributed revision control just a fad?
June 13th, 2008 at 10:45 am
I think computing has been all about switching from centralized to distributed and back. So yes, it’s a fad, but only as much as centralized version control was.