首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在git中,一个文件可以由多个blob组成吗?

在git中,一个文件可以由多个blob组成吗?
EN

Stack Overflow用户
提问于 2018-12-22 22:41:58
回答 2查看 108关注 0票数 1

我想知道git (至少在理论上)是否允许一个给定的文件由多个blob组成。

这在以下情况下会很有用:

代码语言:javascript
复制
commit-1: composed of big file F.
commit-2: edit on F, one line in its contents was edited.

如果发生这种情况,git可以将F的原始blob分解为3个blob,将commit-1指向这三个blob(让我们称它们为A、B和C),现在将commit-2指向blob A、B‘和C。这在某些病理情况下可能会在内存/磁盘空间中节省千兆。

根据我对git树和blobs的理解,git不是这样设计的。我是不是遗漏了什么?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2018-12-22 23:43:08

你不是。git并不是为处理大文件而设计的,它的存储机制显示了这一点。遗憾的是,即使是Git LFS在这里也帮不上忙。

最初,你的新文件将被写成一个松散对象--这是一个zlib压缩的完整blob,即使它只是现有blob的1个字节的改变。

最终,此文件将存储在一个包文件中,其中它可能与相邻的blobs一起被增量压缩,但不能保证。

您可以在libgit2中构建自定义存储后端,添加您自己的机制,该机制对于您自己的已知数据格式是有效的。但是你不会与命令行git有任何兼容性,所以对于大多数应用来说,这将是一个不幸的情况。

票数 1
EN

Stack Overflow用户

发布于 2018-12-22 22:46:19

Git使用增量压缩来有效地打包blobs。https://en.wikipedia.org/wiki/Delta_encoding#Git

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53896573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档