gpt4 book ai didi

git - 为什么 Git 在 blob 文件中存储(和散列)blob 大小?

转载 作者:行者123 更新时间:2023-12-02 19:53:54 30 4
gpt4 key购买 nike

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 - 为什么 Git 在 blob 文件中存储(和散列)blob 大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34425353/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com