Каковы различия между объединением ряда ревизий и реинтеграцией в SVN? - PullRequest
39 голосов
/ 04 июля 2011

Я прочитал некоторую документацию и блоги о разнице между объединением ряда ревизий и реинтеграцией, но я не получил ничего.

В чем разница при объединении, если я выбрал один или другой способ дляслияние с ветки на ствол?Почему объединение ряда ревизий в некоторых случаях не работает, но реинтеграция успешно объединяет ветвь в ствол?

Ответы [ 3 ]

36 голосов
/ 04 июля 2011

С одной стороны, способ, которым SVN вычисляет применяемые различия, отличается между двумя методами. Обычно, когда вы применяете диапазон ревизий от X до Y от магистрали к ветви, например, в режиме черрикования, SVN вычисляет различия между ревизиями от X до Y в магистрали и применяет их к ветке. Вы также можете сделать то же самое в другом направлении, применяя изменения от ветви к стволу таким образом.

Однако, когда вы реинтегрируете ветвь в ствол, SVN выполняет другой тип вычислений. Вместо того, чтобы вычислять разницу между ревизиями от X до Y в ветви и применять эти изменения к транку, SVN просто вычисляет разницу между всей веткой и транком. Предполагая, что вы усердно работали над обновлением ветки с изменениями, внесенными в ствол, тогда разница в расчете реинтеграции между стволом и ветвью будет точно всеми изменениями, внесенными в ветку, которые еще не внесены. в багажнике.

С документация SVN 1.6 (Реинтеграция филиала):

При объединении вашей ветви обратно в ствол, однако, основной математика совсем другая. Ваш ветвь функции теперь - путаница и дублированные изменения ствола и изменения в частной ветке, так что нет простой непрерывный диапазон ревизий скопировать. Указав --reintegrate вариант, вы спрашиваете Subversion, чтобы тщательно копировать только эти изменения, уникальные для вашей ветки. (И на самом деле, это делает это сравнивая последнее ствол дерева с последнее ветвь дерева: в результате разница именно твоя ветка изменения!)

Я не совсем уверен (я забыл за эти годы), но я думаю, что в предыдущих версиях SVN (как до 1.5?) Не было отслеживания слияний и реинтеграции ветвей, так что если вы Если вы хотите объединить законченную ветку в ствол, вы должны были сделать это вручную, используя метод диапазона ревизий. Я пытаюсь найти это в документации, но я еще не нашел справку об этом.

Дополнительное чтение

См. Также Re: Почему --reintegrate необходимо для слияния SVN 1.5? , на что было указано в этом комментарии .

5 голосов
/ 04 июля 2011

реинтеграция предназначена для использования, когда вы работали над функциональной веткой, и все готово. Следующим шагом должно быть удаление ветки. Перед реинтеграцией вы должны объединить пункт назначения (чаще всего магистральный) с веткой, используя объединение «диапазон ревизий», чтобы объединить все подходящие ревизии с веткой. Это описано чуть выше пункта reintegrate .

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

0 голосов
/ 31 января 2013

- реинтеграция должна быть по умолчанию; если на самом деле есть какая-то причина, по которой вы захотите сделать синхронизирующее слияние, отличное от --reintegrat, они могут вместо этого просто предоставить --sync. --reintegrate - это то, что вы хотели бы почти все время, за исключением случаев, когда вы хотите выбрать вишню. (Это всего лишь мои 2 цента - я не считаю себя экспертом по слиянию, и при этом я не понимаю, почему их математика синхронизации будет отличаться от их математики реинтеграции) - когда я объединяюсь, я почти всегда хочу и хочу только изменения в исходная ветвь, которая еще не была объединена с целевой ветвью ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...