Реинтеграция веток Subversion в v1.6

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

Произошло какое-то урчание о том, что "это известная проблема и должна быть исправлена ​​в SVN 1.6". Это так? Это исправлено? Могу ли я повторно интегрировать несколько раз?

Ответ 1

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

  • svn merge --reintegrate <topic> <trunk>, как обычно. (=> r M)
  • svn merge --record-only -c M ^/<trunk> <topic>. Обратите внимание на параметр record-only.

Этап 2 по существу говорит ветке темы, чтобы рассмотреть часть слияния (пересмотр M, с шага 1), часть ее истории. Эта ревизия слияния - это та, которая обычно вызывает проблемы при реинтеграции; svn пытается отменить rM при повторной интеграции темы.

Итак, повторная реинтеграция работает, просто не автоматически.:)

В итоге я нашел это решение с помощью просвещающего сообщения о фиксации для источника svn и соответствующего test (найдите "def multiple_reintegrates" ). Это "умный трюк", который был обнаружен и использован svn-dev с текущими версиями. Он даже был добавлен в более позднюю документацию. Результат по-прежнему не так хорош, как свойства слияния DVCS, но он по крайней мере функциональный.

Единственный широкий недостаток (по открытая проблема по состоянию на 2 июня 2010 года) заключается в том, что, по-видимому, вывод svn log -g бесполезен. Я думаю, это риск.

Ответ 2

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

Но это не проблема. Поскольку филиал полностью интегрирован в багажник, просто удалите его и создайте новую ветку (с тем же именем) на своем месте.

Ответ 3

Да, вы можете. Проблема, о которой вы просили, была решена в Subversion 1.8.

Начиная с SVN 1.8 опция --reintegrate устарела, а реинтеграция слияний теперь выполняется автоматически (или автоматически ).). См. Примечания к выпуску Subversion 1.8 и прочитайте обновленные SVNBook 1.8 | Реинтеграция ветки:

Если вы решили не удалять свою ветку после реинтеграции ее в вы можете продолжать выполнять синхронизацию с соединительной линии, а затем снова разветките ветвь. Если вы это сделаете, только изменения, внесенные в ваша ветка после первой реинтеграции сливается с туловищем.

...

Только Subversion 1.8 поддерживает это повторное использование ветки функции. Ранее версии требуют некоторой специальной обработки до того, как ветвь функции может быть реинтегрировали более одного раза. См. Более раннюю версию этой главы Чтобы получить больше информации: http://svnbook.red-bean.com/en/1.7/svn.branchmerge.basicmerging.html#svn.branchemerge.basicmerging.reintegrate

ВАЖНО:. Вы должны обновить клиент и сервер Subversion, если вы все еще используете Subversion 1.7 или старше. Текущая и лучшая версия SVN составляет 1.9 по состоянию на 2016 год. Нет реальной причины использовать очень старые версии Subversion, такие как 1.5, 1.6 или даже 1.7. С версии 1.6 было много улучшений на стороне клиента и сервера!