Mercurial设置:一个中央仓库还是几个?

时间:2010-04-02 15:21:40

标签: mercurial

我的公司正在从Subversion切换到Mercurial。我们正在为我们的产品使用.NET。我们有一个解决方案,其中包含十几个项目,这些项目是独立的模块,彼此之间没有依赖关系。我们在服务器上使用中央存储库,使用推/拉进行集成构建。

我正在试图弄清楚我是否应该创建一个包含其中所有项目的中央仓库,或者我是否应该为每个项目创建一个单独的仓库。单独回购的一个论点是,分支单个模块会更容易,但单个回购的参数更容易管理和工作流程。

我对hg和DVCS很新,所以非常感谢一些指导。

ETA:在hginit.com,Joel说:

  

[我]你已经习惯了一个大人物   整个巨大的存储库   公司,有些人只检查   出来并在子目录上工作   他们关心,这不是一个非常   使用Mercurial的好方法 - 你   最好有更多的小   每个项目的存储库。

如果有人可以对此进行扩展或指向更多文档,那就太棒了。

4 个答案:

答案 0 :(得分:5)

这里你应该考虑的一件事是,Mercurial不支持检查像subversion这样的目录。一个典型的subversion设置是拥有一个包含多个独立项目的巨型仓库,当有人需要代码时,他们只会检查包含该项目的子目录。你不能在mercurial中这样做。你要么拿整个回购,要么什么也不做。如果每个从事这些项目的人都不需要所有代码,那么您可能希望将其拆分为单独的存储库。

编辑:This链接可能有助于设置,特别是“发布多个存储库”部分。

答案 1 :(得分:1)

如果完全单独的回购不适合您,可能将每个项目作为一些伞形回购的子目录。我不得不说,只要每个项目听起来完全独立,单独的回购听起来就像你需要的那样。

答案 2 :(得分:0)

我自己是Mercurial的新手(我的公司正在从SourceSafe实现跨越),所以我不知道会有更多的经验。

对我来说,每个Visual Studio解决方案都有一个存储库是有意义的。如果您的模块真的不依赖于彼此,为什么它们都在同一个解决方案中?如果你有充分的理由将它们全部放在一个解决方案中,那么这可能是将它们保存在一个存储库中的原因。如果没有充分的理由让他们在一个解决方案中,那么每个人的存储库和解决方案对我来说更有意义。

编辑:因此,由于所有模块都是一起构建的,需要集成,这将推动我走向单一解决方案和单一存储库。

Mercurial在合并方面做得非常出色,但我遇到的一件事就是在一次合并多个项目时解决方案文件。它与多个End Project行混淆。因此,只要您不经常添加新项目,您的合并就应该顺利。

答案 3 :(得分:0)

我的经验,而不是基于研究等,我会说每个逻辑blob都是一个存储库。如果您在子项目之间共享代码,则它们必须位于同一个仓库中。 成为完整的subrepo功能,但目前(2010年3月)尚未完全实现。