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!

10 thoughts on “Life after Subversion — Mercurial!”

  1. Lately, I’ve been playing with Mercurial and I’m completely sold. Currently I’m in the process of moving all my SVN repositories into Mercurial, which is piece of cake. Being a Java junkie I published my repos via Glassfish (via cgi-bin). At this point I only have good things to say 🙂

    I wish TortoiseHg is at par with TortoiseSVN, it still has a lot of catch up to do.

  2. I started using mercurial for my private scripts and for blog articles in draft state before publishing. So far I’m pretty happy (I used RCS before).

    Unfortunately, tool support isn’t as good as with subversion. There’s an eclipse plugin already, but it isn’t up to par with subversive or subclipse. As soon as this has changed, I guess many development shops will consider using mercurial if.

  3. Unless I’m missing something I don’t understand the advantage to distributed version control like this and Git. It just seems to increase the possibility of conflicted code.

    Being able to commit offline doesn’t really make that risk any less tangible. I’m not sold.

  4. Hey Indy,
    Just wanted to let you know that I’ve changed my domain name so those links will break in the future. If you don’t mind updating them, you can just follow the redirects and copy those links. You can delete this post, too, then =)

    Thanks Indy!

Comment on this blog post...