SVN - ошибка слияния реинтеграции: "должно быть связано с наследством"
Использование TortoiseSVN - когда я использую Test Merge, я получаю сообщение об ошибке " http://mysvnserver/svn/main/branches/ProjectA должен быть связан с http://mysvnserver/svn/main/trunk/ProjectB"
Что я могу сделать, чтобы решить эту проблему?
9 ответов
Я только что прошел похожую проблему, хотел добавить проблему и решение, которое я ударил. Ветвь была сделана из ПОДЛОЖНИКА ствола, а не всего дерева. Таким образом, когда я пытался реинтегрироваться, я не соответствовал иерархии. Простая реструктуризация интегрирования в нужную подпапку моего транка WD позволила продолжить процесс.
Добавление в надежде, что это может помочь кому-то, кто попадает в этот Q/A.:)
Дай угадаю: проекты не связаны? Посмотрите историю, если один из них когда-либо был разветвленным или нет.
Немедленное решение: либо объединить для каждой руки, либо попробуйте командную строку с "svn merge --ignore-ancestry"
Как упоминалось ранее, эта проблема может возникнуть при переходе trunk\X
в branches\Y
, но потом двигаться X
в новую папку Z
т.е. trunk\X\Z
,
Если вы просто попытаетесь объединить изменения на branches\Y
в trunk\X
вы получите много конфликтов; если вы просто попытаетесь слить branches\Y
в trunk\X\Z
, вы получите ошибку, связанную с предками.
Но руководство SVN описывает основную проблему: svn merge
действительно должен называться svn diff-and-apply
, Вместо этого вы должны попытаться описать в этом сценарии, что вы пытаетесь суммировать изменения, которые произошли от 100 до 200 branches\Y
и применить эти изменения к trunk\X\Z\
,
В TortoiseSVN это сценарий слияния двух разных деревьев с вашей локальной рабочей копией trunk\X\Z
с r100 из branches\Y
установить как "от", а r200 из branches\Y
установить как "до".
Мы столкнулись с этой проблемой из-за следующего:
Создал папку с браузером репозитория TortoiseSVN и использовал ее как ветку. После этого мы попытались объединить созданную вручную папку в рабочую папку.
Решение: сначала не создавайте ветку вручную, вместо этого используйте TortoiseSVN -> Branch/tag..., чтобы создать ветку.
Надеюсь, это будет полезно.
Сначала я попытался объединиться в корневой папке и получил ошибку, затем я перешел к определенной папке, в которую хотел объединиться, и затем выбрал нужную папку для объединения.
Пример,
В моей ветке у меня есть структура проекта:
-Root
- Code
- DB
Я создал тег и перешел в папку БД тега. Теперь я хочу перенести изменения тега в ветку. Итак, я переключился на свою ветку и попытался объединиться и получил ошибку "должно быть связано с наследством".
Таким образом, решение было,
I browsed to "DB" folder in branch, right click and select Tortoise SVN->Merge-> Merge a range of revisions ->
Теперь из URL-адреса для слияния я выбрал:
the "DB" folder from my tag.
Then, "test branch". Everything worked fine :D
Итак, я нажал кнопку "Слить".
Эта ошибка может произойти, если у вас есть файл с именем точно так же, как одна из ветвей (или ствола):
# svn switch ^/trunk
Updated to revision 123.
# ls
file1
file2
v1
# svn merge --reintegrate ^/branches/v1
svn: E195016: ^/branches/v1@123 must be ancestrally related to ^/trunk/v1@123
Чтобы решить эту проблему, добавьте в команду текущий каталог (обратите внимание на точку):
# svn merge --reintegrate ^/branches/v1 .
Это пример из реальной жизни, он стоил мне пару очень неприятных часов.:(
У меня такая же проблема. Я исправил это правильно на CD, на котором я слил. Я слился в каталоге пути к проекту, а не в каталоге пути к транку (кто является фактическим предком).
Я сливался с другим проектом. Вызвала эту проблему. Я слил с правильной веткой потом все заработало нормально. Моя плохая, дислексия
У меня была та же ошибка, и причина была в разрешениях.
Проблема заключалась в том, что один разработчик пытается объединить изменения из одной ветви, к которой у него есть права на чтение / запись, с другой, у него также есть права на чтение / запись, но последняя - это ветка, созданная из другой ветви, к которой у него есть доступ только для чтения.
Вот структура с разрешениями (r = чтение, w = запись):
ствол (r) развивать (r) QA (rw) ответвления featureBranch1 (rw)
В этом случае, разработка была создана из ствола, QA от разработки и FeatureBranch1 от разработки. Тот факт, что он попытался реинтегрировать featureBranch1 в QA, который был ветвью, созданной для разработки, и у него нет доступа в записи для разработки, является в нашем случае проблемой, почему он получает это сообщение при попытке реинтегрировать featureBranch1 в QA.
Сразу после предоставления ему доступа в записи для разработки, сообщение исчезнет.