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