For my home development projects, I’ve been using the “Basic” setup of Microsoft Team Foundation Server for years. I have it running on my “server” box in my garage, but pointed at a Sql Server Express database instead of a full Sql Server install. (Apparently, there’s going to be an explicit TFS “Express” version in TFS11?)
Aside: why am I not using something like github? To keep my stuff private, I’d have to pay ~$7/month for 5 repositories. the way I have things setup in TFS right now, I’d have more than that, requiring their $12/month plan.
As part of the upcoming release of TFS 11, the TFS team has also started hosting an online, Azure based version of TFS, currently running at TFSPreview.com. Running, maintaining, and backing up my local TFS has been kindof a pain, so when I saw this cloud based TFS, I looked into using it.
Conveniently, there are TFS Integration tools that can migrate a local server version of TFS up to the cloud based version.
However, I ran into some things right away. And since I was at a brownbag presentation today by Scott Hanselman where he told us to blog stuff instead of just sending emails, I’m going to blog about it! So there!
Work Item migration
When I created my TFSPreview project, I chose the default selection for workitems, the “Scrum” template. But it appears that when I created the project on my local machine years ago, the scrum template didn’t exist, and I used the “Agile” template (IIRC). So that meant that all of my bugs/tasks/etc don’t migrate, I get a ton of errors about missing fields, etc.
It would be really nice if there was a standard migration configuration when moving between some of the standard templates. I know there aren’t fields that map, but for my one user home development purposes, I didn’t need all those fields anyway!
That was taking a lot of mapping settings, so I decided to just skip workitem migration and see if file migration would work.
Apparently for “demo” purposes, the migration includes a purposeful conflict to make you resolve it:
We left this conflict in the demo to illustrate how conflict resolution works. We could have used features such as cloaking to proactively avoid this conflict. To find out more about cloaking, go to TFS Integration Tools – What is the difference between cloaking and scoping branches?
The problem is that none of the suggestions appeared to work for me to resolve the conflict. Following the instructions just got me to an error:
System.InvalidOperationException: Sequence contains no elements
at System.Linq.Enumerable.First[TSource](IEnumerable`1 source)…
From my quick perusal of the tfs preview connect forums, there were several similar posts, but no resolutions.
The second quoted sentence, suggesting to use cloaking, doesn’t tell you that once you save the migration, you can’t do cloaking. So to get around this, I had to make a new migration configuration, and manually cloak the BuildProcessTemplates directory from the migration.
After doing that, all of the files migrated, with history/etc intact!
However, it appears that when I created the new migration configuration, I forgot the user mapping step, so all the changes have my local username instead of my TFSPreview id (my Live ID), so nothing looks like it was changed by me.
So now that I’ve spent a few hours and gotten something working, I wanted to delete the Team Project I migrated to on TFSPreview… but you can’t using the web tools. You can only do that using the command line tools. And specifically, you can only delete a project using the visual studio 11 preview/beta tools, which I don’t have installed! So much for a cloud only solution. 🙂 I guess I’ll have to do the deletes from work, where I do have those things installed.
Try Try again
Tomorrow night, I’ll try creating a new project that uses the agile template and see if everything migrates without me messing with anything other than user migration.