Hg:我自己的第三方存储库 - 有自动拉取?这是怎么解决的?

时间:2012-01-10 15:55:29

标签: version-control mercurial

土地铺设(简化):

我拥有回购/项目模糊模糊取决于不同的项目, Zazzy (让我们说它是一些类型的库)。两者都是mercurial存储库。目录树看起来像是:

-+- Fuzzy /* root repo */
  \
   +- something_fuzzy_related.c
   |
   +- Zazzy /* that other repo */
    \
     +- a_rather_zazzy_library.so

现在,让我们说一些可怜的灵魂决定结帐我的模糊项目。他或她将自动结帐Zazzy。

我怎么能这样做?如何在大型项目中解决这类问题?我是否必须使用自定义脚本(我没有问题)来处理结帐(许多项目都有他们用来更新源代码的奇怪脚本,想想Chromium,W​​ebKit)?

2 个答案:

答案 0 :(得分:3)

人们有时会使用subrepositories来处理这个问题。

请注意它们有一些锋利的边缘,我们不建议将Zazzy项目放在Fuzzy项目中。这是因为它在两个项目之间创建了一个非常tight coupling。如果外部存储库(模糊)确实依赖于Zazzy中的确切变化集,这可能是合适的。

然而,过于强烈地耦合不同组件通常是一种不好的做法。有专门的工具来管理依赖关系:在Java世界中,Maven非常受欢迎。我不知道广泛用于C项目的东西,尽管你总是可以使用包系统(RPM,APT,...)来处理这个问题,如果你最终得到很多复杂的依赖项。

答案 1 :(得分:2)

你应该探索Mercurial subrepos。它们正是为了这个目的。