【发布时间】:2016-03-29 06:41:48
【问题描述】:
Git 的 blob 对象文件格式为 blob <size string>\0<data>。
识别 Blob 的 SHA-1 哈希不是单独根据 Blob 内容计算的,而是根据标头增强的 Blob 数据计算的(如上所述)。
作为一个纯粹主义者,我不喜欢那种架构。它将数据的通用属性(其 SHA1 哈希)与一些特定于 git 的标头混合在一起。
纯数据 blob 存储的另一个优点是可以使用“写时复制”将文件添加到索引中,而不是复制整个文件。所需空间可以减半,一些操作可以变得更快。
那么,为什么 Git 开发人员选择使用基于标头的格式而不是纯数据格式呢?
附: AFAIK 在 Git 的早期阶段,SHA-1 哈希是基于压缩数据的。
【问题讨论】:
-
我只能猜测“为什么”,但我怀疑这是为了让 git 可以读取对象的第一个块,解压缩,然后查看 malloc() 用于完整解压缩对象的内存量.
标签: git hash architecture blob