使用 Git 管理大型二进制文件

问题描述

如果程序在没有文件的情况下无法运行,那么将它们拆分为单独的存储库似乎是个坏主意。我们有大型测试套件,我们将其分解为单独的存储库,但这些是真正的“辅助”文件

但是,您可能能够在单独的 repo 中管理文件,然后使用git-submodule以理智的方式将它们拉入您的项目。因此,您仍然拥有所有源代码的完整历史记录,但据我了解,您只有图像子模块的一个相关修订版。该git- submodule工具应帮助您保持正确版本的代码与正确版本的图像保持一致。

这是Git Book中对子模块的一个很好的介绍。

解决方法

我正在寻找有关如何处理我的源代码(Web 应用程序)所依赖的大型二进制文件的意见。我们目前正在讨论几种替代方案:

  1. 手动复制二进制文件。
    • 临:不确定。
    • 反对:我强烈反对这一点,因为它增加了设置新站点/迁移旧站点时出错的可能性。建立另一个障碍。
  2. 使用Git 管理它们。
    • 优点:消除了“忘记”复制重要文件的可能性
    • Contra:使存储库膨胀并降低管理代码库和签出、克隆等的灵活性,这将需要相当长的时间。
  3. 单独的存储库。
    • 优点:签出/克隆源代码的速度与以往一样快,并且图像已正确存档在自己的存储库中。
    • Contra:消除了在项目中拥有 唯一 的 Git 存储库的简单性。它肯定会介绍一些我没有想到的其他事情。

您对此有何经验/想法?

另外:有没有人有使用多个 Git 存储库并在一个项目中管理它们的经验?

这些文件是生成包含这些文件的 PDF 的程序的图像。这些文件不会经常更改(如几年),但它们与程序非常相关。没有这些文件,该程序将无法运行。