Сообщение об ошибке при реинтегрировании ветки в магистраль в Subversion 1.5

StackOverflow https://stackoverflow.com/questions/2472249

Вопрос

Я пытаюсь реинтегрировать ветку разработки в магистраль в моем репозитории Subversion 1.5.Перед этой операцией я объединил все изменения из магистрали в ветку разработки.Теперь, когда я пытаюсь реинтегрировать изменения из ветки, я получаю следующее сообщение об ошибке:

Command: Reintegrate merge https://dev/svn/branches/devel into C:\trunk  
Error: Reintegrate can only be used if revisions 280 through 325 were previously   
Error: merged from https://dev/svn/trunk to the reintegrate   
Error: source, but this is not the case:  
Error:   branches/devel/images/test  
Error:     Missing ranges: /trunk/images/test:280-324  
...

Затем сообщение продолжает жаловаться на некоторые папки в моем проекте.Но когда я снова пытаюсь объединить изменения из магистрали в ветку разработки, TortoiseSVN сообщает мне, что объединять нечего (поскольку я уже объединил все изменения ранее):

Command: Merging revisions 1-HEAD of https://dev/svn/trunk into C:\devel, respecting ancestry  
Completed: C:\devel  

Я пытаюсь следовать инструкциям отсюда: http://svnbook.red-bean.com/en/1.5/svn.branchmerge.basicmerging.html, но в решении такой проблемы ничего нет.

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

Смотрите также

svn merge with --reintegrate жалуется на отсутствие диапазонов, но mergeinfo кажется правильным

Это было полезно?

Решение

Сначала вам необходимо объединить ревизии с r280 по r324 из ствола в вашу ветку.

Кажется, вы уже объединили r325 в свою ветку, однако --reintegrate необходимо получить все ревизии до вашей последней ревизии объединены.Не должно быть никакого разрыва.Итак, вот небольшая диаграмма:

           +----------------------> /branches/devel
          /                    /   \<--merge not working!
 --------/-------+--+---+-----+---------> trunk
         |       \  |  /      |
        280       \ V /      325
                    V
                  missing sync merges from trunk to branch

Я думаю, что это ваша структура ветки, поэтому вам нужно синхронизировать все изменения из ствола в вашу ветку.Вы объединили только r325, поэтому просто объедините r280-r324, и после этого вы сможете использовать --reintegrate

Другие советы

Мы боролись с этой проблемой в течение нескольких недель и, наконец, решили ее.

В нашем случае мы работали над веткой, которая ежедневно объединялась со всеми магистральными версиями.Когда мы попытались реинтегрировать его (объединить обратно в trunk), мы получили эту ошибку.Когда мы попытались объединить недостающие диапазоны с нашей веткой, мы получили сообщение о том, что объединять нечего.Это произошло в нескольких несвязанных ветвях и с разными файлами и папками.

Решение состояло в том, чтобы добавить недостающие диапазоны в свойство svn: mergeinfo файла или папки в нашей ветке.

Для каждого "Отсутствующего диапазона:путь: revision_range" строка в полученном вами сообщении:

  • Отредактируйте свойство svn: mergeinfo в файле / папке, упомянутых в в объединенная ветка
  • Добавьте следующее :строка в конце значения свойства (например,/магистраль/изображения/тест: 280-324)
  • Сохраните свойство SVN

Зафиксируйте все изменения и реинтегрируйте снова

У меня была эта проблема, и в конечном итоге она была вызвана ошибочными свойствами SVN для папки в моей ветке.

Решение было простым: я объединил ствол со своей веткой, используя конкретный номер версии, который был указан как отсутствующий, например.

enter image description here

А затем указать только запись слияния, например.

enter image description here

Это действие правильно привело мою ветку в соответствие с магистралью, и моя последующая реинтеграция ветки в магистраль прошла успешно без сообщения об ошибке отсутствия диапазонов.

Этот метод позволяет избежать ручного редактирования каких-либо свойств svn:mergeinfo для любых файлов/папок.

У меня перестали возникать эти проблемы, когда я начал использовать опцию -r для команды svn merge и не пытался выполнить --reintegrate до тех пор, пока я не объединился без нее.Я использую svn 1.6.1.

Вот что я делаю:
1.при объединении из ветки в магистраль или из магистрали в ветку я использую опцию -r следующим образом:

 cd branchWorkArea/topDir
 svn merge -r<branchPoint>:HEAD [otheroptions] svn://svn/project/trunk/topDir
  1. когда я разрешу любые конфликты и протестирую свой код, я выполняю слияние с веткой, а затем объединяю ветку с магистралью, используя те же базовые параметры (особенно -rBranchPoint: HEAD)

  2. когда магистраль была протестирована и зафиксирована, я использую опцию --reintegrate для закрытия ветки.Убедитесь, что вы также используете опцию -rbranchPoint:HEAD в нем.

Для других вариантов я всегда использую

--бесконечность глубины (значение по умолчанию равно бесконечности в 1.6.2, но не ранее)
-x -b -x -w -игнорировать-в стиле eol

Может быть, мне просто повезло, но, похоже, все стало работать лучше.

Чтобы найти точку разветвления для ветки, вы выполняете svn log --stop-on-copy, затем просматриваете самую последнюю версию - это будет копия svn, которая создала ветку.

Чтобы сделать это в linux, я делаю что-то вроде этого:

svn log --остановка при копировании svn://svn/project/trunk/topDir |
grep '^r' | хвост -1 | sed -e 's/^r//1'-e 's/ .*//g'

при этом должен быть выведен номер редакции точки разветвления.

Удачи вам

Это не ответ, а уточняющий вопрос.

Мое сообщение об ошибке выглядит следующим образом:

Reintegrate can only be used if revisions 2669 through 3403 were previously merged from
https://../schemas
to the integrate source, but this is not the case:
trunk/schemas:
Missing ranges:
../schemas:2673,2682,2720,2736,2878,2960,3003,3057

Я объединил изменения, используя решение, предоставленное @Greg Trevellick, все еще получая сообщение об ошибке.

Когда я открываю свойство svn: mergeinfo после ответа @pako в папке schemas, содержимое выглядит следующим образом

/branches/repos_develop_os/trunk_branch-os/schemas:3329
/trunk/schemas:2669-2673,2682,2720,2736,2878,2960,3003,3057

Я не уверен, как мне следует изменять этот контент.Похоже, что все недостающие диапазоны налицо.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top