I admit that the title is slightly misleading. There will obviously never be meaningful peace between the Microtards and Macophiles.
Nevertheless, if you are currently languishing under an oppressive Visual Source Safe regime, then I hope to inspire you to rally your coworkers and end the source control tyranny once and for all.
By switching from VSS to Subversion (VisualSVN Server makes it extra easy), you will be able to …
- Rename files within Visual Studio – I can’t believe that after all these years something as simple and basic as renaming a file within the IDE (even in VS2008) still doesn’t work correctly with VSS. Even if you manage to save the history of your file by remembering to change it first with the VSS client and then change it again in the Visual Studio, you are still likely to break either the continuous integration build or screw up one of your co-workers who happens to get the latest version while you are in the middle of doing this. Even AnkhSVN, the free open source Visual Studio plugin that provides integration for SVN, can seemlessly handle this scenario. All I can say is WTF Microsoft?
Interact with the repository through Windows Explorer – I definitely recommend using TortoiseSVN when interacting with your SVN repository outside of Visual Studio. It is a Windows Explorer shell extension, so you can execute all of the source control commands by simply right clicking within a normal Windows Explorer window. Some of my co-workers were reluctant to give SVN a chance at first because they assumed that it required a substantial amount of CommandLine-Fu. While SVN does have great command line support, TortoiseSVN makes it extremely intuitive and easy to use.- Use your windows password – How is it that SVN can use integrated security but VSS cannot (WTF # 2)? Not only are you forced to deal with another set of passwords for VSS, but it won’t even enforce any type of password complexity rules. As a result, most of the developers at my old job used blank passwords for 5-10 years thus making security a joke even though it was a heavily audited environment. Even if you’re not too concerned with securing your source code, you will at least appreciate having one less password to manage.
- Cease to worry about the repository size – Microsoft recommends that VSS database sizes not exceed 3 to 5 GB (no, it hasn’t improved at all in VSS2005) This is a rather serious limitation since the two places I’ve worked at before that have used VSS both easily surpassed that mark despite having a relatively small number of developers. Besides requiring a lot less space because revisions are stored as differentials, SVN has no inherent size limitations after which corruption starts becoming likely.
- No longer have to regularly duct-tape your repository – I always found it troubling that an official Microsoft best practice was to frequently run Analzye.exe, a utility whose sole purpose is to repair corrupted files. If that wasn’t bad enough, this utility takes forever to run (4 hours where I work) and requires everyone to be out of the database while it attempts to fix the corruptions that appear to happen whenever someone hits the enter key too forcefully.
- Retrieve files faster – The solution I work in most often has 16 projects (yes I know we need to refactor it…) and doing a ‘Get Latest Version’ in VSS was painful to say the least (often taking as much as 40-60 seconds to complete). SVN updates only take that long when I am retrieving the files for the first time. After that it only transmits files from the server that have changed so it is much faster.
- Branch without fear - The last time I tried creating a branch in our VSS repository, I gave up after an hour. Subversion does the same operation in about 30 seconds and it doesn’t make the disk size swell because it just creates links to existing tree structures rather than duplicating data like VSS does.
- Work remotely without disconnecting - When VPN‘ing into work, I always had to disconnect my solutions from VSS because any interaction slowed my work down to a crawl. SVN not only consumes less bandwidth because it only sends differentials instead of whole files across the wire, but it also stores base copies locally thus allowing you to analyze changes you’ve made without even being connected.
- Maintain all of your VSS revision history – I settled on Eric Lane‘s enhanced version of VSSMigrate and was able to successfully convert all of our VSS version history to SVN. Eric’s enhanced version of this utility even stripped the VSS binding information from the project and solution files during the migration, thus saving quite a bit of tedious manual work. My only complaint is that it wasn’t able to convert labels over as well, so if anyone knows of another utility that does this please let me know.
- Group and commit changes atomically – VSS doesn’t have any way to group changes together and doesn’t allow you to commit a group atomically, which means that you will be in for a world of hurt if your transmission fails halfway through a commit. SVN will not only rollback changes to the repository if any failures occur, but the revision number schema that groups changes together is also really handy for auditing and code review purposes.
More easily blame co-workers for screwups – The SVN Blame report sure does live up to its name. You aren’t sure who added that scary looking condition to a core function 3 years ago? Run the blame report and you will see a name next to each line of code so you know exactly who to go “talk” to.- Use some pretty slick tools – Since SVN is the defacto standard when it comes to source control, migrating to it will open the door to a number of very slick tools. We use JIRA and Confluence, so I’m particularly excited to try Crucible, another pretty slick tool by Altassian aimed at streamlining the code review process.
There are definitely more cutting edge options out there for source control (like Git), but if you’re coming from a VSS shop and are at all worried about encountering resistance from your coworkers or boss to a migration, then Subversion is probably your best bet. It is an extremely popular, stable, usable, and cost effective option.
Most importantly, it beats the hell out of VSS.
Now, go forth and do your part to rid the world of this horrible VSS scourge.
May God have mercy on your soul…
P.S. If you want to read a rhyming ranting by me about VSS, then check out this post
Popularity: 10% [?]