В чем разница между объединением диапазона пересмотров и реинтеграцией в SVN?
=============================================================================

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

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

 

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

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

От [документация SVN 1.6](http://svnbook.red-bean.com/nightly/en/svn-book.html#svn.branchemerge.basicmerging.reintegrate) (реинтеграция ветки):

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

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

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

См. также [Re: Почему необходим для слияния svn 1.5?](https://svn.haxx.se/users/archive-2008-05/0808.shtml), который был указан в [этот комментарий](/questions/142612/what-are-the-differences-between-merging-a-range-of-revisions-vs-reintegrate-in-svn/842785#comment2020148_842785).

 

 [reintegrate](http://svnbook.red-bean.com/nightly/en/svn.branchmerge.basicmerging.html#svn.branchemerge.basicmerging.reintegrate) предназначен для использования при работе над ветвью функций и выполняется. Следующим шагом должно быть удаление ветки. Перед реинтеграцией вы должны объединить пункт назначения (чаще всего trunk) в ветку, используя слияние "диапазон ревизий", чтобы объединить все подходящие изменения в ветку. Это описано чуть выше абзаца [reintegrate](http://svnbook.red-bean.com/nightly/en/svn.branchmerge.basicmerging.html#svn.branchemerge.basicmerging.reintegrate).

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

 

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