Подтвердить что ты не робот

SVN - Ошибка слияния с реинтеграцией: "должно быть связано с системой"

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

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

4b9b3361

Ответ 1

Я только что прошел через аналогичную проблему, хотел добавить проблему и решение, которые я ударил. Филиал был изготовлен из СУБПОДЕРНИКА ствола, а не всего дерева. Таким образом, когда я пытался реинтегрироваться, я не соответствовал иерархиям. Просто реструктуризация интеграции для соответствующей подпапки моего ствола WD позволила продолжить процесс.

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

Ответ 2

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

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

Ответ 3

Как упоминалось davebytes, эта проблема может возникнуть, если вы введете trunk\X в branches\Y, а затем переместите X в новую папку Z, т.е. trunk\X\Z.

Если вы просто попытаетесь объединить изменение на branches\Y в trunk\X, у вас будет много конфликтов; если вы просто попытаетесь объединить branches\Y в trunk\X\Z, вы получите сообщение об ошибке "ancestrally related".

Но, руководство SVN описывает основную проблему: svn merge действительно следует называть svn diff-and-apply. То, что вы должны пытаться описать в этом сценарии, заключается в том, что вы пытаетесь суммировать изменения, произошедшие от r100 до r200 branches\Y, и применять эти изменения к trunk\X\Z\.

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

Ответ 4

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

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

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

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

Ответ 5

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

Пример

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

 -Root    
    - Code
    - DB

Я создал тег и был изменен в папку 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

Итак, я нажал кнопку "Слияние".

Ответ 6

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

# svn switch ^/trunk
Updated to revision 123.
# ls
file1
file2
v1
# svn merge --reintegrate ^/branches/v1
svn: E195016: ^/branches/[email protected] must be ancestrally related to ^/trunk/[email protected]

Чтобы решить эту проблему, добавьте текущий каталог в команду (обратите внимание на точку):

# svn merge --reintegrate ^/branches/v1 .

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

Ответ 7

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

Ответ 8

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

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

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

trunk (r) развивать (r) QA (rw) ветки  featureBranch1 (rw)

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

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

Ответ 9

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