Blogging is fun

Migrating with TFS Integration Platform

Posted 2011-05-24 By Magnus Nilsson

There comes a time in the life of an IT department when you want to migrate your projects from one TFS instance to another, e.g. from a 2008 to a 2010 installation, and you'd like to keep your version control history. To help us, Microsoft gave us TFS Integration Tools (there is an unofficial version at CodePlex too). It comes with documentation, but it's very theoretical and not very hands-on or, frankly, useful. But, this is what you do:

  1. Install the tool and point it to your new TFS database server.
  1. Create a new configuration. When asked for a template, browse to the installation directory and the "Configurations" folder within it. If you're just wanting to migrate version control history, enter the "Team Foundation Server" subfolder and select the "VersionControl" file.
  1. Select where you want to migrate FROM on the left side and where you want to migrate TO on the right. Your screen should now look like this:

It can help to be selective with what you migrate, by replacing the root path with subdirectories (e.g. $/MyProject/Source, $/MyProject/Docs). You can also skip a directory by adding a path and setting it to "Cloaked" (e.g. everything in $/MyProject BUT $/MyProject/WierdConfigurationFiles).

  1. When you're happy with the configuration, select "Save to Database" and then "Start" in the left-hand menu. The process can take quite some time and a lot of things can go wrong. If everything goes well, the screen will soon look like this:

If something does go wrong, depending on the problem, you'll be offered either automatic or manual resolve actions. Automatic resolve actions may be worth a try, whereas manual resolution requires a lot of reading up on the inner workings of version control systems.

If a particular part of your solution is proving troublesome, first try to exclude it through cloaking. Even if you cloak it, however, the tool may still try to merge from that path. To control the merging behavior, you can add a "MergeScope" attribute to the XML migration configuration, like this:

So, cross your fingers and press "Start"!

Shameless plug: Are you a ninja? We are hiring in all our offices.

Share post