Monday 7 June 2010

Version Control

Up until recently I've basically worked on my side projects on my own. I only ever needed version control to keep track of my own changes. Although I use CVS at work (don't laugh some of us have to use ClearCase) I decided to use something different. GIT was my weapon of choice. Fast cheap branching.. too easy right? Ok so its (mostly) command line.. there's no drama with that. Most of what I'm doing is as simple as git branch, git merge, git status.. nothing too drastic at all.

Recently I've started working with another bloke who, like me, is used to using Eclipse with CVS at work. I pushed (no pun intended) Git as I've had good experiences so far and didn't want to go setting up a CVS or Subversion repo on a separate machine. To be honest as much as I wanted this to work for us, we struggled. Making small changes then waiting while he pushed those to master and then I pulled them down only to find a bunch of clashes became tedious quickly. We've argued about what system to use:
CVS? Subversion? Mercurial? Continue with Git?

In the end we've decided to give Mercurial a try. It gives a chance to continue with the distributed mindset but importantly there is good tooling support in Netbeans. (I know there's a plugin for git but I couldn't get it to work on my machine). So far the extra tool support has been positive. We've moved our project to BitBucket from GitHub (higher storage limit for the free account too) and we're able to work collaboratively even in the free account.

In the process of making this post I've had a couple of tweets reminding me that there is git support in Netbeans (and Eclipse). I had been using Netbeans 6.9 RC2 on 64 bit Linux and couldn't get the plugin to work. All good with mercurial so far.

Version Control is something some people get passionate about. I'm not proposing one is better than another just that for us this time Mercurial has been a better experience. As we get more used to the distributed aspect I guess we'll be better able to adapt to GIT. But if Mercurial is doing the job why change?