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