02 September 2009

The quest for a good version control software

One issue that has been bothering me for a couple of year now is version control software. I have experience (more than some hours) with 3: ClearCase, CVS and Subversion (SVN).

Good things
  • Fast
  • Wide spread (many knows how to use it and it has 3rd party tools (for example Eclipse plugin integrated in Eclipse)).
Bad things
  • Does not version directories. Probably that biggest design flaw.
Good things
  • Version directories
  • Relatively wide spread.
Bad things
  • No native branches or tags. I mean what were they thinking? "Everything is a directory"? Is there someone that really likes and uses this so called "feature"? Everybody I know follows the de-facto standard "trunk", "tags", "branches".
  • Late double directed merge tracking (available only after 1.5). A bit too late I might say...
Good things
  • The mother of version control. Has it all. Did it all right.
  • Version tree and merge tracker. Two of the best tools a developer knows.
Bad things
  • Is so expensive that it is ridiculous. 44000 € excluding consumption tax. Can anybody afford it?
  • It has some learning curve to learn how the config spec works

My next version control software?
I first used clear case in 2004. It was some year old then so it has probably been working the way I'm used to a little bit longer. I really cannot understand how the open source world has not been able to create a better (or equally good) version control system in this time.

I have been thinking on which version control software I should use. I really don't know.  I'm leaning towards Git or Mercurial but I'm not sure. Here is my feature wish list
  • Tags and branches should exist natively and all the tools should have good support for them.
  • There should exist a good version tree that can display all the branches and the merges between the branches.
  • There should exist a merge tool so branches can easily be merged
  • It should be free (I don't care if it's open source, It should not cost me any money)
  • It should exist a plugin in Eclipse for it (and preferably in other IDE:s as well).
  • It should be wide spread so there is a high acceptance and support for it.
  • Focus on usability. Usability is so important! And developers has a tendency to forget that...

1 comment:

  1. I have to add a few goods and bads:

    CVS and SVN
    - The inability to use support baselines. You cannot work on a branch and use the underlying branch as a baseline. Instead, you will have to merge everything from the underlying branch to be able to use it, if the baseline changes. This makes branched development a P.I.A. for these version controll systems.

    + The config spec allows flexible support for baselining and branched development
    + Excellent visual tools (version tree, merge manager)