In git's culture, branching is horribly cheap.  Everyone's workspace has more than one local branch, and it's okay to have many more on the shared repo server.  We get branching, no pun intended.  Powerful, cheap, and quickly merged.

TFS as I'm using it now (TFS 2010 in the day job) doesn't get it.  Often when I talk about the advantage branches would get us, I'm told to "make a shelfset."  I already knew you had to start at the same version of the app as the shelfset for it to work, but hadn't really played that forward until recently.

Apparently you can’t merge multiple shelfsets (or shelfsets into code that has edits) in stock Visual Studio.  It requires some Power Tools Toys [sic].

That’s a good, technical reason to push towards git.

To begin working on the feature I needed to pull down both shelves and have them merged. When I began to merge the second shelf I got an unexpected error:

...it was telling me that there were items in the shelf that were trying to be overlaid onto files with pending changes. The obvious guess is that TFS would do the normal merge operation just as if you had done a "get latest", but that's not the case.

This caused the merge issue to abort and rollback any files that had been brought down from the second shelf. This is a huge pain because both shelve sets are pretty large and encompass several projects in varying levels of the folder structure. Merging these files manually would have taken HOURS.

With some help from the MSDN forums, I found this method of resovling my problem...
First you have to install the Team Foundation Power Toys...
http://msdn2.microsoft.com/en-us/teamsystem/aa718351.aspx

Labels: ,