Из SVN v1.5 слияние выполняется rev-by-rev. Вишневый выбор областей, которые будут слиты бы привести нас к разрешению конфликтов переговорной ветви дважды (один при слиянии соединительных линий изменения к FB, и еще раз, когда слияние назад)
Тогда вы делаете что-то неправильно !
Давайте посмотрим:
trunk fb
---------\
r1-10 |
r11-20 |
r20-30 |
Вообще, если вы хотите изменения, сделанные в 11-20, то лучше практика, чтобы объединить 1-20 в Fb и получить все там.
Затем, когда fb выполняется, слить 20-30, а затем копия fb в багажник (без слияния!).
Если вы решили объединить только r11: 20, хорошо, в конце концов вам нужно будет объединить г1: 10 и r20: 30 , а затем копия фб в ствол.
Невозможно дважды объединить изменения!
Я предполагаю, что вы, вероятно, следующее:
copy trunk->fb
merge 11:20 -> fb.
merge fb-1:30 -> trunk !!!!! WRONG
Вы не можете сделать это, потому что вы сливаете 11:20 дважды. Вы всегда должны объединять код в только в одном направлении.
Правильный путь:
copy trunk->fb
merge 1:20 -> fb.
merge 21:30 -> fb (now fb=trunk+feature)
copy fb -> trunk
Редактировать
Так правильные шаги:
Создать функцию ветви (FB) из ствола (ствол копию, чтобы показать ветку с SVN -copy)
FB_0=trunk_0
Работает на FB.
FB_1=FB_0 + change_a
Объединить все предстоящие изменения с туловища на FB.
trunk_1=trunk_0 + tr_change_a;
FB_2 = FB_1 + (trunk_1 - trunk_0) == trunk_0 + change_a + tr_change_a
Работа на FB
FB_3 = FB_2 + change_b
Объединить все предстоящие неслиянных изменения из ствола в FB.
trunk_2=trunk_1 + tr_change_n;
FB_4 = FB_3 + (trunk_2 - trunk_1) == trunk_0 + change_a + change_b + tr_change_a + tr_change_b
На данный момент у нас есть функция ветвь, которая состоит из всех новых функций и всех изменений в багажнике. Поэтому мы просто копируем разницу между двумя ветвями.
trunk_3 = trunk_2 + (FB_4 - trunk_2) = FB_4 = trunk_0 + change_a + change_b + tr_change_a + tr_change_b
Теперь FB удален, поскольку багажник имеет все необходимые изменения.
Последний шаг выполняется:
svn merge /path/to/[email protected] /path/to/branches/[email protected] .
svn ci
Или в обычной разницы между языком тейк ствола и ветви, и поместить их в ствол делает их эквивалент.
Эта модель описана в http://svnbook.red-bean.com/en/1.4/svn.branchmerge.commonuses.html#svn.branchmerge.commonuses.patterns.feature
Теперь, если это не работает для вас, то я не понимаю вопрос.
Edit2: Для СВН-1,5
При работе с СВН-1.-Можно объединить намного проще:
Когда вы работаете на ответвлениях новой функции вы просто объединить изменения от времени магистрального времени:
$ svn merge /path/to/trunk
Solve conflicts
$ svn ci
Он будет выстраиваться ваш FB со всеми изменениями в багажнике. В конце FB вы снова запустите эту процедуру , чтобы убедиться, что все обновлено. Вы идете в багажник и бег
$ svn merge --reintegrate /path/to/fb
$ svn ci
В последнем случае не должно быть конфликтов, если вы работаете, как показано.
Добавлена проблема SVNBook: http://code.google.com/p/svnbook/issues/detail?id=81 –
Обновлен мой ответ ... Если это не поможет, я не понимаю вопроса. – Artyom
Обновлено еще раз для SVN 1.5 – Artyom