SYNOPSIS

git backfill [--min-batch-size=<n>] [--[no-]sparse]

DESCRIPTION

ブロブ無し(blobless)の部分クローン(partial clones)は、 git clone --filter=blob:none を使用して作成され、 その後ローカル・リポジトリーを設定することで、 Git クライアントがローカル操作に必要な場合を除いてブロブオブジェクトのダウンロードを回避するようになります。 これにより、最初はクローン操作やその後の fetch 操作で到達可能なコミットとツリーがダウンロードされますが、 ブロブはダウンロードされません。 以降の操作で HEAD ポインタを変更するもの、 例えば git checkoutgit merge では、 操作を完了するために欠落しているブロブをダウンロードする必要が生じる場合があります。

最悪の場合においては、 ブロブの diff を計算するコマンド、 例えば git blame は、 Git コマンドが必要とする欠落オブジェクトを満たすために単一のブロブ・リクエストで欠落ブロブをダウンロードするため、 非常に遅くなります。 これにより、 複数のダウンロード・リクエストが発生し、 Git サーバーがこれらのオブジェクト間でデルタ圧縮を提供できなくなります。

git backfill コマンドは、 ユーザーが(オプションのフィルタ付きで)欠落しているブロブのダウンロードを Git に要求する方法を提供します。 これにより、 ファイルの履歴的なバージョンを表す欠落ブロブをバッチでダウンロードできます。 backfill コマンドは、 同じパスに現れるブロブをグループ化することでリクエストを最適化しようと試み、 これによりサーバーから送信されるパックファイルにて良好なデルタ圧縮が得られることを期待します。

このように、 git backfill は巨大なクローンを小さなチャンクに分割する仕組みを提供します。 git clone --filter=blob:none でブロブ無し(blobless)の部分クローンから始め、 その後ローカル・リポジトリーで git backfill を実行することで、 クローン時にリポジトリー全体をダウンロードする場合よりも、 いくつかの小さなネットワーク呼び出しで到達可能なすべてのオブジェクトをダウンロードする方法が得られます。

デフォルトでは、 git backfillHEAD コミットから到達可能なすべてのブロブをダウンロードします。 これは、 さまざまなオプションを使用して制限したり拡張したりできます。

「このコマンドは実験的です。将来的に行動が変わる可能性があります。」(THIS COMMAND IS EXPERIMENTAL. ITS BEHAVIOR MAY CHANGE IN THE FUTURE.)

OPTIONS

--min-batch-size=<n>

欠落オブジェクトのバッチをサーバーにリクエストする際の最小サイズを指定します。 このサイズは、 指定されたパスで最後に見つかったブロブのセットによって超過する場合があります。 デフォルトの最小バッチサイズは 50,000 です。

--sparse
--no-sparse

現在の sparse-checkout に一致するパスにのみオブジェクトが現れる場合に限り、 オブジェクトをダウンロードします。 sparse-checkout 機能が有効な場合、 デフォルトで --sparse が仮定され、 --no-sparse で無効化できます。

SEE ALSO

GIT

Part of the git(1) suite