Tuesday 10 May 2011

Migrating from TFS 2008 to SVN 1.6 with tfs2svn

This is tricky because tfs2svn stopped being updated when subversion 1.4 ruled the roost. 

Here are the steps that I took:

  1. Have a subversion repository ready to receive the project (including ‘pre-revprop-change’ hook – mine is a simple ‘exit 0’ batch file)
  2. Install TortoiseSVN 1.6
  3. Download Collabnets command line client for svn 1.6 (svn-win32-1.6.15.zip)
  4. Install tfs2svn 1.1 (http://sourceforge.net/projects/tfs2svn/files/tfs2svn/1.1/tfs2svn.setup.msi/download) on my development VM
  5. Extract the svn-win32 command line client and copy the contents of ‘bin’ folder over the contents in ‘C:\Program Files (x86)\Kevin Colyar\tfs2svn\libs\svn-win32-1.4.6\bin’
  6. Checkout revision 104 of tfs2svn using TortoiseSVN (repository url: https://tfs2svn.svn.sourceforge.net/svnroot/tfs2svn)
  7. Save the patch from http://sourceforge.net/projects/tfs2svn/forums/forum/772710/topic/4510118 as tfs2svn_update.patch (make sure all &amp; are converted to & and all links have any <a> tags removed)
  8. Using TortoiseSVN apply the patch to the trunk branch.  All the files should be matched successfully.  If not check for stray html encoding/links in patch file.
  9. Open the tfs2svn.sln from trunk (upgrading the solution if using VS2008)
  10. Build ‘tfs2svn.WinForms’ and copy the output over the contents of ‘C:\Program Files (x86)\Kevin Colyar\tfs2svn’ apart from the ‘libs’ folder.
  11. Launch tfs2svn and fill in the fairly straightforward form and hit convert!

tfs2svn should now spin through your TFS repository and migrate each changeset to subversion (keeping the history).  The few errors that I encountered (after applying the patch!) were easy to fix as they were missing folder (from svn) issues when a changeset included a branch or merge operation.  Simply creating and committing the missing folder  allowed the migration to continue.

2 comments:

  1. It's great that I'm not the only one trying to get off TFS. I noticed that tfs2svn was recently updated to 1.2 and saw in the source code that he merged in your patch except for your patch to Colyar.SourceControl.OpenTfsClient/TfsClientProvider.cs. Which brings me to a question I have for you. I noticed that tfs2svn bundles OpenTF 0.5.2a but I found OpenTF 0.6.0 from the OpenTF Google Project site(although it was released in 2008 and there is no activity on this project anymore) The other option is to use the Team Explorer provider in the drop down but I haven't gotten that to work yet. What do you recommend?

    ReplyDelete
  2. Hi Darren,

    I only worked with tfs2svn for a short while (whilst I was migrating!) so I've not really explored other aspects.

    I didn't need to update OpenTF as it worked for me (when patched). My recommendation for you is that if it doesn't work for you, then try updating the reference otherwise, leave as is.

    ReplyDelete

Got something to say? Let it out then!
Comments are moderated, so it may take a while to for them to be displayed here!