日本語 ▾ トピック ▾ 最新バージョン ▾ git-backfill は 2.49.0 で最終更新されました

名称

git-backfill - 部分クローンで欠落したオブジェクトをダウンロードする

概要

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

説明

ブロブなしの部分クローンは、`git clone --filter=blob:none` を使用して作成され、Gitクライアントがローカル操作に必要とされない限りブロブオブジェクトのダウンロードを避けるようにローカルリポジトリを設定します。これは、初期のクローンやその後のフェッチが到達可能なコミットやツリーをダウンロードしますが、ブロブはダウンロードしないことを意味します。`HEAD`ポインタを変更する後の操作(`git checkout`や`git merge`など)は、その操作を完了するために欠落したブロブをダウンロードする必要がある場合があります。

最悪の場合、`git blame` のようにブロブの差分を計算するコマンドは、Gitコマンドが必要とする欠落したオブジェクトを個別のブロブリクエストでダウンロードするため、非常に遅くなります。これにより、複数のダウンロードリクエストが発生し、Gitサーバーがこれらのオブジェクト間でデルタ圧縮を提供できなくなるという問題が生じます。

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

このように、`git backfill` は大きなクローンをより小さなチャンクに分割するメカニズムを提供します。`git clone --filter=blob:none` でブロブなしの部分クローンを開始し、その後ローカルリポジトリで `git backfill` を実行することで、クローン時にリポジトリ全体をダウンロードするよりも、いくつかの小さなネットワーク呼び出しで到達可能なすべてのオブジェクトをダウンロードする方法が提供されます。

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

このコマンドは実験的なものです。将来的にその動作が変更される可能性があります。

オプション

`--min-batch-size=`

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

`--[no-]sparse`

現在のスパースチェックアウトに一致するパスに出現する場合にのみオブジェクトをダウンロードします。スパースチェックアウト機能が有効な場合、`--sparse` が仮定され、`--no-sparse` で無効にすることができます。

関連項目

GIT

git[1] スイートの一部

scroll-to-top