SVN слияние между двумя ветвями - "путь не найден"

У меня есть две ветки (дети ствола), которые нужно объединить в одну ветку для тестирования, но они не могут попасть в багажник. Обе ветки обновлены с помощью trunk @HEAD. Поэтому я хочу перейти от этого:

__________________trunk
  \___duck   \
              \___beaver

:

__________________________trunk
  \
   \______________platypus

Я создал дочернюю утконос из последней версии туловища, и я пытаюсь объединить утку и бобер в эту новую копию ствола:

svn copy ^/trunk ^/branches/platypus;
svn switch ^/branches/platypus;
svn merge --reintegrate ^/branches/duck;
svn merge --reintegrate ^/branches/beaver;

но слияния ops fail

svn: '/blah/!svn/bc/12047/repo/branches/duck' path not found

Если я попытаюсь - реинтегрировать утку (или бобр) в туловище, она отлично работает. Что мне здесь не хватает?

Ответы

Ответ 1

У меня была такая же ошибка, и я смог решить ее с помощью вручную, указав все номера ревизий, которые я хотел объединить, а не разрешить SVN. Это позволило продолжить слияние и вызвало у меня конфликты слияния, как и ожидалось.

Я использовал TortoiseSVN для выбора ревизий вручную, но, полагаю, используя командную строку SVN, это будет что-то вроде:

svn log --stop-on-copy https://svn.blah/svn/proj1/branches/xyz

Затем запишите все номера ревизий и объедините их все за один раз, например:

svn merge -c123,124,156,159 https://svn.blah/svn/proj1/branches/xyz

Ответ 2

У меня была аналогичная проблема, реинтегрировавшая ветвь, которая была объединена с другой ветвью (сама теперь реинтегрирована). Вот так:

-----------------------------r7------------------
  \                         /             /ERROR !svn/bc/4/repo/branches/duck' path not found
   r1----dinosaur--r5-------             /
                    \---duck------------r9

Кажется, что невозможно реинтегрировать утку, путь, который не найден ошибкой, жаловался на r4 - но я мог объединить конкретные ревизии (r5-r9) с утиной обратно в магистраль.

Ответ 3

Я решил это следующим образом:

  • Слияние проблемных ветвей в магистраль

  • Создан новый "консолидированный" ветвь из магистрали

  • Вернул ствол в состояние до шага 1 и совершил возврат

  • Объединенная запись только с шага 3 в ветку

  • Протестировано, объединив новую консолидированную ветвь назад в магистраль, но, конечно же, не зафиксировало ее

Конечный результат - это новая ветвь, содержащая изменения от ветвей признаков и магистрали без изменений (но, увы, с некоторыми новыми записями в журнале).

Ответ 4

Попробуйте использовать опцию - ignore-ancestry при выполнении слияния. Возможно, история слияния является неполной (возможно, из-за черепахи или любого клиента для этого факта), и что-то, что было сделано на ветке, пытается применить к рабочей копии, когда вы выполняете "нормальное" слияние.