【发布时间】:2011-06-05 12:19:17
【问题描述】:
我正在开展一个项目,该项目利用了一些大型的 3rd 方库,例如 boost、tbb 和 ACE。我想准确控制在我的项目中使用这些 3rd 方库的哪些版本,而不是依赖于构建机器中可用的任何内容。过去,我通过将这些库添加到我的项目存储库中来完成此类事情。这工作正常,但它确实减慢了 mercurial 的速度,迫使它跟踪比我的项目包含的文件多几个数量级的文件。有没有更好的方法来管理外部依赖项?
提前致谢
【问题讨论】:
我正在开展一个项目,该项目利用了一些大型的 3rd 方库,例如 boost、tbb 和 ACE。我想准确控制在我的项目中使用这些 3rd 方库的哪些版本,而不是依赖于构建机器中可用的任何内容。过去,我通过将这些库添加到我的项目存储库中来完成此类事情。这工作正常,但它确实减慢了 mercurial 的速度,迫使它跟踪比我的项目包含的文件多几个数量级的文件。有没有更好的方法来管理外部依赖项?
提前致谢
【问题讨论】:
如果您可以找到这些库的 Mercurial、git 或 svn 存储库,您可以将它们设为您项目的 subrepositories。 Subrepos 通常不指向 repo,而是指向特定 repo 的特定版本,因此它符合您的目标。
【讨论】:
对于大型 二进制 依赖项,我建议将那些在工件存储库中的那些外部化,在任何 VCS 之外(尤其是 分布式 VCS,您在其中克隆大型存储库,因为版本化的二进制文件)。
Java 有 Nexus,C++/C# 可以在 publish an artifact 中 NuGet repo。
尝试将所有内容存储在 DVCS 存储库(Mercurial 或 Git)中会更好。
【讨论】: