Сообщение об ошибке при реинтегрировании ветки в магистраль в Subversion 1.5
-
20-09-2019 - |
Вопрос
Я пытаюсь реинтегрировать ветку разработки в магистраль в моем репозитории 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 для папки в моей ветке.
Решение было простым: я объединил ствол со своей веткой, используя конкретный номер версии, который был указан как отсутствующий, например.
А затем указать только запись слияния, например.
Это действие правильно привело мою ветку в соответствие с магистралью, и моя последующая реинтеграция ветки в магистраль прошла успешно без сообщения об ошибке отсутствия диапазонов.
Этот метод позволяет избежать ручного редактирования каких-либо свойств 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
когда я разрешу любые конфликты и протестирую свой код, я выполняю слияние с веткой, а затем объединяю ветку с магистралью, используя те же базовые параметры (особенно -rBranchPoint: HEAD)
когда магистраль была протестирована и зафиксирована, я использую опцию --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
Я не уверен, как мне следует изменять этот контент.Похоже, что все недостающие диапазоны налицо.
У меня только что возникла эта проблема, и мне помогло, прежде всего, синхронизировать ветку с магистралью, чтобы ветка могла получать последние обновления из магистрали.После этого я попробовал реинтегрировать ветку в магистраль, и все работало нормально.