I first looked into Subversion (SVN) many years ago, after hearing its slogan: "CVS done right". This sounded good to me at the time, and I'll allow that at some point, maybe it made sense. I wasn't using it seriously at the time and only gave it a superficial lookover. It seemed pretty good.
The other day I was just looking into it more seriously because I'm now using it at work. Wow. What a pos. If you're a Subversion user, please excuse me. To those of us who have seen the light of distributed SCMs, Subversion might as well be Visual SourceSafe. By that I mean that Subversion is more similar to Visual SourceSafe than it is to modern distributed SCMs like git or mercurial.
The most amazing thing about Subversion is that it has no branch or tag commands. Instead, it has a bizarre "copy" command that does utterly different things depending on whether the arguments you pass refer to the working copy or a URL. One permutation copies a file and schedules it to be committed. Another permutation immediately commits the working copy to a URL. What does that even mean and why do I want to risk doing it accidentally when I really meant to do "cp file new_file; svn commit new_file;"?
A third permutation branches or "tags" the repository. First, to actually branch, you need to know the repository layout. Repositories are so simple that this online book devotes an entire chapter about how to choose one. Why should I have to care about a repository layout? Even CVS has the good sense to just give me a simple, straight-forward branch or tag command.
The other insane thing about SVN is that tags aren't fixed. They're exactly the same as branches and can be committed to. Seriously? Wtf is the point of that? To make them fixed, you have to read another chapter about access control scripts. And people say git is hard to learn...
Apparently Subversion's developers are continuing to work on it, trying to catch up by adding features like offline commits and merge tracking that are inherently part of a true distributed SCM. Subversion, please give up and start using git or hg, they already do all the things you wish SVN could do one day. It's time for Subversion to retire.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment