TFS How does merging work?

Posted by Johannes Rudolph on Stack Overflow See other posts from Stack Overflow or by Johannes Rudolph
Published on 2011-02-14T18:36:11Z Indexed on 2011/02/24 15:25 UTC
Read the original article Hit count: 289

Filed under:
|
|

I have a release branch (RB, starting at C5) and a changeset on trunk (C10) that I now want to merge onto RB.

The file has changes at C3 (common to both), one in CS 7 on RB, and one in C9 (trunk) and one in C10). So the history for my changed file looks like this:

    RB:       C5 -> C7
Trunk: C3 ->             C9 -> C10

When I merge C10 from trunk to RB, I'd expect to see a merge window showing me C10 | C3 | C7 since C3 is the common ancestor revision and C10 and C7 are the tips of my two branches respectively. However, my merge tool shows me C10 | C9 | C7.

My merge tool is configured to show %1(OriginalFile)|%3(BaseFile)|%2(Modified File), so this tells me TFS chose C9 as the base revision.

This is totally unexpected and completely contrary to the way I'm used to merges working in Mercurial or Git. Did I get something wrong or is TFS trying to drive me nuts with merging?

Is this the default TFS Merge behavior? If so, can you provide insight into why they chose to implement it this way?

I'm using TFS 2008 with VS2010 as a Client.

© Stack Overflow or respective owner

Related posts about tfs

Related posts about merge