2007-07-16

A little rant on version control

This is a two part rant. First part is about why there are so many different version control systems (VCSs). The second is on trying to get them to integrate into Eclipse. Because this is a rant realize it is being done because something has ticked me off so I am not exactly in a calm, rational mood so take what I say here with a big grain of salt.

So, in the beginning (i.e., when I started programming earnestly), there was CVS. It got the job done, but boy did it suck to have individual revision numbers per file. And want to move a file? Well, forget that unless you had server access.

Then came Subversion which fixed both of those issues. That made centralized VCS good.

But all the while there was this idea of a distributed VCS as started by Arch. It didn't count for much as the idea of a distributed VCS just didn't fit my brain at the time and it was supposed to be a pain to use.

But that little distributed VCS idea has caught on. Witness the number of modern, distributed VCSs one can consider: Bazaar, Mercurial, darcs, Monotone, and Git (and Codeville which I just learned about today but I don't know how stable it is). Hell, even Subversion gets into the game with SVK. And I believe the Subversion developers are planning to add distributed abilities in some future version.

But why can I rattle off nine popular VCSs? Do we really need that many? I don't think we do. Considering my Mercurial vs. Bazaar shoot-off still gets a bunch of hits even though its now outdated (I need to rewrite it so that it takes advantage of a local repository over SSH by launching a local sshd instance) I think other people are having a tough time like me trying to choose a VCS that is easy to run for their own needs. The existence of a tool like Tailor also seems to show that there are too many options out there.

I just hope that some consolidation comes soon in the realm of VCSs as having to keep multiple VCSs installed is a pain, let alone trying to choose the right one.

And this segues into my bitching over getting local version control working under Eclipse. I tried to get Mercurial and Bazaar working for Eclipse, but both plug-ins had issues (but both claim alpha or less quality so that's fine). But having to run a local svn repository just to get IDE support seems rather heavy-handed. Plus figuring out how to get the damn thing working was a pain (trick was to use svnadmin to create a repository in my Eclipse workspace and then do Team -> Share to add my existing project into the repository).

But it makes me wonder what kind of plugin support I could have in Eclipse if some consolidation occurred. Then again, Eclipse's heavy-handedness in terms of requiring a plugin to play nicely makes the barrier of entry kind of high (especially if the VCS developers aren't Java coders by nature). Makes me wish I could use Vim easily for AspectJ development.

Bah. So, in summary, I wouldn't mind some consolidation in the VCS arena so the talented VCS guys can work towards three killer VCSs (Subversion, Mercurial or Bazaar, and Git are my choices). And then they can band together and make sure my life doesn't suck in Eclipse when I am forced to use the editor. =)