У нас есть очень крупное унаследованное репо CVS (66 ГБ) за последние десять лет, и оно продолжает расти. Теперь у нас есть несколько субподрядных компаний, которым нужно работать над некоторыми модулями и филиалами.
Нам нужно создать для них несколько веток и отправить им эти ветки. Также нам нужно время от времени объединять их изменения в наши основные ветки.
Похоже, вы хотите перейти только для субподрядчиков, а не для всех остальных. Я настоятельно рекомендую вам этого не делать. Либо обращайте всех, либо никого. Запуск смешанной системы - огромная боль, особенно когда дело доходит до получения изменений от людей в DVCS.
Наша забота:
- мы не можем отдать им репо полностью, в основном речь идет о безопасности.
У вас есть несколько модулей в вашем репозитории CVS, но вы не можете предоставить им все модули, или вы хотите ограничить историю, к которой они имеют доступ?
DVCS работают намного лучше, когда модули хранятся как отдельные репозитории, а не как несколько модулей в одном репозитории *. Для этого есть много причин, но в основном это так, чтобы изменения в разных модулях не вызывали ненужных слияний.
(* как и CVCS, но обычно создавать новый модуль так сложно, что люди делают это только один раз. Я подозреваю, что у вас не было бы 66 ГБ, если бы он был разделен.)
Итак, если вы все же конвертируете, вы хотите разделить модули. Это позволит вам совместно использовать одни модули, а другие нет. Я знаю, что Mercurial может создать репо из пути, установленного в многомодульном репо во время преобразования. Я ожидаю, что Git имеет аналогичные возможности.
- нам нужно отправить им некоторую информацию из истории, а не только версию кода HEAD.
Это почти диктует DVCS. Это определяющий атрибут.
- мы все еще занимаемся разработкой, поэтому время от времени нам нужно присылать им набор изменений.
... и поэтому вы должны использовать тот же инструмент VC, что и они. В противном случае вы потратите все свое время на преобразование ревизий между системами.
GIT и Mercurial - хороший выбор для перехода с CVS? Может ли GIT / Mercurial удовлетворить наши потребности?
Да и Да, но это не кнопочный переход. Это требует планирования, приверженности и образования.
РЕДАКТИРОВАТЬ: Я думаю, что нам действительно нужен централизованный контроль версий с функцией нескольких сайтов, с возможностью создания внешнего репо на основе части центрального репо. И можно легко объединить сайты.
Централизованная, но распределенная система контроля версий. Вас понял!
Наконец, не путайте централизованную / распределенную практику разработки с централизованными / распределенными инструментами. Совершенно разумно работать в централизованной модели разработки с распределенной VCS.
person
Paul S
schedule
07.11.2012