Sponsored By Aspose - File Format APIs for .NET

Aspose are the market leader of .NET APIs for file business formats – natively work with DOCX, XLSX, PPT, PDF, MSG, MPP, images formats and many more!

Getting off of VSS and onto Subversion

Steve Barron asked for a pointer to a VSS alternative.  My team uses the open source Subversion system for source control and we’re very happy with it.  The best thing to say about it is that it almost never gets into the way like VSS can.  Continuous Integration is certainly much smoother with Subversion.

For a Subversion client we use a mix of the TortoiseSVN client that integrates into Windows Explorer as a shell extension and the Ankh plugin for Visual Studio.Net integration.  I like Ankh, but I could honestly live without any IDE integration.  Subversion uses an optimistic locking scheme so multiple users can simultaneously edit the same file.  It sounds a little scary at first, but the merging isn’t really that big of deal and the convenience factor outweighs the negative results.  Just think what a pain in the neck it was with VSS constantly fighting over who had the project files.  The Subversion clients are smart enough to recursively find new files all at one time, so the client is a lot easier to use from outside the IDE than the VSS client is.  Plus I’ve found Subversion to be much faster than VSS.

There is a conversion script to migrate a VSS repository to SVN at http://vss2svn.tigris.org/.  We didn’t have much luck with it because of some VSS corruption issues, but a friend of mine was able to use it successfully.

I’m not fond of CVS because of some bad experiences in the past, but it’s also a viable choice.

About Jeremy Miller

Jeremy is the Chief Software Architect at Dovetail Software, the coolest ISV in Austin. Jeremy began his IT career writing "Shadow IT" applications to automate his engineering documentation, then wandered into software development because it looked like more fun. Jeremy is the author of the open source StructureMap tool for Dependency Injection with .Net, StoryTeller for supercharged acceptance testing in .Net, and one of the principal developers behind FubuMVC. Jeremy's thoughts on all things software can be found at The Shade Tree Developer at http://codebetter.com/jeremymiller.
This entry was posted in Uncategorized. Bookmark the permalink. Follow any comments here with the RSS feed for this post.
  • http://codebetter.com/blogs/jeremy.miller jmiller

    What are you using for a client? TortoiseSVN gives you very easy access to past versions and Diff reports.

  • Koob

    I just started to use Subversion. At work still using VSS. We don’t have any problems with corruption. But it is a risk. Being in charge of the builprocess, I understand CI is much better with subversion. But there is one thing uptil now I think VSS (in combi with VS2005) is much better: The file and project history. Especially when you apply frequent labelling. Am I missng out on some Subversion history and diff tools here? For me this is the most important part of version control, but it’s hard to et an overview of the possibilities in Subversion. Any help?

  • matt

    I agree that SVN is a great alternative to VSS 6.0 after using both, but as our company is moving along with .NET 2.0 we are considering the Team System suite that has a beefed-up version of VSS 2005. Also, with VSS 2005, does anyone have an opinion on how these new products stack up against SVN?


  • http://www.trason.net Weston M. Binford III

    We migrated from VSS to Subversion using the vss2svn.pl script. Here are the steps that helped us avoid problems.

    1.) Analyzed VSS respository and handled any corruption errors before we started the migration. See (http://web.archive.org/web/20050308043631/http://www3.primushost.com/~ckollars/vss.html

    2.) Use a clean (perhaps, virtual) machine. Install VSS 6.0c (see below), subversion, and ActiveState perl.

    Note: Install VSS 6.0c (not the latest, 6.0d). THIS IS VERY IMPORTANT! The vss2svn.pl script does not play nice with 6.0d. This fact is documented somewhere in the vss2svn.pl release notes, but I did not discover it until I had spent several hours trying to make it work with 6.0d.

    3.) Archive your VSS repository and restore it to the new machine. This avoids network latency issues accessing the repository.

    4.) If you want to retain the history (dates) from VSS in Subversion, you need to use the –setdates parameter on the vss2svn.pl script. Also, you have to hook up the pre-revprop-change event for the –setdates option to work. See the usage statement in vss2svn.pl (vss2svn.pl -help) for mor information.

    5.) Finally, if you want to retain the user information in Subversion, then you have to create all of the VSS users in the conf folder under svn.

    Hope that helps,

  • Jeremy D. Miller

    I’d second the recommendation on “Pragmatic Version Control using Subversion”

    – and to answer another question before it gets here, you don’t *have* to run and install Apache to use it remotely. The security might be a little bit tighter though.

    We’re having no trouble accessing SVN over the WAN.

  • http://substantiality.net Sam

    “Pragmatic Version Control using Subversion” is like $20, and answers lots of those questions I had when first starting out with SVN like “how many repositories should I create?”, and “what should the folder structure look like? Is there a _right_ way?”.

    Of course I didn’t read it when I was first starting out with SVN, so I did pretty much everything wrong for awhile. 😉

    Things like creating users… I was already serving my repository from Apache for awhile, but I didn’t create user accounts until a month or so ago. It took like 15 minutes with no experience when I finally looked up how to do it.

    So anyways, yeah, I highly recommend both SVN, and the book.

  • http://www.stevebarron.net Steve Barron

    Thanks for the info, I’ll give it a try ASAP!

  • Brendan Tompkins


    We’ve been having some issues with VSS lately here anwhere from file corruption to one of our team members being unable to get latest from VS..

    I’m seriously considering a move to Subversion. Do you know if there’s a good tutorial out there that shows step by step the setup process, conversion and VS integration?


  • http://www.codebetter.com/blogs/eric.wise ewise

    I like vault pretty well… seapine if you want to spend the big bucks.