One of the more annoying aspects of the project I’m currently on is that our source code is committed to an SVN repository. Now, don’t get me wrong; it isn’t that I think Subversion is crap. In fact, my first introduction to version control itself was SVN; you could even say I have a soft spot for the software.
But here’s the thing: when you’ve got a reasonably large team, and you’re employing continuous integration, and commit freezes occasionally happen (e.g., because the build went red), it just starts to get really frustrating not being able to do local commits without having to push to a repository (and without having to create an entirely new branch for what could well be a small change).
The “right” solution to this problem (in my opinion) is to switch to a distributed version control system like Git or Mercurial; but sometimes, due to organizational constraints, that isn’t an option. So, too bad, right?
Think again! I was quite pleased earlier this week to discover that I was able to install hgsubversion, which lets you clone an SVN repository on your local machine, enjoy all the benefits of Hg locally (most notably local commits), and then use Mercurial as a Subversion client, so that “pushing” using Hg becomes equivalent to “committing” using Subversion.
My understanding is that the same thing exists to bridge Subversion to Git; it’s called git-svn.
Basically, I am way too tired to write a long and thoughtful post tonight; so this is just a useful piece of general advice. If you find yourself frustrated with SVN, for any reason, consider trying either hg with hgsubversion or git with git-svn. They can make your life so much easier.