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.