在哪里可以找到有关 v2 Git 包索引文件格式的文档


Where can I find documentation on the format of v2 Git pack index files?

我正在研究一个简单的 Git 的 PHP 只读实现,我已经让它大部分工作了,但我无法弄清楚 Git pack 索引文件(版本 2)的确切格式是什么。到目前为止,我发现的所有文档要么含糊不清,只专注于用 Git 本身来解释它们,要么仅适用于版本 1,根据我的理解,版本大不相同。使用现有的 Git 实现 PHP 不是一种选择(我已经尝试了一些,并不断遇到问题)。

我基本上需要一些关于 v2 pack 索引文件格式的简单通用文档,没有特定于 PHP 的内容。我在哪里可以找到这个?

Git 源代码中包含的文档似乎对 v1 和 v2 packfile 格式有相当完整的描述。

当然,还有许多其他软件实现可以理解这种格式,包括Python的dulwich,当然还有C的libgit2。 如果技术文档不清楚,研究这些可能有助于您的理解。

每个人似乎都在下面给出链接 #1 作为 git packfile 格式的权威文档。我发现它非常稀疏,我不太理解它。这需要很多挖掘,但我最终找到了链接#2。它更全面,更容易理解。我不明白我如何使用链接 #1 中的文档实现该格式。我想我可以用链接#2做到这一点。

我希望你成功了,最好有一个比目前存在的更完整的纯 php git 实现。

  1. http://git.kernel.org/?p=git/git.git;a=blob;f=Documentation/technical/pack-format.txt;h=1803e64e465fa4f8f0fe520fc0fd95d0c9def5bd;hb=HEAD

  2. http://home.cofares.net/GIT/book/7_the_packfile.html

Git packfile 格式不是特别容易处理 - 通过 libgit2 操作它可能比直接读取它要容易得多 - 查看 php-libgit2。