Проверка подмножества ртутного хранилища - PullRequest
2 голосов
/ 15 апреля 2011

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

Вот пример для уточнения:

/cvsroot
    .../core
    .../feature-1
    .../feature-2

Проект 1 использует ядро ​​и функцию-1; Проект 2 использует ядро ​​и функцию-2. Я не хочу, чтобы люди, работающие над проектом 2, имели каталог feature-1 в своих рабочих копиях, потому что на самом деле это набор из примерно 30 каталогов и немалое количество места.

Есть ли способ справиться с этим легко (или, альтернативно, хорошо) с ртутью? Я думал об использовании отдельного хранилища для пересечения, но это неоптимально. Это означает, что нужно делать дополнительные операции, получать дополнительные обновления и, возможно, писать несколько сценариев для управления им.

Моей другой альтернативой было копирование пересечения в каждом. Это не очень хорошо, потому что это может привести к разветвлению общего кода, так как разные люди работают над разными его частями.

1 Ответ

6 голосов
/ 15 апреля 2011

Использование Mercurial подпапки должно помочь здесь. Я бы определил core, feature-1 и feature-2 как независимые репозитории, а затем связал бы их вместе, используя функцию под-репозитория. Проект 1 будет задействовать core и feature-1, а Проект 2 - core и feature-2. Каждое из базовых репозиториев существует только один раз, поэтому разные проекты эффективно обмениваются ими.

Вы можете настроить подпункты так, чтобы когда Project 1 выполнял фиксацию и push, он выдвигал как core, так и feature-1, или вы могли потребовать, чтобы пользователь зафиксировал их явно, перейдя в каталог и обработав их как обычный репо.

Наконец, вы можете создавать подпункты только на уровне хранилища. Другими словами, вы не можете создавать их на уровне файлов.

...