作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Git 的 blob 对象文件格式为 blob <size string>\0<data>
。Blob 识别 SHA-1 哈希不是单独根据 Blob 内容计算的,而是根据 header 增强的 Blob 数据计算的(如上所述)。
作为一个纯粹主义者,我不喜欢那种架构。它将数据的通用属性(其 SHA1 哈希值)与一些特定于 git 的 header 混合在一起。
纯数据 blob 存储的另一个优点是可以使用“写时复制”将文件添加到索引,而不是复制整个文件。所需的空间可以减半,并且某些操作可以变得更快。
那么,为什么 Git 开发人员选择使用基于 header 的格式而不是纯数据格式呢?
附注AFAIK 在 Git 的早期,SHA-1 哈希是基于压缩数据的。
最佳答案
AFAIK in the early days of Git the SHA-1 hash was based on the compressed data.
是的,这会导致各种“优化”,例如 commit 65c2e0c, git 0.99, June 2015 :
Find size of SHA1 object without inflating everything.
但是“How does git compute file hashes?”中所示的新格式可以追溯到:
git diff
,位于 commit 051308f (git 1.4.0-rc1, May 2006) git fast-import
,始于 commit db5e523 (git 1.5.0, Aug. 2006) 每次对数据本身执行任何操作都需要数据的长度。
关于git - 为什么 Git 在 blob 文件中存储(和散列)blob 大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34425353/
我是一名优秀的程序员,十分优秀!