TortoiseSVN Tree Conflict: не удается выбрать удаленный файл

Здесь сценарий:

  • User1, Branch1: добавляет "abc.def" ; фиксаций.
  • User2, Branch2: добавляет "abc.def" (то же имя файла, но более подробно в файл); фиксаций.

Теперь User1 хочет объединить обновленную версию файла "abc.def" . Итак, используя TortoiseSVN 1.7.10, User1 запускается в рабочей копии Branch1, выбирает Merge...Reintegrate a Branch, затем выбирает Branch2 и выбирает Merge. Как и ожидалось, результат "Дерево конфликтов", с этим текстом:

Последняя операция слияния попыталась добавить файл 'abc.def' из Branch2, но файл уже был добавлен локально. Как вы хотите разрешить этот конфликт?

Но единственным выбором является единственная кнопка с меткой Keep the local file. Невозможно выбрать удаленный файл, который действительно нужен User1.

введите описание изображения здесь

Что я делаю неправильно здесь и как его исправить? Более конкретно, как мне получить версию файла User2 в Branch1?

(Конечно, я уверен, что User1 может вручную удалить файл до слияния, но это уничтожает любую историю, которую UserI может пожелать сохранить. Кроме того, это просто неуклюжий рабочий процесс, особенно когда в этом затруднительном положении есть многочисленные файлы.)

К сожалению, этот сценарий даже не упоминается в документации TortoiseSVN о конфликтах дерева

ОБНОВЛЕНИЕ:

В дополнение к выбору "Reintegrate a Branch" я также попробовал "Merge a Range of Revisions" и "Merge two different trees". В последнем случае я выбрал удаленную ветвь (Branch2) как "Старт", а локальную ветвь - как целевую (Branch1, выбирая Revision до добавления файла). Я получил тот же результат во всех случаях: Tree Конфликт без опции выбора версии файла User2.

ОБНОВЛЕНИЕ # 2:

В соответствии с документацией должен быть установлен флажок в диалоговом окне слияния с названием Merge non-interactive ", который, если он не установлен, предположительно открывает диалоговое окно" Диалог обратного вызова слиянием" во время слияния. Тем не менее, я не могу найти такой флажок в процессе слияния. Где это?

Ответ 1

Мне удалось слить из одной ветки в другую в версии 1.9 TortoiseSVN со следующей процедурой.

Настройка

С тестовым репозиторием я сделал следующие шаги:

  • Создайте ветку, "сначала"

  • Создайте файл "doc.txt" с содержимым "FIRST" в новой ветке first doc

  • Добавить и перенести файл в новую ветку

  • Создайте ветку, "второй"

  • Создайте файл "doc.txt" с содержимым "SECOND" в этой ветке second doc

  • Добавить и перенести файл в новую ветку

Итак, моя структура выглядит так:

branches/
    first/
        doc.txt => "FIRST"
    second/
        doc.txt => "SECOND"

Слияние

В этом примере моя цель - получить содержимое second/doc.txt в первую ветвь.

  • Щелкните правой кнопкой мыши папку ветвления first и выберите TortoiseSVN > Merge...

  • Выберите "Слить два разных дерева"
    диалог слияния

  • Заполните поле "От" URL-адресом для /branches/first и поле "Кому" с URL-адресом для /branches/second.
    введите описание изображения здесь
    (Это то, где я изначально сработал - я думал, что это будет обратное! Документы объясняют: "Это может звучать неправильно, но помните что соединительная линия является начальной точкой, к которой вы хотите добавить изменения ветки." )

  • Нажмите "Далее" и попробуйте тестовое слияние, если хотите. Он должен показать, что "doc.txt" заменен, без конфликтов деревьев. В этом примере параметры слияния по умолчанию были в порядке.
    параметры слияния

  • Сделайте слияние и проверьте содержимое first/doc.txt - теперь он должен читать "ВТОРОЕ".
    merge results

  • Запустите обновление и затем скопируйте папку first, чтобы сохранить слияние в репозитории!
    commit results

Полный журнал:
журнал репозитория

Ответ 3

Появится диалог под названием

Диалог обратного вызова слияния конфликтов

введите описание изображения здесь

Относительно этой проблемы:

Диалог обратного вызова слияния конфликтов должен появиться - при слиянии нескольких версий с помощью "Объединить ряд изменений" - при слиянии через "Реинтегрировать ветвь"

в настоящий момент диалоговое окно Callback Dial Merge Conflict появляется только в первый случай.

Он будет включен в предстоящую версию 1.6.0.

Это позволяет вам выбрать изменение репозитория вместо вашего