Recently I’ve been dealing with a codebase sitting in a Visual Source Safe 6.0 repository and to keep it brief and polite we’ll say it hasn’t been anything approaching “fun.”  For anyone interested, I found a handy and effective way to convert an entire VSS repository to SVN.

First go grab the newest version of VssMigrate from Codeplex. I don’t know why the author prefered to keep the newest version on Codeplex as opposed to Google Code, but I’ll leave opinions for another time. VssMigrate does a pretty great job of converting repositories once you get it properly configured. The only issues I had are as follows.

If you get an issue about the SourceSafeTypeLib not being found (usually error 80040154), that means you need to register VSS’s ssapi.dll. This should do the trick:

regsvr32 C:\Program Files (x86)\Microsoft Visual SourceSafe\ssapi.dll

If you still get an issue, then you are probably running 64bit Windows. Just change the target platform of the project from “Any CPU” to “x86”.

The only other significant issue I had was in importing the entire repository at once. I didn’t want to bother with importing a single project or just a couple of projects. I wanted to move the whole thing. To do this you just need to remove some of the error checking. As of version you just need to comment out the lines around Program.cs:623-627 and Program.cs:673-681. Specifically these are the lines that verify that you filled in VSSPROJ and SVNPROJ. Then set VSSPROJ to “$/” and you should be set.

Also be sure to change “PerformImport” to “True” and to use a local subversion repo, and set the SVNREVPROPSPATH so  VssMigrate can alter the timestamps and authors.