Revision control evaluation
We are currently transitioning to Mercurial as a replacement for Subversion to fulfil our revision control needs. As part of this process, we have published several trees on our own Bitbucket site: http://bitbucket.org/lindenlab.
For the time being, we're maintaining these branches somewhat manually, so e.g. we are not performing automated builds. As we free up internal cycles, this should change.
Why move from Subversion?
For our internal use, Subversion has been a tremendous source of headaches. Its ability to handle merges was historically very weak, to the point where we would regularly lose weeks at a time to merge hell. Although its support for merges is now somewhat better, it is too complex to give us confidence in its reliability. If you need corroboration of our opinion, see the words of the original authors of Subversion in the Subversion book.
And since we're increasing our focus on open development, it makes sense to look at tools that don't erect barriers such as requiring a username and password to be able to commit changes. In addition, we're motivated to make branching and merging with open source contributors as easy as possible.
Why not use my favorite DVCS tool instead?
Yes, we knew you'd ask about git. We acknowledge that it's a powerful and popular piece of software. But those are not the be-all and end-all of concerns when it comes to deploying a tool into a large community. We place a high value on the ease of both learning and continued use, and we feel that git falls down compared to most of its contemporaries in each respect. We require excellent Windows support, and again git is weak here, though slowly improving.
We are also fond of darcs, though its patch model does not suit the needs of a software engineering team (it's very hard to have a conversation about "what version" two developers have when each is floating in a private ocean of patches). And Bazaar is a perfectly fine piece of software.
Learning more about Mercurial
If you're new to distributed revision control in general, or to Mercurial in particular, there are several good resources:
- The Mercurial web site and the accompanying dense and informative wiki contain huge amounts of information.
- Their Learn Mercurial page has links to documentation of various length and depth, from quick-start guides over tutorials to a full blown book (see below).
- The book Mercurial: The Definitive Guide is a more evenly-paced introduction.
- Hg Init, an entertaining Mercurial tutorial by Joel Spolsky.
How to contribute
You don't have to sign up for Bitbucket service if you don't want to, but basic usage is free, and it provides some handy capabilities for tracking and accepting other people's changes. If you decide to give it a try, sign up for an account, then visit the
http-texture branch and click the "fork" icon. This will give you a personal clone of the tree to work in, but it will also helpfully let other people see that you've got a branch.