I do like subversion. Its basically an apache module, follows standard HTTP protocols and webdav. It deals with whole directories like CVS deals with files, and transaction-savvy.
But subversion really doesn’t know anything about branches or tags. You can have a subversion repository without the branches, tags or even the trunk directory. Those are just conventions. And likewise, tags doesn’t really exist as a tag, but a copy of a revision. That means you can check out the tag, update it, and commit it. That’s not a tag, thats a branch. And funnier is that if I ‘tag’ revision 51, and then make a few more commits to the trunk… say to rev 54, the ‘head’ of the ‘tag’ is rev 54. And what’s the best way to query a svn repository? Trac. Trac looks great but its simply too slow.
So… I’m looking at git, which is used for active development of the Linux kernel. Not only does it have branching and tagging in the CVS style, directory and transaction management in the subversion style, its also a ‘distributed’ revision control system. (You clone the repository, and push updates) The GUI treatments of it don’t seem to be done, or IDE integration, but I’m more of a command-line kinda of guy anyways. This may really make more sense in the long run, but I’m still not sure if going from svn to git passes the ‘inertia’ test… that the pain in upgrading the repository and backup scripts and team learning of git is worth the upgrade.