Что такое простое "как" делать разветвление и слияние с помощью TortoiseSVN?
Каков самый простой способ разветвления и слияния с использованием TortoiseSVN?
Ответ 1
Предполагая, что ваш рабочий каталог работает со стволом:
Щелкните правой кнопкой мыши "корневую рабочую папку" (этот термин всегда относится к проводнику Windows) и svn update
обновить рабочую папку до последней соединительной линии.
Убедитесь, что у вас стабильный.
Щелкните правой кнопкой мыши корневую рабочую папку и сделайте svn commit
, чтобы убедиться, что локальные изменения зафиксированы в соединительной линии.
Щелкните правой кнопкой мыши корневую рабочую папку и сделайте svn repo-browser
.
Если у вас еще нет папки веток в репозитории: щелкните правой кнопкой мыши по папке чуть выше папки соединительной линии и создайте папку "Создать папку" и создайте папку ветвей (например, если ваша ствол http://myserver/svn/MyRepository/MyProj/Trunk
, создайте http://myserver/svn/MyRepository/MyProj/Branches
).
Щелкните правой кнопкой мыши папку trunk и сделайте Copy To:
и вставьте новое имя папки для своей ветки. Например: http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch
. (Не беспокойтесь, что это будет тратить много места... это называется "дешевой копией"... на самом деле она не копирует содержимое файлов, если они не меняются).
Закрыть Repo-браузер.
Щелкните правой кнопкой мыши свой корень рабочей папки и выполните: svn switch
и выберите имя папки для вашей новой ветки (например, http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch
). Оставьте все остальное по умолчанию.
Теперь работайте над своей веткой. Когда вы доберетесь до этапов, щелкните правой кнопкой мыши корневую рабочую папку и сделайте svn commit
, чтобы зафиксировать свою ветку. (Это не будет видно в багажнике).
Если другие работают в одной ветки, периодически делайте svn update
из рабочей папки root. Это будет обновляться из ветки. (Он не получит никаких обновлений с багажника.)
Независимо от того, работают ли другие в одной ветке, вы должны периодически сменять изменения со стороны соединительной линии, чтобы ваша ветка не была слишком сложной для интеграции позже. Чтобы выполнить периодическое слияние: щелкните правой кнопкой мыши корень рабочей папки и сделайте svn merge
. Выберите "Объединить ряд изменений". В разделе "URL для слияния с" выберите соединительную линию (например, http://myserver/svn/MyRepository/MyProj/Trunk
). Оставьте диапазон редактирования пустым и оставьте все остальное в покое. Нажмите "Далее. Оставь все в покое и нажмите" Объединить". Убедитесь, что все по-прежнему работает... исправьте, если нет. После того, как вы удовлетворены, выполните регулярную svn update
из корневой папки работы для обновления из ветки (это необходимо, даже если вы работаете только с ветвью, чтобы удовлетворить SVN). Затем сделайте svn commit
, чтобы зафиксировать изменения объединенной магистрали в ветке. Вы можете повторять этот шаг периодически столько раз, сколько хотите.
Как только ваш филиал готов к интеграции, выполните вышеуказанный шаг в последний раз и выполните окончательное тестирование. Сделайте окончательную фиксацию ветки.
Щелкните правой кнопкой мыши на корневой рабочей папке и сделайте еще один svn switch
, на этот раз перейдя на соединительную линию (например, http://myserver/svn/MyRepository/MyProj/Trunk
). Это приведет к по существу "отмене" всей работы, которую вы проделали в своем филиале, но не волнуйтесь... вы вернете свою работу. (Он также сообщит о многих обновлениях файлов, которые вы не изменили в своей ветке, но это всего лишь изменения свойств SVN... не беспокойтесь о них.)
Щелкните правой кнопкой мыши на рабочей папке и сделайте svn merge
. На этот раз выберите "Реинтегрировать ветвь". Для URL-адреса введите свою ветку (например, http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch
). Оставьте остальных в покое и нажмите "Далее". Оставь все в покое и нажмите "Объединить". Теперь у вас есть все, что вы сделали на своей ветке, а также обновленную работу с багажником.
Сделайте окончательный тест. Все должно работать, потому что это должен быть тот же самый набор файлов, который у вас был в последнем тесте в ветке. Щелкните правой кнопкой мыши на корневой рабочей папке и выполните svn commit
. Зафиксируйте все, даже файлы, которые вы не работали в своем филиале (у них просто есть свойство "SVN", но их передача помогает SVN отслеживать все изменения).
В багажнике теперь есть все ваши работы в филиале, а также вся работа, которая была выполнена в багажнике, когда вы работали над своей веткой, и все это работает. Кроме того, SVN имеет полную историю всех файлов, даже ревизий, которые были проверены во время работы над вашей веткой.
Дополнительно: зайдите в Repo-браузер, щелкните правой кнопкой мыши папку вашего ветки (например, http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch
) и выполните "удаление". Это не повлияет на багажник, и вам больше не нужна ветка. (Даже если вы действительно параноик, не беспокойтесь, потому что вы даже можете вернуть свою удаленную ветку из браузера Repo в любое время, если вам действительно нужно.)
Пожалуйста, не стесняйтесь комментировать!