Despite Linus’ strident criticism of Subversion (in the 70 minute video he accuses Subversion, and then anybody who wrote it, and then anybody who likes it, of being ugly and stupid) I still use Subversion and I like it. Clearly compared to Linus I am ugly and stupid. OK fine. But I’m not switching to git now because my tiny teams have been fine with Subversion. Maybe later I’ll give git a whirl.
Nevertheless, the ugliest-stupidest part of using Subversion in my experience is merging – specifically, repeated merging. It takes caution on the part of the person doing the merge to avoid re-merging the same changes, which sucks. Imagine everybody you’re developing with, including yourself when you’re on the phone and trying to wrap up some changes before running out the door for whatever reason, and you’ll realize that having a tool that can rapidly shoot you in the foot in a way that may take hours to unwind, but more importantly, days to recognize and identify, is scary. (Consider that old, replaced code, and the old tests that go with it, might be put back into your current source tree, and your automated tests would be happy since they all got merged back in as one big lump. You’d have to look for specific changes and features you had made in order to notice that they had regressed back to an earlier version without you meaning to do that. Eek!)
Well, they’re fixing it. I dunno if it’s gonna be perfect, but at least they’re addressing the problem and seem to understand what the needs of the masses are. So I’m optimistic.
And yeah, at some point I’ll probably check out Git. But not until Subversion irritates me more than it does today. :)