Используя 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