Git
日本語 ▾ トピック ▾ 最新バージョン ▾ 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バンドルはいくつかの部分で構成されています。

  • 「機能」はv3フォーマットにのみ存在し、バンドルを正しく読み取るために必要な機能を示します。

  • 「前提条件」は、バンドルに含まれておらず、バンドルのデータを使用するために、バンドルのリーダーが既に持っていなければならないオブジェクトをリストします。バンドルに格納されているオブジェクトは、前提条件オブジェクトおよびそこから到達可能なもの(例えば、バンドル内のツリーオブジェクトは、前提条件から到達可能なBLOBを参照できる)を参照したり、前提条件オブジェクトに対するデルタとして表現したりできます。

  • 「参照」は、履歴グラフの先端、つまり、バンドルのリーダーがバンドルから「git fetch」できるものを記録します。

  • 「パック」は、「参照」に記録されている参照を持つリポジトリから、「前提条件」にリストされているオブジェクトを指す参照を持つリポジトリにフェッチする場合に、「git fetch」が送信するパックデータストリームです。

バンドルフォーマットでは、前提条件のオブジェクトIDの後にコメントを付けることができます。これはコメントであり、特別な意味はありません。バンドルのライターはここに任意の文字列を置くことができます。バンドルのリーダーはコメントを無視しなければなりません。

浅いクローンとGitバンドルに関する注意

前提条件は、浅いクローンの境界を表すものではないことに注意してください。前提条件と浅いクローンの境界のセマンティクスは異なり、Gitバンドルv2フォーマットは浅いクローンリポジトリを表すことができません。

機能

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

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

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

GIT

git[1]スイートの一部

scroll-to-top