Каков самый простой способ разветвления и слияния с использованием TortoiseSVN?

Что такое простое "как" делать разветвление и слияние с помощью TortoiseSVN?

+77
источник поделиться
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 в любое время, если вам действительно нужно.)

Пожалуйста, не стесняйтесь комментировать!

+176
источник

Посмотрите другие вопросы по меткам или Задайте вопрос