VSS to SVN Migration


This post has a few tips and insights from my recent experience of migrating from VSS to Subversion.

The first thing to note is that version control in SVN has some conceptual differences to VSS and it is worth spending some time reading the SVN Book to understand these differences. Understanding these differences will often give you the ‘why’ for migrating to SVN.

Why did we migrate?

Our shortlist of reasons for migrating:

  1. Branching in SVN is much easier than VSS.
  2. VSS doesn’t always play nicely when disconnected (issues with working folders)
  3. With SVN I can work on n individual bugs in completely separate folders, allowing me to easily work on the bugs independantly (useful for example if you are say writing a new feature against the dev source and urgently need to fix a bug in the production source). Once again VSS has ‘working folder’ issues when you work this way.
  4. Depending on where you store your repository, SVN plays nicely over the internet…fantastic for teams working remotely.


If you can migrate without keeping the history then that is the easiest and fastest way.It’s not ideal but you can always still get the history of a file from VSS.

Note:  easiest != best.

If you want to maintain history I used this migration tool with great success.

A few things about the migration tool…

  1. Play with it on a mini repository first! (and remember it changes your system clock!)
  2. The most time consuming part of the process is when it does a ‘get history’ from VSS. Drove me nuts because you get the history with the VSS gui and you get the results almost immediately, get the history from the cmd line and it took 40-60 seconds! I did search for some cmd line switch to help but no joy.
  3. It’s c++ so I was too scared to make any changes and it worked fine but the source is available if you need to tweak it.
  4. I had some corruptions in VSS, this causes the migration tool to pause. Make a note of the file, ignore and continue.
  5. Depending on the size of your repo you may want to import from a logical sub project.

You will also need to do the migration on a separate dedicated machine because it changes the system clock when committing. So yes the migration tool must run on the same box as the repository it is committing to. Once the migration is complete you can either copy your flashy new SVN repo to it’s new ‘production’ home or if you have set it up with a Berkely DB then you’ll need to export and import. The SVN Book has plenty of details on ‘how’ to export/import etc.

This blog entry helped me as well.

When You are Done


I strongly recommend you run the app through a full test phase once you are done to ensure you ‘got everything’.

Point to the New Location

If you have a CI server setup you’ll need to configure to point to the new repo, same goes for you and your team members.

Maybe change the location of the old VSS repo so that no one accidentally checks in. Don’t delete it though.

  1. Can I ask what version of VSS you migrated from?
    VSS2005 or VSS 6.0d? I’m trying to work out what migration tool can handle VSS 6.0d.


    — Lee

      • wallism
      • October 13th, 2009

      Hey Lee,

      Not sure what you mean by VSS2005…do you mean TFS? We migrated from VSS 6.0d using the tool I mentioned in the post, it worked well but make sure you trial it on small chunks before migrating your entire repo, just to make sure you are happy with the result because it will take a long time.

      Good luck 🙂

  2. Hi Guys!!

    Its Good that you have migrated successfully.

    Will you please share the exct link from where to Download the Tool?

    If you are talking abt this location then there are couple of links as :–

    Karls changes
    Matt changes

    please suggest the exact Link?

    It will be more than helpful if you share how to setup on Wndows 2003 server as I am using VSS 6.0 and Subversion ver 1.6 …

    Thanks in advance
    Software Engineer

      • wallism
      • May 3rd, 2010

      Good question about which one I used, I can’t recall now but I think it was Matt’s changes. However I can see there are now some C# versions that people have created so I’d recommend trying one of those because then it will be easier to modify the code if you need to (unless you are a good C++ developer…which I’m not).

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: