日本語 ▾ トピック ▾ 最新バージョン ▾ gitformat-bundle は 2.43.0 で最終更新されました

名前

gitformat-bundle - バンドルファイルフォーマット

概要

*.bundle
*.bdl

説明

Gitバンドルフォーマットは、参照とGitオブジェクトの両方を表現するフォーマットです。バンドルは、git-show-ref[1]に似たフォーマットのヘッダーと、*.packフォーマットのパックで構成されます。

このフォーマットはgit-bundle[1]コマンドによって作成・読み取られ、git-fetch[1]git-clone[1]などによってサポートされています。

フォーマット

Gitバンドルフォーマットを定義するためにABNF表記法を使用します。詳細については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"は、バンドルに含まれていないオブジェクトをリストアップし、バンドルの読み取り元がバンドル内のデータを使用するために、すでに持っている必要があるオブジェクトを示します。バンドルに格納されたオブジェクトは、前提となるオブジェクトやそこから到達可能なもの(例:バンドル内のツリーオブジェクトは、前提条件から到達可能なブロブを参照できる)を参照でき、また、前提となるオブジェクトに対する差分として表現することもできます。

  • "References"は履歴グラフの先端、つまりバンドルの読み取り元がそこから"git fetch"できるものを記録します。

  • "Pack"は、上記の"References"に記録された参照を持つリポジトリから、上記の"Prerequisites"にリストされたオブジェクトを指す参照を持つリポジトリにフェッチする場合に、"git fetch"が送信するパックデータストリームです。

バンドルフォーマットでは、前提となるobj-idの後にコメントを記述できます。これはコメントであり、特定の意味はありません。バンドルの書き込み元はここに任意の文字列を記述できます。バンドルの読み取り元はコメントを無視する必要があります。

シャロークローンとGitバンドルに関する注意

前提条件はシャロークローンの境界を表すものではありません。前提条件とシャロークローンの境界のセマンティクスは異なり、Gitバンドルv2フォーマットはシャロークローンリポジトリを表すことはできません。

機能

ネゴシエーションの機会がないため、不明な機能はgit bundleを中止させます。

  • object-format は使用中のハッシュアルゴリズムを指定し、extensions.objectFormat 設定値と同じ値を取ることができます。

  • filter は、git-rev-list[1]--filter オプションと同様にオブジェクトフィルタを指定します。結果のパックファイルは、バンドル解除後に .promisor パックファイルとしてマークする必要があります。

GIT

git[1]スイートの一部

scroll-to-top