10 Reasons Why I Hate svn
There are so many great reasons to hate Subversion. Here are a few:
- No real branch merging. If I wanted to manually manage revision ranges, I’d just use cp for my source control needs.
- No conflict resolution system other than >>>>> ==== <<< and leaving a bunch of -left/-right files all over the place. Conflicts on binary files happen all the time, after which you have no idea what’s up with your binaries except that you can be sure that they’re invalid now. With text files, svn will often tell you that the entire text contents of your file is the conflict. This is about as useful as using /bin/cmp for version control.
- svn resolved is just a shorthand for “I’ve now fixed all the problems that you told me about, now delete the .left and .right merge garbage”
- If I’ve forgotten to resolve a conflict (or just left some >>>> ==== <<<< junk in the file by accident), svn will happily commit that merge marker, no questions asked.
- Change history is essentially local to each branch and does not propagate through to the mainline when you merge down branches. Eventually, all you know about your mainline is that at various points in time, various people merged lots of shit into it.
- Get a start or stop revision number on a merge even slightly wrong and it’s conflict city. I hope you didn’t have any changes on your working copy, because your recourse is usually only to revert -R.
- You would think a dry run would be useful here but in complex projects, the number of files which conflict is often not enough to guess whether or not you have entered in a wrong revision range and are about to screw up your working copy.
- If that wasn’t bad enough, I am pretty sure there is no correct revision range for whatever it is that programmers do all day. If your range happens to include a change that you have already merged into the target branch, this is enough to cause all kinds of havoc.
- Use two clients of even slightly different versions on the same working copy and you will instantly ruin it, permanently. Your copy can be ruined even on read-only operations like svn diff or svn info.
- In a related note, svn cleanup is a misnomer, it should actually be called svn printcrypticmessageandfail.
- Ignores Control-C all the fucking time.
(#11 is a freebie.)
Perforce is one of the more expensive SCM systems out there, but it instantly pays for itself if you figure you or your engineering team spends just 1 day per year fighting with Subversion. In reality, the total cost of Subversion is probably much, much higher.
Ironically the last developer tool that had such a negative impact on the productivity of our team was Visual Studio.
About this entry
You’re currently reading “ 10 Reasons Why I Hate svn ,” an entry on stuffonfire.com
- Published:
- 9.13.07 / 3am
- Category:
- Programming
12 Comments
Jump to comment form | comments rss [?] | trackback uri [?]