Использование TortoiseSVN - когда я использую Test Merge, я получаю ошибку " http://mysvnserver/svn/main/branches/ProjectA должен быть связан с http://mysvnserver/svn/main/trunk/ProjectB"
Что я могу сделать, чтобы решить эту проблему?
Использование TortoiseSVN - когда я использую Test Merge, я получаю ошибку " http://mysvnserver/svn/main/branches/ProjectA должен быть связан с http://mysvnserver/svn/main/trunk/ProjectB"
Что я могу сделать, чтобы решить эту проблему?
Я только что прошел через аналогичную проблему, хотел добавить проблему и решение, которые я ударил. Филиал был изготовлен из СУБПОДЕРНИКА ствола, а не всего дерева. Таким образом, когда я пытался реинтегрироваться, я не соответствовал иерархиям. Просто реструктуризация интеграции для соответствующей подпапки моего ствола WD позволила продолжить процесс.
Добавляя надежды, это может помочь кому-то, кто попадает в этот Q/A.:)
Позвольте мне угадать: проекты не связаны? Посмотрите историю, если один из них когда-либо был разветвленным или нет.
Немедленное решение: либо слияние на руку, либо попытка командной строки с "svn merge --ignore-ancestry"
Как упоминалось 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
установлено как "на".
Мы столкнулись с этой проблемой из-за следующего:
Создал папку с браузером репо TortoiseSVN и использовал ее как ветку. Впоследствии мы попытались объединить созданную вручную папку в рабочую папку.
Решение: не создавайте ветвь вручную на первом месте, вместо этого используйте параметр TortoiseSVN → Branch/tag..., чтобы создать ветку.
Надеюсь, это будет полезно.
Сначала я попытался объединиться в корневую папку и получил ошибку, затем я просмотрел конкретную папку, в которой я хотел объединиться, а затем выбрал нужную папку для слияния.
Пример
В моей ветке у меня есть структура проекта:
-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
Итак, я нажал кнопку "Слияние".
Эта ошибка может возникнуть, если у вас есть файл с именем точно как одна из ветвей (или магистрали):
# 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 .
Это пример реальной жизни, это стоило мне пары очень неприятных часов.: (
Я сливался с другим проектом. Вызвал этот вопрос. Я слился с правильной ветвью, тогда она работала нормально. Моя плохая, дислексия
У меня была такая же ошибка, и причина была в разрешении.
Проблема заключалась в том, что один разработчик пытается интегрировать изменения из одной ветки, к которой он имеет доступ для чтения/записи, к другому, у которого он также имеет доступ для чтения/записи, но последний - это ветвь, созданная из другой ветки, у которой он просто имеет доступ на чтение.
Вот структура с разрешениями (r = read, w = write):
trunk (r) развивать (r) QA (rw) ветки featureBranch1 (rw)
В этом случае разработка была создана из магистрали, QA от разработки и featureBranch1 от разработки. Тот факт, что он пытается реинтегрировать featureBranch1 в QA, который был ветвью, созданной из разработки, и у него нет доступа к записи для разработки, в нашем случае является проблемой, почему он получает это сообщение при попытке реинтегрировать featureBranch1 в QA.
Сразу после предоставления ему доступа к записи для разработки сообщение исчезает.
У меня была та же проблема. Я исправил его правильно cd, на котором я слился. Я слиял в каталоге пути, чтобы проект не был в каталоге пути к магистрали (который является фактическим предком).