用Git管理大型二进制文件

用Git管理大型二进制文件

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

  1. 手工复制二进制文件。
    • 不确定。
    • Contra:我强烈反对这样做,因为它增加了设置新站点/迁移旧站点时出错的可能性。建立另一个障碍来克服。
  2. 吉特.

    • PRO:消除“忘记”复制重要文件的可能性
    • Contra:膨胀存储库,降低管理代码库的灵活性,签出、克隆等将需要相当长的时间。
  3. 单独的存储库。
    • 支持:签出/克隆源代码的速度比以往任何时候都快,图像被正确地存档在自己的存储库中。
    • Contra:消除了拥有

      独一无二

      项目的Git存储库。它肯定介绍了一些我还没想过的事情。

你对此有何经验/想法?

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

这些文件是一个程序的图像,它用这些文件生成PDF。这些文件不会经常更改(像年一样),但它们与程序非常相关。如果没有文件,程序将无法工作。


忽然笑
浏览 943回答 3
3回答

陪伴而非守候

如果程序在没有文件的情况下无法工作,那么将它们分割成单独的回购是个坏主意。我们有大量的测试套件,我们把它们分成一个单独的回购程序,但这些都是真正的“辅助”文件。但是,您可以在单独的回购中管理这些文件,然后使用git-submodule以理智的方式把他们拉进你的项目。因此,您仍然拥有所有源的完整历史,但据我所知,您只需要对图像子模块进行一次相关的修订。这个git-submodule工具应该可以帮助您保持代码的正确版本与图像的正确版本保持一致。

烙印99

它是为有效管理大型文件而设计的。我把它用于我的照片/音乐(等等)收藏品。git-附件的发展非常活跃。文件的内容可以从Git存储库中删除,只有树层次结构被Git跟踪(通过符号链接)。然而,要获取文件的内容,必须在拔/推后进行第二步,例如:$ git annex add mybigfile $ git commit -m'add mybigfile' $ git push myremote $ git annex copy --to myremote mybigfile ## This command copies the actual content to myremote $ git annex drop mybigfile ## Remove content from local repo ... $ git annex get mybigfile ## Retrieve the content ## or to specify the remote from which to get: $ git annex copy --from myremote mybigfile

绝地无双

用于智能地将大型二进制文件存储在Git存储库中。您可能希望将其作为子模块使用,但不必担心存储库变得难以处理。他们的示例用例之一是在Git中存储VM映像。实际上,我还没有看到更好的压缩速率,但是我的存储库中并没有真正大型的二进制文件。你的里程可能不同。
打开App,查看更多内容
随时随地看视频慕课网APP