繁体   English   中英

git如何区分经过简化的打包记录类型?

[英]How can git differentiate deltified pack record types?

在一个包文件中,有一些记录,根据这篇文章,这些记录具有存储在标题中的类型以及一些其他元数据。

查看JGit源代码,我可以看到以下值。

  • 0-扩展
  • 1-提交
  • 2-树
  • 3-BLOB
  • 4-标签
  • 5-预留
  • 6-OFS_DELTA
  • 7-REF_DELTA

但是,如果对对象进行了删除,则标头中的类型将设置为6或7,此后似乎没有添加标头来显示有效负载的类型,只是获取原始数据和增量数据的某种方法。

git如何辨别已删除包装记录的类型,以便它不会混淆类型?

根据设计,Git不会存储不同类型的对象的增量。 您可以在Documentation/technical/pack-heuristics.txt文件中随Git源代码提供的冗长的描述/讨论中找到对此的确认。

<gitster>(…)这意味着:

  • 我们不会增量不同的对象类型。
  • (…)

因此,可以从以下任一情况推断对象类型:

  • REF_DELTA:打包文件条目的前20个字节引用的对象
  • OFS_DELTA:对象在包中的位置较早(有关详细信息,请参见Documentation/technical/pack-format.txt

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM