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.

Сразу после предоставления ему доступа в записи для разработки, сообщение исчезнет.

Другие вопросы по тегам