Используя TortoiseSVN, как мне сменить изменения с туловища на ветку и наоборот?
Я читал разветвление/слияние с Subversion 1.5, используя отличную и бесплатную Version Control with Subversion. Я думаю, что я понимаю, как использовать клиент командной строки Subversion для выполнения наиболее часто используемых действий, которые:
Обновить ветвь с изменениями с внешней линии
В рабочем каталоге ветки выполните:
svn merge 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 PATH
Кроме того, реинтегрировать ветку часто не удается с сообщением о том, что некоторые цели не были объединены и поэтому не могут продолжаться, поэтому мне пришлось использовать опцию № 3.
Мои вопросы:
- Как использовать TortoiseSVN 1.5 для слияния изменений с соединительной линии на ветку?
- Как использовать TortoiseSVN 1.5 для объединения ветки в туловище с помощью метода реинтеграции и без него?
- Какой из вышеперечисленных вариантов я должен использовать для каждого и почему?
ИЗМЕНИТЬ
Через тестирование "сухого хода" я обнаружил, что операция Subversion командной строки
svn merge http://svn.myurl.com/proj/trunk
аналогичен опции № 1 (слияние диапазона версий) в TortoiseSVN, если я оставляю пробел в редакции пустым.
Ответы
Ответ 1
Поведение зависит от версии вашей репозитории. Subversion 1.5 позволяет использовать 4 типа слияния:
- merge sourceURL1 [@N] sourceURL2 [@M] [WCPATH]
- слияние источникаWCPATH1 @N sourceWCPATH2 @M [WCPATH]
- merge [-c M [, N...] | -r N: M...] ИСТОЧНИК [@REV] [WCPATH]
- merge --reintegrate SOURCE [@REV] [WCPATH]
Subversion до 1.5 допускает только первые 2 формата.
Технически вы можете выполнять все слияния с первыми двумя методами, но последние два разрешают слияние с субверсией 1.5.
Параметры TortoiseSVN объединяют карты диапазона или ревизий в метод 3, когда ваш репозиторий равен 1,5+ или метод один, когда ваш репозиторий старше.
При объединении функций в ветку выпуска/обслуживания вы должны использовать команду "Слияние диапазона ревизий".
Только если вы хотите объединить все функции ветки обратно в родительскую ветку (обычно тубус), вы должны изучить использование "Реинтегрировать ветвь".
И последняя команда -Merge - два разных дерева - полезна только тогда, когда вы хотите выйти за пределы обычного поведения ветвления. (Например, сравнение разных выпусков, а затем слияние разности с еще одной ветвью)
Ответ 2
Я не мог правильно следовать приведенным выше ответам, здесь больше руководства по манекенам... Я считаю, что вы можете сделать это в любом случае, чтобы пойти в магистраль → ветвь или ветвь → туловище.
Объединить соединительную линию в ветку/тег
- Оформить проверку ветки/тега
- Щелкните правой кнопкой мыши по корню ветки | Черепаха SVN | Объединить...
- Тип слияния: Объединить ряд исправлений | Нажмите "Далее'
![enter image description here]()
- Сменить диапазон версий:. Выберите URL-адрес каталога соединительной линии, который вы скопировали в филиал/тег. Введите изменения для слияния или оставьте поле пустым, чтобы объединить все изменения | Нажмите "Далее'
![enter image description here]()
- Параметры слияния: Я просто оставил их по умолчанию | нажмите "Объединить"
![enter image description here]()
- Это объединит ревизии в проверенную ветку/тег
- Затем зафиксируйте объединенные изменения в ветке/теге
Ответ 3
Вы должны использовать "объединить диапазон ревизий".
Чтобы слить изменения из соединительной линии в ветку, внутри рабочей копии ветки выберите "диапазон слияния версий" и введите URL-адрес соединительной линии, а начальные и конечные версии слить.
То же самое в обратном порядке, чтобы объединить ветвь в туловище.
О знаке --reintegrate, проверьте руководство здесь: http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-merge.html#tsvn-dug-merge-reintegrate
Ответ 4
Взгляните на svnmerge.py. Эта командная строка не может быть вызвана TortoiseSVN, но она более мощная. Из FAQ:
Традиционная подрывная деятельность позволит вам слияния, но это не "помните", что вы уже слили. Он также не обеспечивает удобство способ исключить набор изменений из слиты. svnmerge.py автоматизирует некоторые из работу и упрощает ее. Svnmerge также создает сообщение фиксации с регистрировать сообщения из всех вещей, которые он слиты.
Ответ 5
Shift-Right Щелкните по папке и выберите TortoiseSVN → Merge All