Используйте TortoiseSVN для объединения изменений ветви с магистралью

StackOverflow https://stackoverflow.com/questions/424525

Вопрос

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

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

По сути, я хочу, чтобы мой ствол выглядел точно так же, как ветка.

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

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

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

Это было полезно?

Решение

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

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

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


Обновить

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

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

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

Другие советы

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

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

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

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

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

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

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

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

 введите описание изображения здесь

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

 введите описание изображения здесь

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

 введите описание изображения здесь

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

 введите описание изображения здесь

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top