Какой самый простой способ сделать ветвление и слияние с помощью TortoiseSVN? - PullRequest
79 голосов
/ 22 сентября 2009

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

1 Ответ

184 голосов
/ 22 сентября 2009

Предполагается, что ваш рабочий каталог работает из транка:

Щелкните правой кнопкой мыши «корневую рабочую папку» (этот термин всегда относится к проводнику Windows) и выполните команду svn update, чтобы обновить рабочую папку до последней ствола.

Убедитесь, что у вас стабильно.

Щелкните правой кнопкой мыши корневую рабочую папку и выполните команду svn commit, чтобы убедиться, что все локальные изменения зафиксированы в транке.

Щелкните правой кнопкой мыши на корневой рабочей папке и выполните svn repo-browser.

Если у вас еще нет папки с ветками в репозитории: щелкните правой кнопкой мыши на папке чуть выше папки с стволами и выполните «создание папки» и создайте папку с ветками (например, если ваша ствол является http://myserver/svn/MyRepository/MyProj/Trunk , создайте http://myserver/svn/MyRepository/MyProj/Branches).

Щелкните правой кнопкой мыши на папке ствола и выполните Copy To: и введите имя новой папки для вашей ветви. Например: http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch. (Не беспокойтесь, что это потратит много места ... это называется "дешевой копией" ... на самом деле содержимое файлов не копируется, если они не изменяются).

Закрыть Repo-браузер.

Щелкните правой кнопкой мыши корневой каталог рабочей папки и выполните: svn switch и выберите имя папки вашей новой ветви (например, http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch). Оставьте все остальное по умолчанию.

Теперь работайте над своей веткой. Когда вы доберетесь до этапов, щелкните правой кнопкой мыши на корневой рабочей папке и выполните svn commit, чтобы зафиксировать свою ветку. (Это не будет видно в багажнике).

Если в той же ветке работают другие, периодически делайте svn update из корневой рабочей папки. Это будет обновление из ветки. (Он не получит никаких обновлений от транка.)

Независимо от того, работают ли другие пользователи над одной и той же веткой, вам следует периодически объединять изменения из ствола, чтобы убедиться, что ваша ветка не будет слишком сложной для последующей интеграции. Чтобы выполнить периодическое объединение: щелкните правой кнопкой мыши корневой каталог рабочей папки и выполните команду svn merge. Выберите «Объединить диапазон ревизий». В разделе «URL для слияния» выберите транк (например, http://myserver/svn/MyRepository/MyProj/Trunk). Оставьте Revision Range пустым и оставьте все остальное в покое. Нажмите кнопку "Далее. Оставьте все в покое и нажмите Объединить . Убедитесь, что все по-прежнему работает ... исправить это, если нет. Как только вы будете удовлетворены, выполните обычную 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 в любое время, если вам действительно нужно.)

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

...