我在源代码控制下有一个大型代码库(以前是颠覆,现在是 git)。为了编译代码并运行测试,我使用了一组 3rd 方库。这些库可以分为几类L
- 仅限二进制文件
- 第三方来源
- 3rd 方来源 + 本地修改
每个库都有其 {Windows, Linux} X {debug, release} X {32bit, 64bit} 配置。此外,这些库随着时间的推移而发展,我的项目的不同版本使用这些库的不同版本/构建。
我的问题是存储这些第 3 方的最佳方式是什么?
这是我的一组偏好:
- 保持项目源存储库的大小较小
- 使项目源与第 3 方保持同步,以便我始终可以编译和运行旧版本
- 易于管理
- 跨平台
我尝试并想到了几种解决方案,但都不令人满意:
- 使用版本控制脚本从手动管理的 ftp 服务器获取二进制文件,该服务器包含所有版本的库。这可行,但需要仔细管理服务器上的目录结构。这很容易出错,因为有人可能会用新版本覆盖其中一个二进制文件。
- SVN externals - 当时 SVN externals 无法引用特定标签。今天我正在使用 git。
- Git 子模块 - 拉取可能很大的整个外部存储库。或者,它需要为每个库管理一个单独的存储库。子模块指向一个特定的标签,这意味着要么我得到所有的外部,当我只需要一些时,要么我在 git 树中模仿一些奇怪的文件系统。
我很清楚,第 3 方源代码需要存储在供应商分支的 git 中,但二进制文件和标头是另一回事。