SYNOPSIS

git commit-graph verify [--object-dir <dir>] [--shallow] [--[no-]progress]
git commit-graph write <options> [--object-dir <dir>] [--[no-]progress]

DESCRIPTION

シリアル化されたコミットグラフファイルを管理します。

OPTIONS

--object-dir

パックファイルとコミットグラフファイルの場所として、指定のディレクトリを使用します。このパラメータは、完全な .git ディレクトリではなく、objectsディレクトリのみを持つ代替の場所を指定するために存在します。コミットグラフファイルは <dir>/info ディレクトリにあり、パックファイルは <dir>/pack にあるものと期待されます。ディレクトリを絶対パスにすることができなかった場合、または既知のオブジェクトディレクトリと一致しない場合、 git commit-graph ... はゼロ以外のステータスで終了します。

--[no-]progress

進行状況を明示的にオン/オフにします。どちらも指定されていない場合、標準エラーが端末に接続されていれば進行状況が表示されます。

COMMANDS

write

パックファイルで見つかったコミットに基づいてコミットグラフファイルを書き出します。構成オプション core.commitGraph が無効になっている場合、このコマンドは警告を出力し、コミットグラフファイルを書き込まずに成功を返します。

--stdin-packs オプションと共に使用して、指定のパックインデックス内のオブジェクトのみをウォークすることにより、新しいコミットグラフを生成します。 (--stdin-commits または --reachable と組み合わせることはできません。)

--stdin-commits オプションと共に使用して、16進数のOIDのリストとしてstdinで指定されたコミットから始まるコミットを1行に1つずつウォークして、新しいコミットグラフを生成します。(直接に、またはタグの皮むきによって、)非コミットに解決されるOIDは黙って無視されます。不正な形式のOID、または存在しないOIDは、エラーを生成します。 (--stdin-packs または --reachable と組み合わせることはできません。)

--reachable オプションと共に使用して、すべての参照で開始するコミットをウォークして、新しいコミットグラフを生成します。 (--stdin-commits または --stdin-packs と組み合わせることはできません。)

--append オプションと共に使用して、既存のコミットグラフファイルに存在するすべてのコミットを含めます。

--changed-paths オプションと共に使用すると、コミットとその最初の親(first parent)の間で変更されたパスに関する情報を計算して書き込みます。この操作は、大規模なリポジトリでは時間がかかる場合があります。 git log -- <path> を使用すると、ディレクトリまたはファイルの履歴を取得するためのパフォーマンスが大幅に向上します。このオプションが指定されている場合、その後のコミットグラフ書き込みでは、このオプションが指定されたものであると自動的に想定されます。このデータの保存を停止するには、 --no-changed-paths を使用します。

--max-new-filters=<n> オプションと共に使用して、(--changed-paths が指定されている場合、)最大で n の新しいブルームフィルター(Bloom filters)を生成します。 n-1 の場合、制限は適用されません。この制限に対しては、新しいレイヤーに存在するコミットのみがカウントされます。以前のレイヤーでブルームフィルターをさかのぼって計算するには、 --split=replace を使用することをお勧めします。 commitGraph.maxNewFilters 構成をオーバーライドします。

--split[=<strategy>] オプションと共に使用して、 <dir>/info/commit-graphs に格納されている複数のコミットグラフファイルのチェーンとしてコミットグラフを記述します。コミットグラフレイヤーは、戦略およびその他の分割オプションに基づいてマージされます。コミットグラフにまだ含まれていない新しいコミットは、新しい先端ファイル(tip file)に追加されます。以下のマージ条件が満たされた場合、このファイルは既存のファイルとマージされます:

  • --split=no-merge が指定されている場合、マージは実行されず、残りのオプションは無視されます。 --split=replace は、既存のチェーンを新しいチェーンで上書きします。裸の --split は後続のオプションに従います。 (注意: コミットグラフのチェーンをマージすると、既存のチェーンが長さ1のチェーンに置き換えられ、最初で唯一の増分がグラフ全体を保持することに注意してください)。

  • --size-multiple=<X> が指定されていない場合は、 Xを2に等しくします。新しい先端ファイル(tip file)にN個のコミットがあり、以前の先端にM個のコミットがあり、「X 掛ける N」が M より大きい場合は、代わりに2つのファイルを1つのファイルにマージします。

  • --max-commits=<M> オプションの M が正の整数で指定され、新しい先端ファイル(tip file) に M 以上のコミットがある場合は、代わりに新しい先端を以前の先端とマージします。

    最後に、 --expire-time=<datetime> が指定されていない場合は、 datetimeを現在の時刻とします。分割コミットグラフ(split commit-graph)を書き込んだ後、変更時刻がdatetimeより古い未使用のコミットグラフをすべて削除します。

verify

コミットグラフファイルを読み取り、その内容をオブジェクトデータベースと照合して確認(verify)します。破損したデータをチェックするために使用されます。

--shallow オプションと共に使用すると、分割コミットグラフ(split commit-graphs)のチェーン内の先端コミットグラフファイルのみをチェックします。

EXAMPLES

  • パックされたコミットのコミットグラフファイルをローカルの .git ディレクトリに書き込みます。

    $ git commit-graph write
  • <pack-index> のコミットを使用して、現在のコミットグラフファイルを拡張するコミットグラフファイルを書き出します。

    $ echo <pack-index> | git commit-graph write --stdin-packs
  • 到達可能なすべてのコミットを含むコミットグラフファイルを作成します。

    $ git show-ref -s | git commit-graph write --stdin-commits
  • 現在のコミットグラフファイル内のすべてのコミットと HEAD から到達可能なコミットを含むコミットグラフファイルを書き出します。

    $ git rev-parse HEAD | git commit-graph write --stdin-commits --append

GIT

Part of the git(1) suite