Моя компания переключается от Подверсии до Подвижного. Мы используем.NET для нашего продукта. У нас есть решение приблизительно с дюжиной проектов, которые являются отдельными модулями без зависимостей друг от друга. Мы используем центральный repo на сервере с нажатием/получением по запросу для нашей сборки интеграции.
Я пытаюсь выяснить, должен ли я создать один центральный repo со всеми проектами в нем, или если я должен создать отдельный repo для каждого проекта. Один аргумент в пользу отдельного repos - то, что, переходя отдельные модули были бы легче, но аргументом в пользу единственного repo является более легкое управление и рабочий процесс.
Я очень плохо знаком с hg и DVCS, таким образом, некоторое руководство значительно ценится.
ETA: По hginit.com говорит Joel:
[I] f Вы привыкли иметь один большой гигантский репозиторий для целой компании, где некоторые люди только проверяют и работают над подкаталогами, о которых они заботятся, это не очень хороший способ работать с Подвижным — Вы - более обеспеченное наличие большого количества репозиториев меньшего размера для каждого проекта.
Было бы замечательно, если кто-то мог бы подробно остановиться на этом или указать на меня на большее количество документации.
Вы должны принять во внимание одну вещь: Mercurial не поддерживает проверку каталогов, как это делает subversion. Одна типичная установка Subversion - иметь одно гигантское репо с несколькими отдельными проектами в нем, и когда кому-то нужен код, он просто проверяет подкаталог, содержащий этот проект. Вы не можете сделать это в ртути. Вы либо берете все репо, либо ничего. Если всем, кто работает над этими проектами, не всегда нужен весь код, вы можете разделить его на отдельные репозитории.
РЕДАКТИРОВАТЬ: Эта ссылка может быть полезна при настройке, в частности, при настройке раздела «Публикация нескольких репозиториев».
если полностью отдельные репозитории вам не подходят, возможно, каждый проект является подрепозиторием какого-то зонтичного репозитория. Я должен сказать, что раздельные репозитории звучат как то, что вам нужно, учитывая, что каждый проект звучит совершенно независимо.
Из моего опыта, а не на основании исследований и т.д., я бы сказал, что каждый логический блок - это репозиторий. Если вы делитесь кодом между подпроектами, они должны быть в одном репозитории. Будет будет полная функциональность подрепо, но в настоящее время (апрель 2010) она не полностью реализована.
Я сам новичок в Mercurial (моя компания делает скачок с SourceSafe), поэтому я не знаю, что еще опыт сказал бы.
Для меня имеет смысл иметь один репозиторий для каждого Решения Visual Studio. Если ваши модули действительно не зависят друг от друга, почему они все в одном решении? Если у вас есть веская причина для того, чтобы все они были в одном решении, то, вероятно, это причина хранить их в одном репозитории. Если для них нет веских причин быть в одном решении, то для меня больше смысла имеют репозиторий и решение для каждого из них.
Изменить: Итак, поскольку все модули собраны вместе и нуждаются в интеграции, это подтолкнет меня к единому решению и единому репозиторию.
Mercurial отлично справляется с слиянием, но у меня возникли проблемы с файлом решения при слиянии и добавлении более чем одного проекта за раз. Его путают с несколькими строками End Project
. Итак, пока вы не добавляете новые проекты очень часто, ваши слияния должны быть плавными.