Improvements to baseless merge in TFS 2010 SP1

Buck Hodges

Starting with TFS 2010 SP1, there are two improvements to how baseless merges work: base file version and handling deleted files.

First is that if you specify a starting range for a baseless merge, we will now use that changeset as the base in the three-way content merge. That results in a vastly improved experience in merging file content for a baseless merge. For example, tf merge /baseless /v:1234~1234 $/ProjX/foo $/AcmeV2/foo or tf merge /v:1234~T $/ProjX/foo $/AcmeV2/foo.

The second is the handling of deletions. Before the change, items that are deleted in the source branch were not included in the baseless merge. That meant that if you had deleted obsolete files as part of your changes they would not get deleted in the target branch when doing a baseless merge. After the change, if a path is deleted in the source the corresponding path in the target will have a merge,delete conflict. Also, if a file is not deleted in the source but is deleted in the target, the target will get a merge,undelete conflict. The result is that you get a higher fidelity result in the target branch. This was made possible by the changes in TFS 2010 where merge lines up the items by path rather than by item ID.


Leave a comment

Feedback usabilla icon