你如何在版本控制系统中管理二进制依赖?

11
我想知道在团队合作中,保持二进制依赖项的最佳方法是什么。
我们有许多跨平台应用程序的依赖项。这包括32/64 * linux/windows/mac版本的商业库和一些编译在非标准、不太容易重现的环境中的开源库。 此外,我们还有图形资源,有时很大(250Mb很常见)。
库需要更新,有时需要重新编译等。资源也需要更新,并且我们需要它们与代码同步。
我想实现一键更新和构建系统。
我尝试将所有内容保存在SVN中,但即使数据没有修改,也会导致非常漫长的更新时间。
现在我正在考虑一些脚本化系统,只有在需要时才会下载和解压缩带有库和资产的压缩文件,作为构建事件。脚本将被版本化,日期不会。
但也许已经有现成的解决方案了?你有任何相关经验吗?

3
你有考虑过使用像ArtifactoryNexus这样的制品库吗? - atodd
2个回答

4
使用Mercurial 2.0,您可以使用largefiles extension来管理此类文件。它们将被保留在正常历史记录之外并按需下载。该扩展仍然存在一些尖锐的边缘,因此请确保您至少使用版本2.0.1。
话虽如此,我更喜欢使用专门的工具进行依赖关系管理,因为最好在源代码控制系统之外完成。

3

对于这个问题,子模块是非常有效的解决方法。在一个项目中,我将应用程序的代码托管在 unfuddle.com 上,而所有 DLL 等(较大的)公共内容则保留在 github 上。这样做可以很好地利用我们的私有存储空间。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接