SVN - ошибка слияния реинтеграции: «должно быть связано с наследством» - PullRequest
62 голосов
/ 29 января 2009

Использование TortoiseSVN - при использовании Test Merge появляется сообщение об ошибке "http://mysvnserver/svn/main/branches/ProjectA должно быть связано с http://mysvnserver/svn/main/trunk/ProjectB"

Что я могу сделать, чтобы решить эту проблему?

Ответы [ 9 ]

69 голосов
/ 08 июня 2011

Я только что прошел похожую проблему, хотел добавить проблему и решение, которое я нашел. Ветвь была сделана из ПОДЛОЖНИКА ствола, а не всего дерева. Таким образом, когда я пытался реинтегрироваться, я не соответствовал иерархии. Простая реструктуризация интегрирования в нужную подпапку моего транка WD позволила продолжить процесс.

Добавление в надежде, что это может помочь кому-то, кто попадает в этот Q / A. :)

17 голосов
/ 29 января 2009

Дай угадаю: проекты не связаны? Посмотрите историю, если один из них когда-либо был разветвленным или нет.

Немедленное решение: либо объединить для каждой руки, либо попробовать командную строку с "svn merge --ignore-ancestry"

8 голосов
/ 20 апреля 2012

Как упоминалось davebytes , эта проблема может возникать, когда вы переходите 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. Вместо этого вы должны попытаться описать в этом сценарии, что вы пытаетесь суммировать изменения, произошедшие с r100 до r200, равные branches\Y, и применить эти изменения к trunk\X\Z\.

.

В TortoiseSVN это сценарий слияния двух разных деревьев в вашу локальную рабочую копию trunk\X\Z, с r100 branches\Y, заданным как «от», и r200 с branches\Y, заданным как "до".

5 голосов
/ 05 марта 2014

Мы столкнулись с этой проблемой из-за следующего:

Создал папку с обозревателем репозитория TortoiseSVN и использовал ее как ветку. После этого мы попытались объединить созданную вручную папку в рабочую папку.

Решение: сначала не создавайте ветку вручную, вместо этого используйте TortoiseSVN -> Branch / tag ..., чтобы создать ветку.

Надеюсь, это будет полезно.

2 голосов
/ 27 февраля 2017

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

Пример,

В моей ветке у меня есть структура проекта:

 -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

Итак, я нажал кнопку «Объединить».

1 голос
/ 25 июня 2015

Эта ошибка может возникнуть, если у вас есть файл с именем, точно таким же, как одна из ветвей (или ствола):

# 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 .

Это пример из реальной жизни, он стоил мне пару очень неприятных часов. (

0 голосов
/ 24 ноября 2017

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

0 голосов
/ 17 мая 2017

У меня была та же ошибка, и причина была в разрешениях.

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

Вот структура с разрешениями (r = чтение, w = запись):

багажник (р) развиваться QA (RW) ветви featureBranch1 (rw)

В этом случае, разработка была создана из ствола, QA от разработки и FeatureBranch1 от разработки. Тот факт, что он попытался реинтегрировать featureBranch1 в QA, который был ветвью, созданной для разработки, и у него нет доступа в записи для разработки, является в нашем случае проблемой, почему он получает это сообщение при попытке реинтегрировать featureBranch1 в QA.

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

0 голосов
/ 08 июля 2015

Я сливался с другим проектом. Вызвала эту проблему. Я слил с правильной веткой потом все заработало нормально. Моя плохая, дислексия

...