SYNOPSIS

*.bundle
*.bdl

DESCRIPTION

Git バンドル形式は、 ref と Git オブジェクトの両方を表す形式です。 バンドルは、 git-show-ref(1) のような形式のヘッダーの後に *.pack 形式のパックが続きます。

この形式は git-bundle(1) コマンドで作成・読み込みができ、 git-fetch(1)git-clone(1) などでサポートされています。

FORMAT

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

SEMANTICS

Gitバンドルはいくつかの部分で構成されています。

  • capabilities (機能)はv3形式のみであり、バンドルを正しく読み取るために必要な機能を示します。

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

  • references には、履歴グラフのヒントが記録されています。つまり、バンドルのリーダーがそこから `git fetch ` できるモノです。

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

バンドル形式では、前提条件(prerequisite)の obj-id の後にコメントを付けることができます。 これはコメントであり、特別な意味はありません。 バンドルの作成者は、ここに任意の文字列を入れてもいいです。 バンドルのリーダーはコメントを無視しなければなりません。

Note on the shallow clone and a Git bundle

注意: 前提条件は、浅いクローンの境界(shallow-clone boundary)を表していないことに注意してください。 前提条件と浅いクローンの境界のセマンティクスは異なり、Gitバンドルv2形式は浅いクローンのリポジトリを表すことはできません。

CAPABILITIES

不明な機能は、 交渉(negotiation)の機会がないため、 git bundle の中止(abort)を引き起こします。

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

  • filter は、git-rev-list(1)--filter オプションのようにオブジェクト・フィルタを指定します。 生成されたパック・ファイルは、バンドル解除(unbundle)後に .promisor パック・ファイルとしてマークする必要があります。

GIT

Part of the git(1) suite