Используйте TortoiseSVN для объединения изменений ветви со стволом - PullRequest
119 голосов
/ 08 января 2009

Используя TortoiseSVN, мне нужно внести изменения, которые я сделал в ветке, а затем объединить их с Trunk.

Я единственный разработчик в этом проекте, поэтому я знаю, что транк не изменился. Я изучаю SVN, чтобы в конечном итоге моя команда могла его использовать.

В принципе, я хочу, чтобы мой ствол выглядел точно так же, как ветвь.

В мире, предшествующем svn, я просто копировал файлы в папке своей ветки, удалял файлы в папке внешних линий, а затем копировал ветви в общую папку.

В TortoiseSVN я пробовал «Реинтегрировать ветку», «Объединить диапазон ревизий» и «Объединить два разных дерева». Кажется, ничего не меняет багажник. Я также попытался разветвляться на верхней части ствола. Это дает мне ошибку, говоря, что транк уже существует.

На данный момент, я просто не знаю, как нажимать на кнопки, надеясь, что что-то сработает.

Ответы [ 4 ]

156 голосов
/ 08 января 2009

В вашем случае:

  1. Переключение рабочей копии на транк (SVN Switch)
  2. Объединить ветку в рабочую копию (SVN Merge)
  3. Убедитесь, что все по-прежнему компилируется и работает
  4. Зафиксируйте рабочую копию (ствол)
  5. Подумайте об убийстве ветки

В командной среде Я бы посоветовал вам сначала объединить последние модификации из ствола в вашей ветке, убедиться, что все скомпилировано и работает, а затем выполнить описанные выше шаги (что будет тривиально, так как вы уже проверил изменения).


Обновление

На шаге 5 я упоминаю, что убил ветку. Это связано с тем, что, как только ветвь объекта находится в стволе, она должна рассматриваться как часть ствола. В этом случае ветвь должна быть убита, чтобы никто не работал над ней. Если для этой функции требуются серьезные изменения, вам следует создать для нее новую ветвь.

Единственные ветки, которые я не убиваю, это ветки обслуживания и выпуска, если конкретный выпуск больше не поддерживается.

Независимо от того, у вас всегда есть доступ к каждой ревизии, поэтому уничтожение ветки используется только для того, чтобы другие разработчики не могли развиваться на мертвой ветке.

10 голосов
/ 20 мая 2014

думаю в TortoiseSVN 1.8.5, Merge | Слияние двух разных деревьев должно работать. Когда вы объединяете ветку / тэг обратно в транк, хитрость заключается в том, что URL-адрес «От» - это транк, а «Кому» - тэг / ветка. Странно, но верно.

Источник: Слияние

Для каталогов, которые не находятся в вашей рабочей копии, но находятся в теге / ветви, вы можете получить конфликтные ошибки. Просто примите конфликт и повторите слияние.

6 голосов
/ 08 января 2009

Сначала переключите вашу рабочую копию на ствол. Затем выполните слияние диапазона ревизий, от ветви до ствола. Как только этот диалог будет завершен, различия будут в ожидании изменений в вашей рабочей копии транка. Вам нужно будет зафиксировать их так же, как если бы вы вручную внесли изменения в свою рабочую копию.

В моем случае более типично поддерживать работу ствола и отводить ветки во время сборок. Так что единственное слияние, которое мне когда-либо нужно было сделать, - это вытащить ошибку из транка и поместить ее в последнюю ветку сборки и перевыпустить эту ветку. Для меня это самый простой способ, поскольку, как вы уже обнаружили, слияние в лучшем случае неуклюже. Сохранение последней ветки и ствола на моей машине и буквально копирование файлов из ствола в ветку и регистрация обоих.

3 голосов
/ 13 ноября 2017

Я использую TortoiseSVN 1.9.3, сборка 27038.

Выполните следующие шаги, чтобы объединить ветвь в ствол.

1) Щелкните правой кнопкой мыши на рабочей копии ствола и выберите опцию ниже.

enter image description here

2) В случае слияния ответвлений в магистраль выберите второй вариант, как показано ниже, и нажмите «Далее»

enter image description here

3) В поле From: введите полный URL-адрес папки транка. Это может звучать неправильно, но помните, что ствол является начальной точкой, к которой вы хотите добавить изменения ветви. В поле «Кому:» введите полный URL-адрес папки ветви компонента.

enter image description here

4) Нажмите «Далее» и выполните тестовое слияние

enter image description here

5) Если тестовое слияние прошло успешно, нажмите кнопку «Слияние».

6) Как только слияние будет успешным, зафиксируйте изменения в транке.

...