Я использую TortoiseSVN, svn и subclipse, и я думаю, что понимаю основы, но есть одна вещь, которая меня давно беспокоит: слияние приводит к появлению нежелательного кода. Вот шаги.
trunk/test.txt@r2
. Тестовый файл был создан с 'A' и возвращением:
A
[EOF]
branches/TRY-XX-Foo/test.txt@r3
. Разветвленные trunk
до TRY-XX-Foo
:
A
[EOF]
branches/TRY-XX-Foo/test.txt@r4
. Внести нежелательное изменение в TRY-XX-Foo
и зафиксировать его:
A
B (unwanted change)
[EOF]
branches/TRY-XX-Foo/test.txt@r5
. В TRY-XX-Foo
исправлено важное исправление и зафиксировано:
A
B (unwanted change)
C (important bug fix)
[EOF]
Теперь я хотел бы объединить только важное исправление ошибки с магистралью. Итак, я запускаю слияние для ревизии 4:5
. То, что я попал в мой рабочий каталог, является конфликтом.
trunk/test.txt
A
<<<<<<< .working
=======
B (unwanted change)
C (important bug fix)
>>>>>>> .merge-right.r5
[EOF]
Против моей воли, Subversion теперь включила «нежелательные изменения» в код транка, и мне нужно отсеять их вручную. Есть ли способ объединить только указанные ревизии, если в ветке делается несколько последовательных изменений?
Отчасти проблема в том, что B (без изменений) включено в .merge-right, и я не могу определить разницу между ревизией. Я обычно использую TortoiseMerge, и вот как это выглядит.