Сообщение об ошибке отсутствия пробелов при реинтеграции ветки в магистраль в Subversion 1.5
Я пытаюсь реинтегрировать ветвь разработки в багажник в моем репозитории 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 кажется правильным
Ответы
Ответ 1
Сначала вы должны объединить ревизии r280 с r324 из магистрали в свою ветку.
Кажется, что вы уже объединили r325 в свою ветку, однако --reintegrate должен получить все изменения до вашей последней версии, объединенной. Не должно быть пробелов.
Так вот немного Diag:
+----------------------> /branches/devel
/ / \<--merge not working!
--------/-------+--+---+-----+---------> trunk
| \ | / |
280 \ V / 325
V
missing sync merges from trunk to branch
Я думаю, что это ваша структура ветвей, поэтому вам нужно синхронизировать все изменения с магистрали на ваш филиал. Вы только слили r325, так что просто слейте r280-r324, и после этого вы должны быть в порядке, чтобы использовать --reintegrate
Ответ 2
Мы боролись с этой проблемой в течение нескольких недель, и мы наконец решили ее решить.
В нашем случае мы работали над ветвью, которая ежедневно сливалась со всеми версиями сундуков. Когда мы попытались реинтегрировать его (слились обратно в багажник), мы получили эту ошибку.
Когда мы пытались объединить недостающие диапазоны в наш филиал, мы получили сообщение о том, что слияние нечего. Это произошло в нескольких несвязанных ветвях и с разными файлами и папками.
Решение заключалось в том, чтобы добавить недостающие диапазоны в свойство svn: mergeinfo файла или папки в нашей ветке.
Для каждой строки "Отсутствующие диапазоны: путь: ревизия_range" в полученном сообщении:
- Изменить свойство svn: mergeinfo в файле/папке, упомянутой в
объединенная ветка
- Добавьте следующее: строка в конце значения свойства (например,/trunk/images/test: 280-324)
- Сохранить свойство SVN
Завершите все изменения и снова заново
Ответ 3
У меня была эта проблема, и в конечном итоге она была вызвана ошибочными свойствами SVN для папки в моей ветке.
Решение было простым - я слился с транка в свою ветку, используя конкретный номер ревизии, который, как сообщалось, отсутствовал, например
![enter image description here]()
И затем, указав, чтобы записать только слияние, например,
![enter image description here]()
Это действие правильно привело мою ветку в соответствие с транком, и моя последующая реинтеграция ветки в транк прошла успешно, без сообщения об ошибке отсутствующих диапазонов.
Этот метод позволяет избежать ручного редактирования любых свойств svn: mergeinfo для любых файлов/папок.
Ответ 4
Я прекратил получать эти проблемы, когда начал использовать параметр -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 -ignore-eol-style
Может быть, мне просто повезло, но все, кажется, работает лучше.
Чтобы найти точку ветвления для ветки, вы делаете svn log -stop-on-copy, а затем смотрите на самый последний revsion - это будет svn-копия, которая создала ветку.
Чтобы сделать это в linux, я делаю что-то вроде этого:
svn log --stop-on-copy svn://svn/project/trunk/topDir | grep '^ r' | хвост -1 | sed -e 's/^ r//1'-e' s/. *//g '
это должно печатать номер версии точки перехода.
Удачи.
Ответ 5
Это не ответ, а уточняющий вопрос.
Мое сообщение об ошибке:
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 в папке схем, содержимое выглядит следующим образом
/branches/repos_develop_os/trunk_branch-os/schemas:3329
/trunk/schemas:2669-2673,2682,2720,2736,2878,2960,3003,3057
Я не уверен, как я должен изменить этот контент. Похоже, все пропущенные диапазоны есть.
Ответ 6
У меня просто была эта проблема, и для меня это работало прежде всего в том, чтобы синхронизировать ветвь с Trunk, чтобы Branch мог получать последние обновления из магистрали. После этого я попробовал реинтегрировать ветку в Trunk и работал нормально.