2012-06-06 2 views
0

У меня есть две ветви из ствола, которые поддерживаются отдельно в течение года, говорят ветви А и В. Теперь мне нужно объединить один в другой. То, что я хочу, - это сравнить изменения как в том, так и в любом новом изменении, которое входит в объединенную ветвь.слияние различий в двух ветвях

Я использовал SVN-слияние в прошлом, но, как я понял, он применяет «diffs» в одной ветви к другой. Мне не нужны ВСЕ отличия - только новые.

Возможно ли это в SVN?

Спасибо.

ответ

0

Слияние делает трехстороннее слияние. Это стандартный алгоритм, который работает следующим образом:

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

Таким образом, применяются все изменения обеих ветвей. Если одно и то же изменение было сделано с обеих сторон, то оно было применено. Если один и тот же код был изменен по-разному, это конфликт, и вам придется его решить. И вы не увидите, какой именно вариант он исходил, все они свернуты вместе.

Теперь, если это не то, что вы хотите, другой вариант - вручную перечислить версии для слияния. Это применит только изменения, внесенные в эти конкретные изменения, каждый непрерывный диапазон за один раз (алгоритм на самом деле тот же, но базой является ревизия перед запуском выбранного диапазона). Это означает, что вам нужно вручную выбрать, какие изменения вы хотите. Есть два вопроса с этим подходом: это будет большая работа, и вы должны быть осторожны, чтобы выбрать все изменения, необходимые для работы более поздних.

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

Смежные вопросы