We are building web applications since the mid-90s with Python. Historically, we have used a
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 :-)).