Git的blob对象文件格式为
作为一个纯粹主义者,我不喜欢这种架构。它将数据的通用属性(其SHA1哈希值)与一些Git特定的头部混合在一起。
纯数据blob存储的另一个优点是,可以使用“写时复制”将文件添加到索引中,而不是复制整个文件。所需空间可以减半,并且某些操作可能会变得更快。
那么,为什么Git开发人员选择使用基于头部的格式而不是纯数据格式呢?
P.S. 据我所知,在Git的早期阶段,SHA-1哈希基于压缩数据。
blob <size string>\0<data>
。计算blob标识SHA-1哈希值不仅来自blob内容,还包括头部增强的blob数据(如上所述)。作为一个纯粹主义者,我不喜欢这种架构。它将数据的通用属性(其SHA1哈希值)与一些Git特定的头部混合在一起。
纯数据blob存储的另一个优点是,可以使用“写时复制”将文件添加到索引中,而不是复制整个文件。所需空间可以减半,并且某些操作可能会变得更快。
那么,为什么Git开发人员选择使用基于头部的格式而不是纯数据格式呢?
P.S. 据我所知,在Git的早期阶段,SHA-1哈希基于压缩数据。