【问题标题】:Managing large external dependencies using mercurial使用 mercurial 管理大型外部依赖项
【发布时间】:2011-06-05 12:19:17
【问题描述】:

我正在开展一个项目,该项目利用了一些大型的 3rd 方库,例如 boost、tbb 和 ACE。我想准确控制在我的项目中使用这些 3rd 方库的哪些版本,而不是依赖于构建机器中可用的任何内容。过去,我通过将这些库添加到我的项目存储库中来完成此类事情。这工作正常,但它确实减慢了 mercurial 的速度,迫使它跟踪比我的项目包含的文件多几个数量级的文件。有没有更好的方法来管理外部依赖项?

提前致谢

【问题讨论】:

    标签: version-control mercurial


    【解决方案1】:

    如果您可以找到这些库的 Mercurial、git 或 svn 存储库,您可以将它们设为您项目的 subrepositories。 Subrepos 通常不指向 repo,而是指向特定 repo 的特定版本,因此它符合您的目标。

    【讨论】:

      【解决方案2】:

      对于大型 二进制 依赖项,我建议将那些在工件存储库中的那些外部化,在任何 VCS 之外(尤其是 分布式 VCS,您在其中克隆大型存储库,因为版本化的二进制文件)。

      Java 有 Nexus,C++/C# 可以在 publish an artifactNuGet repo
      尝试将所有内容存储在 DVCS 存储库(Mercurial 或 Git)中会更好。

      【讨论】:

      • 我想过这个,但是当你有多个分支时它会变得混乱。您不一定要同时升级所有分支中的外部依赖项(thik dev vs qa 分支)
      • @Samwise:在管理外部依赖项时,您不必在 all 分支中升级:您的配置文件(相当于 pom.xml)可以有不同的内容(即它声明的依赖项的不同版本号)每个分支。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-16
      • 1970-01-01
      • 1970-01-01
      • 2010-11-30
      • 1970-01-01
      • 2010-09-15
      • 2011-09-04
      相关资源
      最近更新 更多