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

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

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

+37
источник поделиться
3 ответа

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

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

От документация SVN 1.6 (реинтеграция ветки):

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

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

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

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

+35
источник

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

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

+5
источник
другие ответы

Связанные вопросы


Похожие вопросы

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

-1
источник

Посмотрите другие вопросы по метке или Задайте вопрос