Newsflash: Sourceforge now has Subversion services, with easy migration of your CVS repository.

In other news, it seems mr. Torvalds have successfully installed one of those newfangled “electrical lamps” in his house. These “lamps” sure have come a long way since the days of Edison! Our reporter was baffled as the yellow light bathed the whole room, much more powerful than a candle, and easier to keep. In his usual modest way, mr. Torvalds said: “What are you looking at? It's just a quick fix, I'll replace it with a proper fluorescent tomorrow, when the market opens.” Our reporter doesn't know what the word “fluorescent” means.

The bandwagon to hell

I can't understand why people are still migrating to Subversion at this point in time, specially projects that have been working well enough with CVS for years. My advice: if you're so excited about SVN, go join a project that is already using it — and hurry up, before they migrate again. SVN is a pain in the neck, and one that is much harder to work around than CVS.

More importantly, SVN has no actual concept of branches. It can merge between arbitrary files and directories inside the same tree, and can track the fact that one file descends from another; this is a very useful feature, and one that no modern revision control system has copied yet, as far as I know. However, it seems the SVN developers got so excited about this breaktrough, that they decided they don't need real branches at all; “let's just emulate branching using this thing — nobody is ever going to need more than 640k, anyway”.

I have been trough this before; lead developer: “this doesn't matter, we don't use branches anyway”. Me: “well, this is probably because CVS makes it unreasonably painful; if you go with SVN, you will keep not using them, because they're even worse. But if you switch to a real revision control system, soon you'll find yourself using branches for the most trivial tasks, because they're so convenient.” Having been in a project that makes heavy use of branches — Plone — and being a developer during the switchover, I can attest: it's horrible, horrible, horrible, and sweet Nigurath help you if you need to merge the same branch more than once.

Please. If CVS is serving you well, your best bet is to cope with it for three or four more months at least. There are many real, modern revision control systems nearing maturity, and those will really boost your productivity, rather than just making you feel you're in the bandwagon, and oh, maybe letting you move files around.

If you have a few hours and want to learn to use something, don't bother with SVN. Download bzr and go trough the tutorial. Then get Tailor — an amazing tool that can convert repositories between multiple revision control systems — and convert your project into a private bzr branch. Play with it for a few days. Publish it remotely and have people “get” it. Try branching, doing really insane things that you know you wish your revision control system would allow you to do in the branch, then merging. You'll be pleased; I've seen many people go trough the experience.

And if CVS (or even SVN) is not serving you well now, don't make the mistake of switching to something that won't be much better. Learn bzr (read the paragraph above), or maybe Darcs, Git, Monotone, Mercurial. (In fact, Tailor even allows different developers to use different revision control systems, as long as they're all distributed...)

And then you won't be disappointed and angry a few months from now.