セットアップと設定
プロジェクトの取得と作成
基本的なスナップショット
ブランチとマージ
プロジェクトの共有と更新
検査と比較
パッチ適用
デバッグ
メール
外部システム
サーバー管理
- 2.43.1 → 2.50.1 変更なし
-
2.43.0
2023-11-20
- 2.38.1 → 2.42.4 変更なし
-
2.38.0
2022-10-02
説明
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 bundleを中止させます。
-
object-format
は使用中のハッシュアルゴリズムを指定し、extensions.objectFormat
設定値と同じ値を取ることができます。 -
filter
は、git-rev-list[1] の--filter
オプションと同様にオブジェクトフィルタを指定します。結果のパックファイルは、バンドル解除後に.promisor
パックファイルとしてマークする必要があります。
GIT
git[1]スイートの一部