之前提到当存储数据内容时,会在objects文件夹下存储一个git对象。我们花些时间来看看 Git 是如何存储对象的。你将看来如何通过 Ruby 脚本语言存储一个 blob 对象 ,有必要了解一下对象是如何被存储的。以git设计哲学中的test1.txt为例分析blob对象如何被计算校验和?如何被存储?是否和直接调用git命令的结果一致?
sha-1校验和计算
我们需要验证通过ruby计算出来的检验和与这个一致。
为了验证,新建一个git仓库
$ mkdir blobtest $ cd blobtest
$ git init
Initialized empty Git repository in /Users/lyc/Desktop/tg/.git/
同样新建一个文件test1.txt,内容为test1,并把它加入暂存区
$ echo test1 > test1.txt $ git add test1.txt
gitt使用'blob ' + len(content) + ' ' + content作为文件内容
blob表示对象类型为blob类型,
len表示内容的长度