TFS How does merging work?

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 , поскольку C3 - это ревизия общего предка, а C10 и C7 - концы двух моих веток соответственно. Однако мой инструмент слияния показывает мне C10 | C9 | C7 .

Мой инструмент слияния настроен на отображение % 1 (OriginalFile) |% 3 (BaseFile) |% 2 (Modified File) , поэтому это говорит мне, что TFS выбрала C9 в качестве базовой версии.

Это совершенно неожиданно и полностью противоречит тому, как я привык работать с слиянием в Mercurial или Git. Я что-то сделал не так или TFS пытается свести меня с ума с помощью слияния?

Это стандартное поведение слияния TFS? Если да, то можете ли вы объяснить, почему они решили реализовать это таким образом?

Я использую TFS 2008 с VS2010 в качестве клиента.

9
задан Johannes Rudolph 24 February 2011 в 15:23
поделиться