Как объединить набор изменений TFS из ветви A в ветку C. Ветвь A была объединена с ветвью B, и между A и C нет слияния - PullRequest
0 голосов
/ 15 мая 2018

Учитывая, что есть 3 ветви TFS - A, B и C. Вы можете объединить наборы изменений из A в B и из B в C. Но не можете объединить изменения из A в C. A -> B -> C. В ветви A есть несколько моих изменений, которые мне нужно объединить в ветку C. Все наборы изменений (от всех пользователей) уже были объединены из A в B.

Когда я пытаюсь объединиться из B в C, он не предоставляет список моих наборов изменений из A (только один большой набор изменений, имеющий все изменения за определенный период.) Когда я пытаюсь объединить свои конкретные наборы изменений из A в B, я не вижу их, потому что они уже являются частью ветви B.

Существует ли разумный способ объединить мои выбранные изменения из A или B в C и не прерывать их в будущем?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

Невозможно добиться слияния A -> B -> C и сохранить всю историю. Ветвление / перемещение приведет к потере истории папок , но история отдельных файлов фактически не будет потеряна. Он скрыт под маленькой стрелкой «развернуть меня» в крайнем левом углу строки истории файла. Разверните его в самой старой записи истории для файла или в любом месте, где вы его видите, и вы увидите историю этого отдельного файла также из старого расположения, которого больше не существует.

Однако, как вы можете видеть, объединить ветвь набора изменений - на основе истории папок. Например, первый набор изменений Branch B будет набором изменений XXX, разветвленным от BranchA.

Вы не сможете выбрать более старую ревизию BranchA


Решение

Чтобы добиться того, что вам нужно, просто объедините BranchA со старым набором изменений в Branch C Даже если вы получите предупреждение, как показано ниже:

Не существует отношения слияния между источником и целью. Будет выполнено безосновательное слияние .

Вам необходимо выполнить безосновательное слияние целевую ветвь в cmd.

tf merge /baseless <<source path>> <<target path>> /recursive

0 голосов
/ 15 мая 2018

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

Вы можете выполнить безосновательное слияние с помощью инструмента командной строки tf.Я не верю, что это возможно в Visual Studio IDE, хотя я могу ошибаться, поскольку прошло уже много лет с тех пор, как мне пришлось выполнять необоснованное слияние.

Я бы настоятельно рекомендовал оценить, что произошло в вашемрабочий процесс, который попал в ситуацию, когда вам нужно выполнить необоснованное слияние.Возможно, ваша стратегия ветвления неадекватна или ваш рабочий процесс лучше подходит для другой VCS, такой как Git.

...