日本語 ▾ トピック ▾ 最新バージョン ▾ git-commit-graph の最終更新は 2.46.0

名前

git-commit-graph - Git コミットグラフファイルの書き込みと検証

概要

git commit-graph verify [--object-dir <dir>] [--shallow] [--[no-]progress]
git commit-graph write [--object-dir <dir>] [--append]
			[--split[=<strategy>]] [--reachable | --stdin-packs | --stdin-commits]
			[--changed-paths] [--[no-]max-new-filters <n>] [--[no-]progress]
			<split-options>

説明

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

オプション

--object-dir

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

--[no-]progress

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

コマンド

write

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

--stdin-packs オプションを指定すると、指定されたパックインデックスのオブジェクトのみをたどって新しいコミットグラフを生成します。( --stdin-commits または --reachable とは組み合わせられません。)

--stdin-commits オプションを指定すると、標準入力で指定されたコミット (1行に1つのOIDを16進数でリスト) から開始してコミットをたどることで、新しいコミットグラフを生成します。コミットではない (直接的またはタグの剥がしによる) OIDは黙って無視されます。形式が不正なOIDまたは存在しないOIDはエラーを生成します。( --stdin-packs または --reachable とは組み合わせられません。)

--reachable オプションを指定すると、すべての参照から開始してコミットをたどることで、新しいコミットグラフを生成します。( --stdin-commits または --stdin-packs とは組み合わせられません。)

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

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

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

--split[=<strategy>] オプションを指定すると、コミットグラフは <dir>/info/commit-graphs に格納された複数のコミットグラフファイルのチェーンとして書き込まれます。コミットグラフのレイヤーは、戦略とその他の分割オプションに基づいてマージされます。コミットグラフにまだない新しいコミットは、新しい「チップ」ファイルに追加されます。次のマージ条件が満たされた場合、このファイルは既存のファイルとマージされます。

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

  • --size-multiple=<X> が指定されていない場合、X は2とします。新しいチップファイルに N 個のコミットがあり、以前のチップに M 個のコミットがあり、X 倍の NM より大きい場合、代わりに2つのファイルを1つのファイルにマージします。

  • 正の整数 M とともに --max-commits=<M> が指定されており、新しいチップファイルに M 個を超えるコミットがある場合、代わりに新しいチップを以前のチップとマージします。

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

verify

コミットグラフファイルを読み込み、その内容をオブジェクトデータベースに対して検証します。破損したデータをチェックするために使用されます。

--shallow オプションを指定すると、分割されたコミットグラフのチェーン内のチップコミットグラフファイルのみをチェックします。

  • ローカルの .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-config[1] ドキュメントから選択的に含まれています。内容はそちらで見られるものと同じです。

commitGraph.generationVersion

コミットグラフファイルの書き込みまたは読み込み時に使用する世代番号のバージョンタイプを指定します。バージョン1が指定されている場合、修正されたコミット日付は書き込まれたり読み込まれたりしません。デフォルトは2です。

commitGraph.maxNewFilters

git commit-graph write--max-new-filters オプションのデフォルト値を指定します (c.f., git-commit-graph[1])。

commitGraph.readChangedPaths

非推奨。true の場合は commitGraph.changedPathsVersion=-1 と、false の場合は commitGraph.changedPathsVersion=0 と同等です。(commitGraph.changedPathVersion も設定されている場合、commitGraph.changedPathsVersion が優先されます。)

commitGraph.changedPathsVersion

Git が読み書きする changed-path Bloom フィルターのバージョンを指定します。-1、0、1、または 2 のいずれかです。1より大きい値は、これらのバージョンをまだ理解していない古いバージョンの Git と互換性がない場合があることに注意してください。異なるバージョンの環境で操作する場合は注意が必要です。

デフォルトは -1 です。

-1 の場合、Git はリポジトリ内の changed-path Bloom フィルターのバージョンを使用し、存在しない場合はデフォルトで 1 を使用します。

0 の場合、Git は Bloom フィルターを読み込まず、書き込み指示があったときにバージョン 1 の Bloom フィルターを書き込みます。

1 の場合、Git はバージョン 1 の Bloom フィルターのみを読み込み、バージョン 1 の Bloom フィルターを書き込みます。

2 の場合、Git はバージョン 2 の Bloom フィルターのみを読み込み、バージョン 2 の Bloom フィルターを書き込みます。

詳細については、git-commit-graph[1] を参照してください。

ファイル形式

gitformat-commit-graph[5] を参照してください。

GIT

git[1]スイートの一部

scroll-to-top