Вот сценарий:
- User1, Branch1: добавляет abc.def; совершает.
- User2, Branch2: добавляет abc.def (то же имя файла, но больше деталей в файле); совершает.
Теперь User1 хочет объединить обновленную версию файла «abc.def». Итак (используя TortoiseSVN 1.7.10), Пользователь1 запускается в Рабочей копии Branch1, выбирает Merge...
-> Reintegrate a Branch
, затем выбирает Branch2 и выбирает Merge
. Как и следовало ожидать, в результате будет "конфликт деревьев" с таким текстом:
Последняя операция слияния попыталась добавить файл abc.def из Branch2, но файл уже был добавлен локально. Как вы хотите разрешить этот конфликт?
Но единственный выбор - это одна кнопка с надписью Keep the local file
. Нет возможности выбрать удаленный файл, который действительно нужен пользователю User1.
Что я здесь делаю не так и как это исправить? В частности, как мне получить версию файла User2 в Branch1?
(Конечно, я уверен, что User1 мог бы вручную удалить файл перед слиянием, но это уничтожит любую историю, которую User1, возможно, хотел сохранить. Плюс это просто неуклюжий рабочий процесс, особенно когда в этой затруднительной ситуации имеется множество файлов.)
К сожалению, этот сценарий даже не упоминается в документации TortoiseSVN по конфликтам деревьев.
ОБНОВЛЕНИЕ:
В дополнение к выбору «Reintegrate a Branch
» я также пробовал «Merge a Range of Revisions
» и «Merge two different trees
». В последнем случае я выбрал удаленную ветвь (Branch2) в качестве «Start», а локальную ветвь - в качестве цели (Branch1; выбор версии до для добавления файла). Я получил одинаковый результат во всех случаях: конфликт дерева без возможности выбора версии файла User2.
ОБНОВЛЕНИЕ №2:
Согласно документации, должен быть «флажок в диалоговом окне выполнения слияния с именем Merge non-interactive
», который, если не отмечен, якобы открывает «Диалог обратного вызова конфликта слияния» во время слияния. Однако я не могу найти такой флажок в процессе слияния. Где это находится?