2011-06-04 98 views
3

我正在使用几个大型第三方库(如boost,tbb和ACE)的项目。我想精确控制这些第三方库在我的项目中使用的版本,而不是依赖构建机器中可用的任何版本。过去我通过将这些库添加到我的项目存储库中来完成这种事情。这工作正常,但它确实减慢了mercurial,迫使它跟踪比我的项目包含的文件多两个数量级的文件。有没有更好的方式来管理外部依赖?使用mercurial管理大型外部依赖关系

在此先感谢

回答

1

对于大型二进制依赖,我会建议外在那些神器库,以外的任何VCS(尤指分布式 VCS你在哪里克隆,因为版本的二进制文件的周围巨大的资源库)。

Java有Nexus,C++/C#可以publish an artifactNuGet repo
这将是最好的,试图存储在DVCS回购(Mercurial或Git)的一切。

+0

我想过这个,但是当你有多个分支时它会变得混乱。你不一定要同时在所有分支中升级你的外部依赖(thik dev vs qa分支) – Samwise 2011-06-05 01:12:10

+0

@Samwise:当你管理外部依赖时,你不必在* all *分支中升级:你的配置文件(相当于pom.xml)可以为每个分支具有不同的内容(即它声明的依赖关系的不同版本号)。 – VonC 2011-06-05 04:35:09

2

如果您可以找到适用于这些库的Mercurial,git或svn repos,则可以将它们设置为项目的subrepositories。 Subrepos一般不会指向回购,而是指向特定版本的特定回购,因此它符合您的目标。