英语 ▾ 主题 ▾ 最新版本 ▾ gitformat-bundle 上次更新于 2.43.0

名称

gitformat-bundle - bundle 文件格式

概要

*.bundle
*.bdl

描述

Git bundle 格式是一种表示引用和 Git 对象的格式。 bundle 类似于 git-show-ref[1] 格式的头部,后跟 *.pack 格式的 pack。

该格式由 git-bundle[1] 命令创建和读取,并由例如 git-fetch[1]git-clone[1] 支持。

格式

我们将使用 ABNF 符号来定义 Git bundle 格式。有关详细信息,请参阅 gitprotocol-common[5]

v2 bundle 看起来像这样

bundle    = signature *prerequisite *reference LF pack
signature = "# v2 git bundle" LF

prerequisite = "-" obj-id SP comment LF
comment      = *CHAR
reference    = obj-id SP refname LF

pack         = ... ; packfile

v3 bundle 看起来像这样

bundle    = signature *capability *prerequisite *reference LF pack
signature = "# v3 git bundle" LF

capability   = "@" key ["=" value] LF
prerequisite = "-" obj-id SP comment LF
comment      = *CHAR
reference    = obj-id SP refname LF
key          = 1*(ALPHA / DIGIT / "-")
value        = *(%01-09 / %0b-FF)

pack         = ... ; packfile

语义

Git bundle 由几个部分组成。

  • “Capabilities”(仅在 v3 格式中)指示 bundle 正确读取所需的功能。

  • “Prerequisites”列出 bundle 中未包含的对象,bundle 的读取器必须已经拥有这些对象才能使用 bundle 中的数据。存储在 bundle 中的对象可能引用先决条件对象和从它们可访问的任何内容(例如,bundle 中的树对象可以引用从先决条件可访问的 blob),和/或表示为针对先决条件对象的 delta。

  • “References”记录历史图的提示,即 bundle 的读取器可以从中“git fetch”的内容。

  • “Pack”是 pack 数据流“git fetch”将发送的,如果您从具有“References”中记录的引用的存储库提取到具有指向“Prerequisites”中列出的对象的引用的存储库中。

在 bundle 格式中,可以在先决条件 obj-id 之后添加注释。 这是一个注释,它没有任何特定含义。 bundle 的写入者可以在此处放置任何字符串。 bundle 的读取器必须忽略注释。

关于浅克隆和 Git bundle 的说明

请注意,先决条件并不代表浅克隆边界。先决条件的语义和浅克隆边界的语义是不同的,Git bundle v2 格式无法表示浅克隆存储库。

功能

由于没有协商的机会,未知功能会导致git bundle中止。

  • object-format 指定使用的哈希算法,并且可以采用与 extensions.objectFormat 配置值相同的值。

  • filter 指定对象过滤器,如 git-rev-list[1] 中的 --filter 选项。 解包后,生成的 pack 文件必须标记为 .promisor pack 文件。

GIT

属于 git[1] 套件的一部分

scroll-to-top