設定和配置
獲取和建立專案
基本快照
分支與合併
共享和更新專案
檢查和比較
打補丁
除錯
電子郵件
外部系統
伺服器管理
指南
管理
底層命令
- 2.43.1 → 2.50.1 無更改
-
2.43.0
2023-11-20
- 2.38.1 → 2.42.4 無更改
-
2.38.0
2022-10-02
描述
Git 捆綁包格式是一種同時表示引用(refs)和 Git 物件(objects)的格式。捆綁包是一個類似於 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”會發送的包資料流,如果你從一個具有上述“引用”中記錄的引用的倉庫中抓取到另一個具有指向上述“前置條件”中列出的物件的引用的倉庫中。
在捆綁包格式中,前置物件 ID 後面可以跟一個註釋。這是一個註釋,它沒有特定的含義。捆綁包的寫入者可以在此處放置任何字串。捆綁包的讀取者必須忽略該註釋。
功能
因為沒有協商的機會,未知的功能會導致 *git bundle* 中止。
-
object-format
指定所使用的雜湊演算法,其值可以與extensions.objectFormat
配置值相同。 -
filter
指定一個物件過濾器,如同 git-rev-list[1] 中的--filter
選項。解包後,生成的 pack-file 必須標記為.promisor
pack-file。