GIT / Mercurial Crossover с SVN для команд разработчиков - PullRequest
2 голосов
/ 18 ноября 2010

Проблема в том, что я хотел бы иметь возможность использовать Mercurial или git в качестве внешнего интерфейса для разработки, но иметь наборы изменений и обновления, сделанные в Subversion, обычно в ветке интеграции или что-то, что записывается только скрипт для Mercurial, или Хадсон, когда он замечает изменения. Затем в наш репозиторий Mercurial вносятся изменения, внесенные другими разработчиками, использующими SVN, мы вносим эти изменения и интегрируем их, тестируем изменения перед предоставлением новой версии для разработки и т. Д.

Кто-нибудь знает, возможен ли следующий сценарий для групп разработчиков со слиянием и ветвлением? Или, если есть лучший способ ... кроме сильных вооруженных людей использовать только один инструмент?

Следующая стратегия состоит из следующих компонентов:

  • 1008 * SVN *
  • 1-к-1 клон SVN с Mercurial
  • Хранилище Mercurial Development

В приведенной ниже конфигурации обновления обычно переносятся из SVN / trunk в клон (hgsubversion). Клон будет только для чтения и периодически будет иметь скрипт, который тянет за изменениями. Затем клон будет клонирован в репозиторий разработки, который доступен для чтения и записи (это обычный Mercurial Repo). Когда разработчики вносят изменения в этот репозиторий разработчика, элементы, находящиеся в ветви интеграции, помещаются в ветку SVN / интеграции. Эта ветвь фиксируется только автоматическим скриптом. Если другие разработчики, использующие svn, только вносят изменения в ствол SVN, их можно втянуть в клон и объединить в среде Mercurial. Недостатком будет то, что вы потеряете видимость на уровне SVN, откуда произошли изменения.

[[[[ trunk [[[[[[[[[[[[[[[[[[[[[[[[ SVN ]]]]]]]]]]]] branch/integration ]]]]]]]]]]]]]]]]]]
        |                                                   ^
        |                                                   |
        |                                                   |
        v                                                   |
SVN - Mercurial Clone                                       |
        |                                                   |
        |                                                   |
        |                                                   |
        v                                                   |
Mercurial - Development ---------------------------- Branch - Integration

1 Ответ

3 голосов
/ 18 июля 2011

На курсах по использованию DVCS это один из основных вариантов использования, который я объясняю, и один, который, я думаю, показывает, насколько потрясающими являются DVCS ...

У вас есть несколько способов сделать это.

Ручной способ

Вы SVN / checkout код, затем Hg / init и Hg / commit все.Затем вы выполняете свою работу под Hg, совершая небольшие и частые атомные модификации , как вам угодно, локально .Когда вы хотите зафиксировать обратно в SVN, вы сначала Hg / up ревизии Hg, которую вы сделали сразу после SVN / checkout.Вы SVN / up , не будет конфликтов SVN , потому что вы только что обновились с простой ревизии SVN.Вы Hg / commit , Hg / merge и затем SVN / commit .Если кто-то сделал коммит в SVN, вы повторяете операцию: Hg / up до последней чистой версии SVN, SVN / up и Hg / commit + merge .

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

Дополнительное преимущество : это также способ выступать в роли коммиттера SVN для людей, использующих Hg, при этом они не находятся вне контроля версий.* Автоматический способ

Я никогда не использовал его таким образом, но портной может выполнять конвертацию SVN / Hg в обоих направлениях, неоднократно.

...