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]によってサポートされています。

形式

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形式にのみ存在する「機能(Capabilities)」は、バンドルが正しく読み取られるために必要な機能を示します。

  • 「前提条件(Prerequisites)」は、バンドルに含まれていないが、バンドル内のデータを使用するためにバンドルの読み取り側がすでに持っている必要があるオブジェクトをリストします。バンドルに格納されているオブジェクトは、前提条件となるオブジェクトや、それらから到達可能なもの(例:バンドル内のツリーオブジェクトが前提条件から到達可能なBLOBを参照する)、および/または前提条件となるオブジェクトに対するデルタとして表現される場合があります。

  • 「参照(References)」は、履歴グラフの先端、つまりバンドルの読み取り側がそこから「git fetch」できる内容を記録します。

  • 「パック(Pack)」は、「References」に記録された参照を持つリポジトリから、「Prerequisites」にリストされたオブジェクトを指す参照を持つリポジトリにフェッチした場合に、「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