git如何知道包文件的sha1名称?

时间:2015-01-05 23:08:18

标签: git

假设情况: 我有一个git存储库,我有索引,HEAD,refs,packed-refs等。 我不知道.git / objects / pack

中包文件的名称

git如何找出包文件的名称?有没有办法从索引文件中计算包文件的名称?

更新: .git / objects / info / packs是我最接近我正在寻找的东西。但是这个文件并不总是存在。

1 个答案:

答案 0 :(得分:4)

作为一般规则,git只读取objects/pack目录的内容:它不知道包文件SHA-1值的先验。但是,当它创建一个 new 包文件时,它会计算一个SHA-1并将其用作包文件的名称;并且索引的名称必须与pack-file的名称相同,所以如果

objects/pack/pack-1713881825f0238230418a7f843a8c9af9b70eea.pack

存在,然后

objects/pack/pack-1713881825f0238230418a7f843a8c9af9b70eea.idx
例如,

也应该存在(通过查看目录找到这些名称,对这些SHA-1没有特别的意义)。

可能还有.keep.bitmap个文件对应于任何给定的SHA-1(位图在git 2.0.0中似乎是新的)。

有关包文件的更有趣的启示,请参阅

Documentation/technical/pack-heuristics.txt
在git源码中。 : - )