Введение и предыстория
Мы находимся в процессе изменения системы управления версиями, и в настоящее время мы оцениваем git и меркуриальную. Общая кодовая база составляет около 6 миллионов строк кода, поэтому она не массивная и не очень маленькая.
Позвольте мне сначала начать с очень краткого введения в то, как выглядит текущий дизайн репозитория.
У нас есть одна базовая папка для полной базы кода, и под этим уровнем существуют всевозможные модули, используемые в нескольких разных контекстах. Например, "dllproject1" и "dllproject2" можно рассматривать как полностью отдельные проекты.
Программное обеспечение, которое мы разрабатываем, мы называем конфигуратором, который можно настраивать бесконечно для разных потребностей клиентов. В целом мы, вероятно, имеем 50 различных версий. Однако у них есть одна общая черта. Все они имеют пару обязательных модулей (обязательный_модуль1..). Эти папки в основном содержат код ядра/ядра и общие языковые ресурсы и т.д. Все настройки могут быть любой комбинацией между другими модулями (module1..).
Поскольку в настоящее время мы используем cvs, мы добавили псевдонимы в файл CVSROOT/modules. Они могут выглядеть примерно так:
core –a mandatory_module1 mandatory_module2 mandatory_module3
project_x –a module1 module3 module5 core
Итак, если кто-то решит работать над project_x, он может быстро проверить модули, необходимые для:
base>cvs co project_x
Вопросы
Интуитивно это просто неправильно, если базовая папка является единственным хранилищем. В качестве программиста вы должны иметь возможность проверить точный набор кода, необходимый для текущего проекта, с которым вы работаете. Что вы думаете об этом?
С другой стороны, более правильно иметь каждый из этих модулей в отдельных хранилищах. Но это затрудняет программистам проверять модули, которые им нужны. Вы должны иметь возможность сделать это с помощью одной команды. Поэтому мой вопрос: существуют ли аналогичные способы определения псевдонимов в git/mercurial?
Любые другие вопросы, предложения, указатели приветствуются!
PS. Я искал похожие вопросы, но не чувствовал, что любой из них применил 100% к моей ситуации.