Объединить последнюю версию ветви с root с помощью Team Foundation Version Control в Team Foundation Server - PullRequest
0 голосов
/ 14 января 2020

У нас возникают проблемы при попытке выполнить слияние с помощью Team Foundation Version Control из Visual Studio 2017, и мы не знаем, возможно ли это или даже целесообразно сделать так, как мы хотим.

Я собираюсь объяснить упрощенную версию моей проблемы:

У нас есть ветвь root в Source Control, давайте назовем ее Root, и у нас есть ветвь Root, которую я буду Вызовите Branch.

Мы вносим изменения в Branch и, когда мы уверены, что хотим их внести на Root, мы объединяем ветвь с Root (мы выполняем обратную интеграцию). Дело в том, что в прошлом мы проводили некоторое слияние, когда мы выбрали только подмножество наборов изменений в Branch, чтобы объединить их в Root.

Теперь, после некоторых других изменений в Branch, мы знаем, что последняя версия У нас работает Branch, и мы хотим объединить эту версию с Root.

. Проблема в том, что когда мы выполняем слияние, он принимает версию файла, которая была в последней ревизии, изменил этот файл И этот набор изменений не был объединен в Root. Но мы знаем, что последняя версия этого файла в Branch - это та версия, которую мы хотим, даже если она не появляется, потому что набор изменений, который позволил ему перейти в это состояние, мог быть ранее объединен (фактически, большинство элементов связи, последние версия этого файла в Branch и Root идентичны, и мы не хотим изменять это).

Пример:

Мы превращаем Changeset 1 в Branch и объединяем его в Root.

Мы превращаем Changeset 2 в Branch, модифицируя File1 (но не объединяем его в Root).

Мы превращаем Changeset 3 в Branch, снова модифицируя File1, и мы объединить его в Root. Теперь Branch и Root имеют одинаковую версию File.

Мы превращаем Changeset 4, 5, 6 в Branch, не связанную с File1.

Теперь мы хотим объединить последнюю версию версия любого файла, КАК ЕСТЬ СЕЙЧАС в Branch, в Root.

Но если я попытаюсь объединить Branch в Root, он выдаст сообщение о том, что существует конфликт, и что он покажет в Средство разрешения конфликтов:

File1, как это было после Changeset 2 в качестве источника (то есть версии файла, какой она была после того, как последняя Changeset не была объединена в Root), и

File1 в том виде, в котором он находится в Root в качестве цели (и это точно та же версия File1, что и у меня в последней версии Branch, и я хочу сохранить этот путь).

Кстати, не имеет значения, помечаем ли мы «Выбрать все изменения до ...» последней версией, набором изменений (используя самую последнюю), датой (сейчас), рабочей областью и т. Д. c .. или «Выбранные наборы изменений». «и затем мы выбираем все (конечно, ранее объединенные не появляются в любом случае здесь). Это какой-то способ сказать Source Control, что мы хотим объединить последнюю версию каждого файла в Branch в Root, независимо от того, была ли слияние ранее слито или нет? Имеет ли все это смысл или я что-то упускаю?

1 Ответ

0 голосов
/ 15 января 2020

Механизм слияния TFS использует историю, а не содержимое файла. Вы можете проверить команду tf merge /candidate, чтобы получить список наборов изменений в источнике, которые еще не были объединены в пункт назначения. И используйте tf merge /version для объединения изменений. Проверьте ссылку ниже:

https://docs.microsoft.com/en-us/azure/devops/repos/tfvc/merge-command?view=azure-devops

Кстати, всегда будет такая ситуация, что вам придется вручную объединить.

...