Distributed Revision Control

I am always interested by software project management. I was surfing the web today for new ideas and ways to see how others are managing their projects. I was introduced to this new concept: distributed revision control.

Random Graph

I have been a Subversion and mostly a TortoiseSVN user for quite a while now. I like it. It does most of what I expect from a revision control system. It keeps my files versions and history. I must say that I have used it with a group of at most 5 or 6 people.

While reading different papers on the subject, I have been discovering problems that I have with Subversion and that are solved with other distributed revision control systems.

Branching and merging is hard with Subversion

The simple act of branching or merging is not that hard with Subversion. It is a simple command. What is hard is keeping track of what was merged with what. It is like wrestling with a jūdōka.

Wrestling

What I currently do is that I write in my log message what was merged with what. Whenever I do another merge, I have to check out my log to see if it was merged somewhere else. It is far from being ideal.

Hopefully, this will be solved in the next version of Subversion. In the distributed world, this is solved by having each developer have his own branch and each change sets are totally independent from each other.

A disconnect between you and the server hurts with Subversion

You are totally screwed if you get disconnected from the server with Subversion. No more branches, no more merges and no code sharing even if you can still connect to your coworkers or your teammates. It had happened a few times with my different setup even when I was on a local network and it was unpleasant.

With distributed version control, you can share your changes with your teammates directly if you want to. You always have you local repository and it is the same with other people. It is peer exchanges of changes.

Different implementations

From what I read, the two main players in the free and open source world of distributed version control systems (DVCS) are Git and Mercurial. Git was created by Linus Torvalds initially for the Linux kernel development as a replacement of the infamous BitKeeper. It is mainly used in the Linuxsphere and it does not show much love for Windows even though it has a few implentations for it.

My attention has been focused on Mercurial. Many well known projects have switched to it in the recent years including Mozilla, OpenJDK, OpenSolaris MoinMoin, Xen and the One laptop per child project.

I was surprised to find out that there is a TortoiseHg (Hg being the short name for Mercurial) and a plugin for trac, my favourite project management software so far.

I tried out version 0.4RC2 of TortoiseHg.

TortoiseHg Context Menu

It was quite interesting to toy with. It is far from being as good as TortoiseSVN but I guess it is a good start. Having such an easy to use tool lowers the entry bar for everyone.

In the next few days, I will try to setup a project using Mercurial and see how I like it. It is by using it on a daily basis that I will get a better grip on it.

Comments 2

  1. Reno wrote:

    I thank you hubmly for sharing your wisdom JJWY

    Posted 18 Jul 2011 at 7:07 pm
  2. odpislngffn wrote:

    QOEiNf pyeqhdrbddbh

    Posted 22 Jul 2011 at 4:51 am

Post a Comment

Your email is never published nor shared. Required fields are marked *

CAPTCHA image