在版本控制系统中保留二进制依赖关系的方法是什么?

时间:2011-12-07 21:25:07

标签: git svn version-control mercurial cmake

我想知道以“团队友好”的方式保持二进制依赖关系的最佳方法是什么。

我们对跨平台应用程序有很多依赖关系。这包括32/64 * linux / windows / mac版本的商业库和一些非标准的,无需重现的环境中编译的开源库。 此外,我们的图形资产有时很大(250Mb很常见)。

库需要更新,有时需要重新编译等。资产也会更新,我们需要它们与代码同步。

我希望实现接近一次点击更新和构建系统的功能。

我尝试将所有内容保留在SVN中,但即使数据未被修改,也会导致更新。

现在我正在考虑一些脚本系统,只有在需要时才会将libs和资产下载和解压缩为压缩文件,作为构建事件。脚本将被版本化,日期不会。

但也许有准备使用解决方案?你对此有什么经验吗?

2 个答案:

答案 0 :(得分:4)

使用Mercurial 2.0,您可以使用largefiles extension来管理此类文件。它们将保持在正常历史之外并按需下载。扩展程序仍然有一些尖锐的边缘,因此请确保至少使用版本2.0.1。

话虽如此,我更倾向于使用专用工具 - 因为依赖管理最好在源代码管理系统之外完成。

答案 1 :(得分:3)

子模块非常适用于此。在一个项目中,我在unfuddle.com中私下托管了应用程序的代码,并且无论如何都在公共域中的所有DLL等(大型东西)保存在github中。最终只使用了很少的私人存储空间。