Often people put on a condescending smirk when they hear that I still have to use CVS, let alone Subversion, in some projects. In numerous projects I have seen the performance of CVS and that of Subversion and it is surprising how such a step backwards (I consider Subversion that) could create such a hype. Wasn’t it supposed to be better than CVS? If you ever used Subversion in big projects with big files and, most of all, many small files and many branches and tags you’ll know what I mean. I for one had moved one project I owned from CVS to Subversion. After some cleaning up I quickly moved on to Mercurial because of the performance penalty that Subversion brought with it, even when compared to something as ancient as CVS. And the server we’re talking about is running actual CVS, not even CVSNT!
For once I agree with Linus Torvalds (also see the PS here). Here’s the quote I am referring to:
Because my hatred of CVS has meant that I see Subversion as being the most pointless project ever started. The slogan of Subversion for a while was “CVS done right”, or something like that, and if you start with that kind of slogan, there’s nowhere you can go.
I’ve been using the technique outlined in this article for some time now as it gives me all the superior features of a distributed VCS, including superior merge features, and still lets me develop against repositories that make use of the old traditional VCS. It helps to get rid of some of the weaknesses of old VCS even when you are stuck with them for the time being.
It may not be on par with the real thing, i.e. working exclusively with the DVCS, but it’s in some cases as close as you can get.
Let’s hope more people stuck with the old systems read this and come to see the light. Not only will it help them to familiarize with modern tools, it will – in my opinion – eventually lead to the modern tools replacing the old ones. If you have worked with a distributed version control system you know full well what boost that means for productivity.
I don’t really care whether you use to overlay your CVS/SVN working copy with Mercurial, Git, Bazaar or whatever. But try it … I bet you’ll come to like it.