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 при выполнении слияния. Возможно, история слияния является неполной (возможно, из-за черепахи или любого клиента для этого факта), и что-то, что было сделано на ветке, пытается применить к рабочей копии, когда вы выполняете "нормальное" слияние.