我正在研究 Git 的一个简单的 PHP 只读实现,并且大部分时间都在工作,但我无法弄清楚 Git 包索引文件(版本 2)的确切格式是什么。到目前为止,我发现的所有文档要么含糊不清,只专注于用 Git 本身来解释它们,要么只适用于版本 1,据我了解,版本 1 有很大不同。不能选择为 PHP 使用现有的 Git 实现(我已经尝试了一些,并且不断遇到问题)。
我基本上需要一些关于 v2 包索引文件格式的简单通用文档,没有特定于 PHP 的文档。我在哪里可以找到这个?
Git 源代码中包含的文档似乎对 v1 和 v2 包文件格式有相当完整的描述。
当然,还有许多其他软件实现可以理解这种格式,包括Python 的 dulwich,当然还有C 的libgit2。如果技术文档不清楚,研究这些可能有助于您理解。
每个人似乎都将下面的链接 #1 作为 git packfile 格式的权威文档。我发现它非常稀疏,我不太了解它。花了很多时间挖掘,但我最终找到了链接 #2。它更全面,更容易理解。我看不出如何使用链接 #1 中的文档来实现该格式。我想我可以通过链接 #2 做到这一点。
我希望你能成功,最好有一个比目前存在的更完整的纯 PHP git 实现。
Git packfile 格式不是特别容易处理 - 通过 libgit2 操作它可能比直接读取它更容易 - 查看php-libgit2。