July 1, 2008

Subversion annoyances

Although a lots of projects and companies moved from the CVS to Subversion, obviously nobody seems to be really happy with subversion.

My personal issues with SVN:

  • Overlong URLs: for copy/merge operations you always have to specify the full URL. This requires copy/paste operations with the mouse...pretty annoying and lame. With the de-facto directory structure (trunk, branches, tags) it would be nice using relative paths like
svn copy . ../tags/1.0.1
  • As a workaround you might look at sv which simplies things a lot.
  • svn:externals: at the first glance SVN externals are a good thing for including external repositories or for emulating the old CSVROOT/modules mechanism. So far so god. The problem arises when you are trying to update a checkout with lots of externals. Zope 2 for example has more than a hundred svn:externals to reference to various Zope 3 packages. Updating a checkout takes very long (several minutes). The update process is serialized and can not update several external references in parallel (which would help a lot). The primary reason for the slowness is that SVN has to reconnect (through ssh/http) to the backend SVN server.
  • Revision numbers: Revision numbers are are good for machines but basically meaningless for humans. In CVS you have the concept of a tag representing some state within the repository at a given time.. You refer the tag by a human-readable name that you can remember easily. Rembering numbers is much more painful (especially if you're older :-)).