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

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

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

3 ответа

Решение

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

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

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

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

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

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

Да, ты можешь. Проблема, о которой вы спрашиваете, была решена в 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

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

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

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

Другие вопросы по тегам