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?
I had to use tfs paths for the two branches. Steps were: add both branches to the desired workspace; get latest; open a Windows powershell in the target folder. Get tfs paths
Then use $paths for the branches. Same changeset number between the tilde ment baseless merge for one changeset.
More here -- http://blogs.msdn.com/b/bharry/archive/2011/08/31/merge-enhancements-in-tfs-11.aspx
If you need to merge a specific changeset you need to use the following statement:
(It means ONLY changeset C95654).
The commandline you are using means every changeset before and with C95654.