С одной стороны, способ, которым SVN вычисляет применяемые различия, отличается между двумя методами. Обычно, когда вы применяете диапазон ревизий от X до Y от магистрали к ветви, например, в режиме черрикования, SVN вычисляет различия между ревизиями от X до Y в магистрали и применяет их к ветке. Вы также можете сделать то же самое в другом направлении, применяя изменения от ветви к стволу таким образом.
Однако, когда вы реинтегрируете ветвь в ствол, SVN выполняет другой тип вычислений. Вместо того, чтобы вычислять разницу между ревизиями от X до Y в ветви и применять эти изменения к транку, SVN просто вычисляет разницу между всей веткой и транком. Предполагая, что вы усердно работали над обновлением ветки с изменениями, внесенными в ствол, тогда разница в расчете реинтеграции между стволом и ветвью будет точно всеми изменениями, внесенными в ветку, которые еще не внесены. в багажнике.
С документация SVN 1.6 (Реинтеграция филиала):
При объединении вашей ветви обратно в
ствол, однако, основной
математика совсем другая. Ваш
ветвь функции теперь - путаница
и дублированные изменения ствола и
изменения в частной ветке, так что нет
простой непрерывный диапазон ревизий
скопировать. Указав
--reintegrate
вариант, вы спрашиваете
Subversion, чтобы тщательно копировать
только эти изменения, уникальные для вашей ветки. (И на самом деле, это делает это
сравнивая последнее ствол дерева с
последнее ветвь дерева: в результате
разница именно твоя ветка
изменения!)
Я не совсем уверен (я забыл за эти годы), но я думаю, что в предыдущих версиях SVN (как до 1.5?) Не было отслеживания слияний и реинтеграции ветвей, так что если вы Если вы хотите объединить законченную ветку в ствол, вы должны были сделать это вручную, используя метод диапазона ревизий. Я пытаюсь найти это в документации, но я еще не нашел справку об этом.
Дополнительное чтение
См. Также Re: Почему --reintegrate
необходимо для слияния SVN 1.5? , на что было указано в этом комментарии .