June 18th, 2005

Using baseless merge with converted VSS shared folders

Buck Hodges
Director of Engineering

In this forum thread, http://forums.microsoft.com/msdn/ShowPost.aspx?PostID=18817, a question was asked about using baseless merge with converted VSS shared folders.

[UPDATE Aug. 22, 2006]  The GUI will not show the relatives of baseless merges, only explicit branch relationships.

[UPDATE Feb. 6, 2006]  I’m happy to say that baseless merges DO record history in the RC and RTM releases of TFS.  I wouldn’t normally go back and edit a post that’s this old, but since people will find it using search engines, I want it to reflect the final v1 behavior.

[UPDATE June 27]  Unfortunately, it doesn’t work this way currently.  I was informed this morning by the dev responsible for merge that merge history is no longer recorded for baseless merges.  This means there’s currently no way to “re-connect” a branch source and target after import using merge.

Given that, the only choice is to delete the target directory, check in the deletion, branch the source of the share to the target, and check it in.  With that, you’ll have the source and target properly related for merging.

Hopefully, the baseless merge will record the history before we ship (we’re discussing it).

[UPDATE July 15]  Baseless merge will not record merge history in version 1.

The VSSConverter doesn’t convert shared folders as branches.  Thus, there’s no way to merge changes between what the “source” of the converted VSS share and the “target” of the share.  The source and the target have no branch or merge history that connects them.

This is where the baseless merge comes in.  The purpose of the baseless merge is to establish a merge history between the source and destination.  A baseless merge creates merge history where there was none before.  In a normal dev scenario where you aren’t converting from VSS, branching is what establishes the relationship to allow merging changes between the source and target.

After the conversion is complete, perform a baseless merge between the source and the target of each converted VSS share.  Check in the baseless merge.  Now the source and the target are related through merge history.  As the source (or target) change, the changes can be propagated using the regular (not baseless) merge (command line or the GUI merge wizard).

So, you only need to do the baseless merge once per shared source and target pair to establish the merge history.

You can’t perform a baseless merge from the GUI.  You must use the command line.  The command sequence looks like the following.

tf merge /baseless shared-source shared-target

tf checkin

After checking in the baseless merge, the source and target are related as though the target had been branched from the source, though the GUI merge wizard will not show that (it queries only for literal branch relationships).

You can find the command line documentation at http://blogs.msdn.com/buckh/articles/category/9194.aspx.

Author

Buck Hodges
Director of Engineering

Director of Engineering, Azure DevOps

0 comments