2010-11-18 3 views
2

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

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

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

  • SVN
  • 1-к-1 клон SVN с ртутным
  • ртутного развитием Repository

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

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

Я должен упомянуть, по интерфейсу для разработки, я уже использую hgsubversion, что подходит для меня. Но я хотел бы иметь возможность использовать распределенное развитие на основе команды. – Gary

+1

Мне лично нравится подход с сильным вооружением :), и использование Mercurial так или иначе похоже на SVN. – erjiang

ответ

3

В курсах по использованию DVCS, что это на самом деле один из основных вариантов использования я объясняю, и один, что я думаю, что показывает, насколько глубоко удивительная DVCSes является ...

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

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

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

То, как вы отслеживаете последнюю версию SVN, зависит от вас. Вы можете использовать тег, который вы меняете каждый раз, сохраняете ревизии SVN в ветке или в отдельном репозитории.TIMTOWTDI

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

Автоматический способ

Я никогда не использовал это так, но tailor способен сделать конверсию SVN/Hg в обе стороны, неоднократно.

+1

Yah, я закончил использовать этот процесс во время перехода от SVN к mercurial. У меня в основном была ветка для любых оставшихся обновлений SVN. После того, как все были улажены, и мы были хороши в том, чтобы справляться с переходом нашего тестирования в меркурийной среде, я вытащил последние обновления SVN, объединился с изменениями на уровне ртути и решил дефолт, когда я объявил, что начнется новая разработка. Хорошо работает. – Gary

Смежные вопросы