For my recent MSDN TechTalk I did some research how to migrate a source control repository from SVN to TFS. While I am not advocating this migration, here are the options:
The Good:
Currently you have a choice of three tools:
svn2tfs:
svn2tfs is a simple tool written in VB.NET. You need to have SVN installed in order for this tool to work. It basically replays every revision from SVN as changeset into TFS.
TFS Integration Platform:
The TFS Integration Platform is the Swiss army knife for many possibilities to get data in and out of TFS. The TFS integration platform is available as supported Microsoft product on Visual Studio Code Gallery and as bleeding-edge release on Codeplex. The SVN adapter is currently only part of the codeplex release.
Timely Migration:
Timely Migration is a commercial tool. There are different modules for different source version control systems. To migrate from SVN to TFS the SVNToTFS module is needed. It costs $1995. Trial versions can be requested, but they do not migrate the content of the files.
svn2tfs | Integration Platform | Timely Migration |
open source | open source, from Microsoft | commercial, $1995 |
simple and easy to use | many features, complex, complicated | powerful features, easy to use |
enough documentation | sparse documentation | good documentaion |
SVN tags can be migrated as branches | SVN tags are migrated as branches | SVN tags are migrated to TFS labels |
user-mapping is enforced | user-mapping is possible but not enforced | user-mapping is enforced and comfortable |
migration is aborted in case of an error | some errors can be manually resolved and migration can be then be resumed | migration gets resumed when restarting after error resolution |
With each tool I was able to successfully migrate an example project from a local SVN repository.
The Bad:
svn2tfs: I was not able to migrate SVN repositories from Google Code. The tool systematically failed, because the initial repository revision for the project layout (dirs for trunk, tags and labels) has not author. The tool can not deal with that. On the positive side was, that the source code of the tool is very simple so that I was quickly able to create a patch, that fixed this problem. On the negative side was, that there was no reaction on the patch I submitted. The project seem pretty dead.
TFS Integration Platform: It seems not possible to do an aynonymous login to SVN. If you do not provide valid user/password, the migration fails with an ugly “NullReferenceException”. The documentation for the SVN adapter is sparse. For instance there was no documentation at all how to map svn users to TFS users. fortunately (after some nudging from my contact at Microsoft) my question in the forum was answered. Some days later even a blog post about the topic was published. Another shortcoming is, that the mapping from svn users to TFS users is not enforced. If no mapping is specified, each svn user is silently mapped to the user that is running the migration tool. There is no support in checking if all users from svn are mapped to TFS users.
Timely Migration: The only negative thing is the price since you probably need the tool only once.
The Ugly:
With none of the tools I was able to migrate the Nerd Dinner repository from Codeplex. Each tool either reported an error or froze indefinitely.