Moving from Visual Source Safe to Subversion

Last year we moved our current development repository from Visual Source Safe to Subversion. At a previous .Net Architecture Chat we talked about this process.

So here is the python script and DOS .bat file used to do our conversion.

This conversion only extracts the history for the current live tree. This is useful when you want to change going forward, but don’t need the complexity (and problems) or trying to move your complete history. You can add sub-path exclusions, and it may take a few iterations to get the result you want. ie Identify the dead code paths, and not included them in your new code tree.

I have been using these scripts the last few days to convert another teams repository. Their VSS repository was large (>1Mloc) and the Python run-time was crashing so I had to reduced the size of the repository been moved in one go. I decided to separate out the Libraries sub-directory, as this was large, but the changes do not really need to be in the same atomic check-ins as the main code base. Running the script over the weekend resulted in success (all be it a 10 ½ hour success).

You can merge many dump files into the same repository using svnadmin, so this can consolidate your repositories if they are fragmented like ours were.


Luis 2008-08-20 05:18:09

Why would you do this? Is there something particularly wrong with VSS that svn does much better? Just curious.

Simeon Pilgrim 2008-08-20 09:02:35

Hello Luis,

There are quite a few things wrong with VSS.
1. The Lock-Edit-Checkin model
2. The repository changes are made by the user machine, so there is no recovery if the client PC crashes during checking
3. Check-ins are per file, not atomic blocks of files
4. If you are in different time-zones point 2. means you will get changes ‘lost’ due to local time
5. A repository cannot be safely accessed remotely (without a 3rd party tool)
6. Repositories can get corrupted, and you lose history, but only find out when you try get that revision. So restoring from back-up becomes a guessing game

These are the issues I have witnessed in two jobs that used VSS.