The other big change I’m considering is actually moving away from Subversion. I’ve really enjoyed using it, but a recent discussion on the Groovy Dev list about Distributed Version Control Systems (DVCS) has got me looking at alternatives and why it would be good. I asked my friend Kate if she had any blog posts on why switching to a dvcs is a good idea and she whipped one up for me.
After reading through it I think I’m sold, but now I’m trying to figure out which one to try out first. Git honestly looks like the clear winner here in a number of respects:
- Serious mindshare amongst the OSS projects
- Has a great community committed to pushing the project forward (as Kate suggests )
- Has some really good functionality (even if it is a bit obtuse to get to understand)
- Looks like the beginnings of some plugins
But it also has some (current) drawbacks:
- Tools are really only available on Linux – Mac looks like its coming but could be a pain in the ass to build, forget Windows right now
- No IDEA plugin yet (bummer) – but it does look like IDEA 8 will support it
- No NetBeans plugin
- It’s a bit obtuse to learn – the commands are not necessarily the easiest to understand but they do have a Subversion -> Git guide online
So, I think I will try Git first, maybe. What about the other two – Bazaar and Mercurial? Bazaar honestly looks like 3rd place contender right now, but it does have some interesting tools available to it. Let’s look at Mercurial next.
- There are some pre-built packages for OS X and Windows – nice
- Again, looks like the beginnings of some plugins
Some current drawbacks
- Doesn’t seem to have the same mindshare as Git does (this is my perception not necessarily true)
Now onto Bazaar.
- Binaries available for multiple platforms – OS X, Windows, and Linux
- Patch Queue Manager – very interesting tool
- Bundle Buggy – another interesting tool
- There are again plugins available
Of course after I started this I found this much more in-depth review of the different systems over at InfoQ.
I think after reading a ton more on this (and the InfoQ article) that I’m going to give Mercurial a short first and see how it goes. Kate makes two more points at the end of this blog post on Mercurial vs. Git (which itself was a response to another blog post) – If you need Windows support or documentation are important items then Mercurial may be a better choice. For me, while I don’t need Windows support, it will be nice to understand what I’m trying to do first.