Life after Subversion — Mercurial!

A note to myself: The only constant in life, Indy, is change!

I’ve been using Subversion for version control for a couple of years now. It was quite a change moving from Microsoft Visual Source to Subversion. A different mind set. A different way of doing things.

And then I read about Mercurial today.

Mercurial is one of the new breed of version control systems.

Its major goals include high performance and scalability; serverless, fully distributed collaborative development; robust handling of both plain text and binary files; and advanced branching and merging capabilities, while remaining conceptually simple. It includes an integrated web interface. (Wikipedia)

Basically Mercurial moves away from the paradigm of working with centralized repositories (like CVS and SVN) to support distributed, collaborative development. And at the same time trying to be a simple-to-use system (a big challenge!).

There is a great little article on JavaWorld comparing different version control systems. It is quite enlightening: Subversion or CVS, Bazaar or Mercurial?

The article explains in simple words what Mercurial is on page 4.

Mercurial is newer open source version control system based on the distributed model. In Mercurial, as in Subversion or CVS, developers work on a local working directory. However, unlike centralized solutions, Mercurial also stores a copy of the entire project history on each developer’s machine. In this way, developers can work in parallel, even without a network connection.

Unlike Subversion, however, when you commit changes in Mercurial, you only create a new revision in your local repository (which, given Mercurial is based a distributed model, is considered to be just as good a repository as anyone else’s).�

Seems like an intriguing concept. I’ve been going through the documentation on Mercurial site and it seems to be very well documented.

In terms of companies/projects actually using Mercurial, Sun Microsystems software (including Open Solaris and NetBeans) and Mozilla are using it to manage open-source initiatives. These are project where the need for distributed collaborative version control is quite high.

Well… it’s time to give it a try!