git - Git如何管理大型二进制文件

  显示原文与译文双语对照的内容

我正在寻找如何处理我的源代码( 网络应用程序) 所依赖的大型二进制文件的观点。 我们目前正在讨论几个备选方案:

  1. 手动复制二进制文件。
    • 专业版:不确定。
    • 相反:我强烈反对这一点,因为它增加了设置新站点或者迁移旧站点时出错的可能性。 建立另一个障碍。
  2. 使用 。管理它们。
    • Pro: 删除'忘了'复制重要文件的可能性
    • 相反:增加存储库并降低管理code-base和 checkouts/clones/etc的灵活性需要相当多的时间。
  3. 独立存储库。
    • 在自己的repository,利:签出和以往一样/克隆的源代码速度快,正常,而图片会 archived.
    • 在 project,: 消除了具有简单的加拿大的有且仅有 git repository. 当然介绍一些我没有考虑过的其他东西。

你对这里有什么经验/想法?

另外:有谁拥有多个git仓库经验并在一个项目中管理它们?

更新: 文件是一个程序的图像,它使用这些文件生成 pdf 。 这些文件不会改变 often(as in years),但与程序非常相关。 没有文件,程序将无法运行。

时间:

如果程序就不能工作,而它似乎是分割成一个单独的,回购的文件是一个好主意。 我们有大量的测试套件,我们闯入一个单独的仓库,但这些都是真正的"辅助"文件。

但是,你可以在一个单独的仓库中管理这些文件,然后使用 git-submodule 将它们以理智的方式拖入你的项目中。 因此,你应该还保留了完整的历史的所有源代码,但就我的理解,你就自己仅有的一个相关修订你的图像的子模块。 git-submodule 工具应该帮助你保持代码的正确版本,使它的符合正确的图像版本。

下面是对来自 Git Book的子模块的一个很好的介绍。

我 discoverd git-annex 最近我发现的牛b 。 它是用来高效管理大型文件的。 我将它用于我的照片/音乐( 等等 ) 收藏。 git-annex的开发非常活跃。 文件的内容可以从git仓库中删除,只有树层次结构被 git ( 通过符号符号) 跟踪。 但是,要获取文件的内容,在拉/推之后需要第二步,e.g.:


$ 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

有很多可用的命令,并且在网站上有一个很棒的文档。 debian上有一个软件包。

你也可以使用 git-fat 。 我喜欢的是它只依赖于股票 python 和 rsync 。 它还支持通常的git工作流,使用以下自解释命令:


git fat init
git fat push
git fat pull

另外,你需要签入 gitfat 。文件并修改你的。gitattributes,以指定你希望 git fat管理的文件扩展名。

使用普通的git添加添加二进制,它又根据你的gitattributes规则调用 git fat 。

最后,它还可以将优势在于,可以将位置移动到你的二进制文件实际上是存储在资源库以及用户和支持什么rsync它会自动共享。

使用的是 git-svn bridge,更新:不要使用git-fat如果你的所在, 它将最终从你的subversion仓库中删除二进制文件。 但是,如果你使用的是纯git知识库,那么它就会很漂亮。

另一个解决方案,因为 2015年04月 是 Git大文件存储( LFS ) ( 按 GitHub ) 。

服务器支持it,它使用 git-lfs ( 请参见 git-lfs.github.com ) 和 tested: lfs-test-server:
你只能在git仓库中存储元数据,而在别处存储大文件。

https://cloud.githubusercontent.com/assets/1319791/7051226/c4570828-ddf4-11e4-87eb-8fc165e5ece4.gif

...