In TFS, how do I do a baseless merge on specific changesets?

command-line, merge, tfs

Solution

If you need to merge a specific changeset you need to use the following statement:

tf merge /baseless /recursive /version:C95654~C95654 branch2 branch1

(It means ONLY changeset C95654).

The commandline you are using means every changeset before and with C95654.

Problem

As with most things in TFS you get more than you bargained for. In this case I am seeing more file changes during the merge than I was expecting. I have 2 child branches, lets be exciting and call them branch1 and branch2. Both have changes made to them since they were created. I need to take 12 specific changesets from branch2 and merge them into branch1. The changes from branch2 can not go back to the parent branch. So it's a straightforward case for a baseless merge, but the results are not what I expected. Taking the first changeset I ran the following command: ``` tf merge /baseless /recursive /version:C95654 branch2 branch1 ``` Changeset 95654 contains 12 changed files but after this command I get 56 edited files with conflicts. I was expecting to only merge the specified changeset from one branch to the other but it appears to have merged the entire folder. So why do I get 56 files changed rather than 12 when I specified the changeset? Also what can I do to restrict what is merged to only the contents of that changeset?

Original source