Я читал о ветвлении / слиянии с Subversion 1.5, используя отличную и бесплатную книгу « Контроль версий с Subversion» . Я думаю, что понимаю, как использовать клиент командной строки Subversion для выполнения действий, которые мне нужны чаще всего, а именно:
Обновить ветку с изменениями из магистрали
Из рабочего каталога ветки запустите:
svn слияние http://svn.myurl.com/proj/trunk
Объединить ветку в магистраль
Из рабочего каталога транка запустите:
svn merge --reintegrate http://svn.myurl.com/proj/branches/mybranch
Однако мы используем TortoiseSVN 1.5 в качестве интерфейса для Subversion. Я хотел бы знать, как лучше всего выполнять эти операции с TortoiseSVN. В новом диалоговом окне в главном меню есть три различных параметра.
- Объединить ряд ревизий
- Реинтегрировать филиал
- Объединить два разных дерева
Насколько я понимаю, TortoiseSVN всегда выполняет svn со следующим синтаксисом.
svn merge [--dry-run] --force From_URL @ revN To_URL @ revM ПУТЬ
Кроме того, реинтегрировать ветку часто не удается с сообщением о том, что некоторые цели не были объединены и поэтому она не может продолжаться, поэтому мне пришлось использовать вариант № 3.
Мои вопросы:
- Как мне использовать TortoiseSVN 1.5 для слияния изменений из ствола в ветку?
- Как мне использовать TortoiseSVN 1.5 для слияния ветки с основной веткой, с методом реинтеграции и без него?
- Какие из вышеперечисленных вариантов мне следует использовать для каждого и почему?
РЕДАКТИРОВАТЬ
В ходе "пробного" тестирования я обнаружил, что операция Subversion в командной строке
svn слияние http://svn.myurl.com/proj/trunk
аналогична опции № 1 (Объединить диапазон ревизий) в TortoiseSVN, если я оставлю диапазон ревизий пустым.
источник
Ответы:
Поведение зависит от версии вашего репозитория. Subversion 1.5 допускает 4 типа слияния:
В Subversion до 1.5 допускались только первые 2 формата.
Технически вы можете выполнить все слияния с помощью первых двух методов, но последние два включают отслеживание слияния subversion 1.5.
Опции TortoiseSVN объединяют диапазон или ревизии с отображением метода 3, когда ваш репозиторий составляет 1,5+, или метода 1, когда ваш репозиторий старше.
При объединении функций с веткой релиза / обслуживания вы должны использовать команду «Объединить диапазон ревизий».
Только когда вы хотите объединить все функции ветки обратно в родительскую ветку (обычно ствол), вам следует изучить возможность использования «Реинтегрировать ветку».
И последняя команда - объединение двух разных деревьев - полезна только тогда, когда вы хотите выйти за пределы нормального поведения ветвления. (Например, сравнение разных выпусков, а затем слияние различий с еще одной веткой)
источник
Я не мог правильно следовать другим ответам, вот еще руководство для чайников ...
Вы можете сделать это в любом случае
trunk -> branch
илиbranch -> trunk
. Я всегда сначалаtrunk -> branch
исправляю конфликты, а затем объединяюсьbranch -> trunk
.Объединить ствол в ветку / тег
источник
trunk
иbranch
, убедитесь, что вы объединяете любые изменения изtrunk
наbranch
как можно скорее, чтобы избежать конфликтов в максимально возможной степени. Это будет означать , что при слиянииbranch
сtrunk
не должно быть никаких конфликтов.Вы должны использовать «объединить диапазон ревизий».
Чтобы объединить изменения из ствола в ветвь, внутри рабочей копии ветки выберите «объединить диапазон ревизий» и введите URL-адрес ствола, а также начальную и конечную ревизии для слияния.
Так же в обратном порядке слить ветку в ствол.
О флаге --reintegrate см. Руководство здесь: http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-merge.html#tsvn-dug-merge-reintegrate
источник
Взгляните на svnmerge.py . Это командная строка, не может быть вызвана TortoiseSVN, но она более мощная. Из FAQ :
источник
Удерживая клавишу «Shift», щелкните правой кнопкой мыши папку и выберите «TortoiseSVN» -> «Объединить все».
источник