Git
English ▾ 主題 ▾ 最新版本 ▾ gitformat-bundle 最後更新於 2.43.0

名稱

gitformat-bundle - 捆綁檔案格式

概要

*.bundle
*.bdl

描述

Git 捆綁格式是一種表示參考 (refs) 和 Git 物件的格式。捆綁檔案的開頭是一個類似 git-show-ref[1] 的標頭,接著是一個 *.pack 格式的封裝檔。

此格式由 git-bundle[1] 命令建立和讀取,並受到例如 git-fetch[1]git-clone[1] 的支援。

格式

我們將使用 ABNF 表示法來定義 Git 捆綁格式。請參閱 gitprotocol-common[5] 以取得詳細資訊。

v2 捆綁檔案看起來像這樣

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    = 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 捆綁檔案由幾個部分組成。

  • "功能 (Capabilities)",僅在 v3 格式中存在,表示捆綁檔案需要正確讀取的功能。

  • "先決條件 (Prerequisites)" 列出未包含在捆綁檔案中的物件,且為了使用捆綁檔案中的資料,捆綁檔案的讀取器必須已具備的物件。捆綁檔案中儲存的物件可能會參考先決條件物件以及從它們可存取到的任何物件 (例如,捆綁檔案中的樹狀物件可以參考從先決條件可存取的 Blob),和/或表示為相對於先決條件物件的差異。

  • "參考 (References)" 記錄歷史圖的提示,也就是說,捆綁檔案的讀取器可以從它 "git fetch" 的內容。

  • "封裝 (Pack)" 是 "git fetch" 會傳送的封裝資料流,如果您從具有上述 "參考 (References)" 中記錄的參考的儲存庫,提取到具有指向上述 "先決條件 (Prerequisites)" 中列出的物件的參考的儲存庫。

在捆綁檔案格式中,先決條件物件 ID (obj-id) 後面可以跟隨一個註解。這是一個註解,沒有特定含義。捆綁檔案的寫入者可以在此處放置任何字串。捆綁檔案的讀取器必須忽略註解。

關於淺層複製和 Git 捆綁檔案的注意事項

請注意,先決條件不代表淺層複製的邊界。先決條件的語意和淺層複製的邊界是不同的,且 Git 捆綁 v2 格式無法表示淺層複製的儲存庫。

功能

由於沒有協商的機會,未知的功能會導致 git bundle 中止。

  • object-format 指定使用的雜湊演算法,可以採用與 extensions.objectFormat 配置值相同的值。

  • filter 指定物件篩選器,如同 git-rev-list[1] 中的 --filter 選項。產生的封裝檔案在解綁後必須標記為 .promisor 封裝檔案。

GIT

屬於 git[1] 套件的一部分

scroll-to-top