TFS - необоснованное слияние и слияние из строя
У нас сложная ситуация с нашими филиалами на TFS 2012, и теперь мы не совсем уверены, что будет результатом наших действий.
Проблемная структура филиала выглядит следующим образом:
/B----2-------
/
A -------1-----------
\
\C---3--
Псевдосхема приблизительно правильна по времени - сначала ветвь B была разветвленной от A, а затем была создана ветвь C. Числа - это рассматриваемые наборы изменений (на самом деле наша проблема включает в себя несколько наборов изменений в каждой ветви, но я упростил диаграмму).
Мы хотели объединить набор изменений 3 из C в ветвь B. Visual Studio предупредила нас о том, что будет выполнено безосновательное слияние (очевидно, потому что ветви B и C являются братьями и сестрами, а не parent-child). Предупреждение было похоже на это:
Мы продолжили слияние. Затем в какой-то момент один разработчик пришел к выводу, что мы забыли обновить ветку B из ветви A и что нам нужны изменения из набора изменений 1 в нашей ветви B. Но проблема в том, что в наборе изменений 1 есть несколько строк кода, которые впоследствии были изменены в наборе изменений. 3 (ветка С), которую мы слили.
Теперь вопрос в том, что произойдет с ветвью B, когда мы объединяем набор изменений 1 из A в B после того, как мы выполнили необоснованное объединение набора изменений 3 из C в B?
Будет ли TFS достаточно умным, чтобы сохранить изменения от новейшего набора изменений 3, когда он обнаружит конфликтующие строки кода набора изменений 1, даже после того, как мы произвели необоснованное слияние?
PS Мы учимся на этой ошибке и постараемся избежать необоснованного слияния в будущем...
1 ответ
Из вашей диаграммы, похоже, что 1 уже включен в Ветвь C. Поэтому, когда вы переходите от "C" к "B", изменения уже будут включать изменения из набора изменений 1.