SYNOPSIS
gitrepack[-a] [-A] [-d] [-f] [-F] [-l] [-n] [-q] [-b] [-m] [--window=<n>] [--depth=<n>] [--threads=<n>] [--keep-pack=<pack-name>] [--write-midx]
DESCRIPTION
このコマンドは、現在パック内に存在しないすべてのオブジェクトを1つのパックに結合するために使用されます。また、既存のパックを単一のより効率的なパックに再編成するために使用することもできます。
パックは、個別に圧縮され、デルタ圧縮が適用され、関連付けられたインデックスファイルとともに単一のファイルに格納されたオブジェクトのコレクションです。
パックは、ミラーシステム、バックアップエンジン、ディスクストレージなどの負荷を軽減するために使用されます。
OPTIONS
-
-a -
パックされていないオブジェクトを段階的にパックする代わりに、参照されるすべてのものを1つのパックにパックします。プライベート開発に使用されるリポジトリをパックする場合に特に便利です。
-dと一緒に使用します。 これにより、gitpruneが残したオブジェクトがクリーンアップされますが、gitfsck--full--danglingではぶら下がりを表示します。馬鹿プロトコル(dumb protocol)を介してフェッチするユーザーは、含まれているオブジェクトを取得するために、そのパック内にすでにローカルにある他のオブジェクトの数に関係なく、まったく新しいパックをフェッチする必要があることに注意してください。
promisorパックファイルは個別に再パックされます。
.promisorファイルに関連付けられているパックファイルがある場合、これらのパックファイルは別の個別パックに再パックされ、新しい個別パックに対応する、空の.promisorファイルが書き込まれます。 -
-A -
-dを使用しない限り-aと同じです。 それから、前のパックの到達不能なオブジェクトは、古いパックに残されるのではなく、looseになって、パックされていないオブジェクトになります。再パックする場合でも、到達不能なオブジェクトが意図的にパックに追加されることはありません。このオプションは、到達不能なオブジェクトが古いパックに残されて、古いパックごと削除されることによって、すぐに削除されてしまうのを防ぎます。代わりに、loose到達不能オブジェクトは、以下の 「git gc」呼び出しで通常の有効期限ルールに従って刈り込まれます。 git-gc(1) を参照してください。 -
-d -
パック後、新しく作成されたパックによって既存のパックの一部が冗長になる場合は、冗長パックを削除してください。 また、「git prune-packed」を実行して、冗長なルーズオブジェクトファイルを削除します。
-
--cruft -
-dが使用されない限り、-aと同一です。 そして、到達不能なオブジェクトは別の残り物パック(cruft pack)にパックされます。 到達不能なオブジェクトは、次回のgitgcの呼び出しで通常の有効期限ルールを使用して刈り込み(prune)できます(git-gc(1) 参照)。-kとは互換性がありません。 -
--cruft-expiration=<approxidate> -
次回の
gitgcの呼び出しを待つ代わりに、 <approxidate> よりも古い到達不能オブジェクトをすぐに期限切れにします。--cruft-dでのみ有用です。 -
--max-cruft-size=<n> -
残り物(cruft)オブジェクトを、 <n> バイトまでの大きさのパックに再パックします。 <n> バイトより小さいサイズの残り物パック(cruft packs)がある限り、 再パックにより、 結合された残り物パック(cruft packs)のオブジェクトと新たに到達不能なオブジェクトを含む新しい残り物パック(cruft pack)が作成されます。 <n> バイトより大きいサイズの残り物パック(cruft pack)は変更されません。 新しい残り物パック(cruft pack)のサイズが <n> バイトを超える場合、 複数のパックに分割され、 すべてが 最大 <n> バイトのサイズになることが保証されます。
--cruft-dオプションと一緒に使用する場合にのみ有用です。 -
--expire-to=<dir> -
刈り込まれたオブジェクト(存在する場合)を含む残り物パック(cruft pack)をディレクトリ <dir> に書き込みます。このオプションは、刈り込みされたオブジェクトのコピーをバックアップとして別のディレクトリに保存する場合に便利です。
--cruft-dでのみ有効です。 -
-l -
--localオプションをgitpack-objectsに渡します。 git-pack-objects(1) を参照してください。 -
-f -
--no-reuse-deltaオプションをgit-pack-objectsに渡します。 git-pack-objects(1) を参照してください。 -
-F -
--no-reuse-objectオプションをgit-pack-objectsに渡します。 git-pack-objects(1) を参照してください。 -
-q -
--quiet -
標準エラー・ストリームの進行状況を表示せず、かつ、
-qオプションをgitpack-objectsに渡します。 git-pack-objects(1) を参照してください。 -
-n -
gitupdate-server-infoでサーバー情報を更新しないでください。このオプションは、HTTPまたはFTPを介してこのリポジトリ(またはその直接のコピー)を公開するために必要なローカルカタログファイルの更新をスキップします。 git-update-server-info(1) を参照してください。 -
--window=<n> -
--depth=<n> -
これらの2つのオプションは、パックに含まれるオブジェクトがデルタ圧縮を使用して格納される方法に影響します。オブジェクトは最初にタイプ、サイズ、およびオプションで名前で内部的にソートされ、
--window内の他のオブジェクトと比較されて、デルタ圧縮を使用することでスペースが節約されるかどうかが確認されます。--depthは最大デルタ深度を制限します。深くしすぎると、必要なオブジェクトに到達するためにデルタデータを何度も適用する必要があるため、アンパッカー側(unpacker side)のパフォーマンスに影響します。--windowのデフォルト値は10で、--depthは50です。最大深度(maximum depth)は4095です。 -
--threads=<n> -
このオプションは
gitpack-objectsに渡されます。 -
--window-memory=<n> -
このオプションは、
--windowに加えて追加の制限を提供します。ウィンドウサイズは、メモリ内で <n> バイトを超えないように動的に縮小されます。これは、大きなウィンドウと小さなオブジェクトが混在するリポジトリで、大きなウィンドウでメモリが不足しないようにするのに役立ちますが、小さなオブジェクトは大きなウィンドウを利用できます。 サイズには、「k」または「m」または「g」の接尾辞を付けることができます。--window-memory=0は、メモリ使用量を無制限にします。 デフォルトは、pack.windowMemory構成変数から取得されます。 実際のメモリ使用量は、制限に git-pack-objects(1) で使用されるスレッド数を掛けたものになることに注意してください。 -
--max-pack-size=<n> -
各出力パックファイルの最大サイズ。 サイズには、「k」または「m」または「g」の接尾辞を付けることができます。許可される最小サイズは1MiBに制限されています。 指定した場合、複数のパックファイルが作成される可能性があります。これにより、ビットマップインデックスの作成も妨げられます。構成変数
pack.packSizeLimitが設定されていない限り、デフォルトは無制限です。このオプションを使用すると、リポジトリが大きくなり、速度が低下する可能性があることに注意してください。pack.packSizeLimitの説明を参照してください。 -
--filter=<filter-spec> -
フィルター仕様にマッチするオブジェクトを、 生成されるパック・ファイルから削除し、 別のパック・ファイルに入れます。 注意:作業ディレクトリで使用されているオブジェクトはフィルターの対象外となるため注意してください。 そのため、 分割を完全に機能させるには、 ベア・リポジトリで実行し、 このオプションとともに
-aや-dオプションを使用するのが最適です。 また、--no-write-bitmap-index(またはrepack.writebitmaps構成設定をfalseに設定)を使用する必要があります。 そうしないと、 ビットマップ・インデックスの書き込みに失敗します。 これは、 すべてのオブジェクトを含む単一のパック・ファイルを前提としているためです。 有効な <filter-spec> の形式については、 git-rev-list(1) を参照してください。 -
--filter-to=<dir> -
フィルターで除外されたオブジェクトを含むパックを <dir> ディレクトリに書き込みます。 これは
--filterオプションと一緒に使用する場合にのみ有用です。 この機能は、Git のオルタネート・メカニズムを通じてアクセスされる別のオブジェクト・ディレクトリにパックを配置するために使用できます。 警告 :フィルターで除外されたオブジェクトを含むパック・ファイルがアクセス不能な場合、 リポジトリが破損する可能性があります。 これは、 そのパック・ファイル内のオブジェクトにアクセスできない可能性があるためです。 詳細は、 gitrepository-layout(5) の 「objects」 および「objects/info/alternates」セクションを参照してください。 -
-b -
--write-bitmap-index -
再パックの一部として到達可能性ビットマップインデックスを書き込みます。ビットマップは到達可能なすべてのオブジェクトを参照できる必要があるため、これは
-aまたは-Aまたは-mとともに使用する場合にのみ意味があります。このオプションは、repack.writeBitmapsの設定を上書きします。 このオプションは、複数のパックファイルが作成された場合、 MIDX を書き込まない限り効果がありません(この場合、マルチパック・ビットマップが作成されます)。 -
--pack-kept-objects -
再パックするときは
.keepファイルにオブジェクトを含めます。pack-objectsが終了した後も.keepパックを削除しないことに注意してください。これは、オブジェクトを複製する可能性があることを意味しますが、これにより、プッシュまたはフェッチが同時に発生する場合にオプションを安全に使用できます。このオプションを指定すると、ビットマップ化されたパックファイルに必要なオブジェクトが確実に含まれるため、通常、-bまたはrepack.writeBitmapsを使用してビットマップを書き込む場合にのみ役立ちます。 -
--keep-pack=<pack-name> -
指定されたパックを再パックから除外します。 これは、パックに
.keepファイルがあるのと同じです。 <pack-name> は、先頭にディレクトリがないパックファイル名です(例:pack-123.pack)。このオプションは、複数のパックを保持するために複数回指定できます。 -
--unpack-unreachable=<when> -
到達不能なオブジェクトのパックをほどく(loose)ときは、 <when> より古いオブジェクトをわざわざほどきません。これは、フォローアップで行う
gitpruneによってすぐに刈り込まれるオブジェクトの書き込みを最適化するために使用できます。 -
-k -
--keep-unreachable -
-adと一緒に使用すると、既存のパックから到達できないオブジェクトは、削除されるのではなく、パックファイルの最後に追加されます。さらに、到達不能なlooseオブジェクトはパックされます(そしてそれらのlooseオブジェクトは削除されます)。 -
-i -
--delta-islands -
--delta-islandsオプションをgit-pack-objectsに渡します。 git-pack-objects(1) を参照してください。 -
-g<factor> -
--geometric=<factor> -
結果のパック構造を、連続する各パックに、次に大きいパックのオブジェクト数の少なくとも <factor> 倍が含まれるように配置します。
gitrepackが、等比数列を確実にするために1つに再パックする必要があるパックファイルの「切り分け」を決断することによってこれを保証します。 大きいパックファイルの多く(そのパックに含まれるオブジェクトの数による)がそのまま残るように、パックファイルの最小セットを選択します。他の再パックモードとは異なり、梱包するオブジェクトのセットは、「ロールアップ」(rolled-up)されるパックのセットによって一意に決定されます。言い換えれば、等比数列を復元するために組み合わせる必要があると判断されたパックです。
ルーズ・オブジェクトは、 到達可能性に関係なく、 この「ロールアップ」に暗黙的に含まれます。 これは将来変更される可能性があります。
マルチパック・ビットマップを書き込む場合、
gitrepackは結果として最大のパックを MIDX によるオブジェクト選択の優先パックとして選択します(git-multi-pack-index(1) 参照)。 -
-m -
--write-midx -
非冗長(non-redundant)パックを含むマルチパック・インデックス (git-multi-pack-index(1) 参照) を作成します。
CONFIGURATION
さまざまな構成変数がパッキングに影響します。 git-config(1) を参照してください(「pack」と「delta」を検索してください)。
デフォルトでは、コマンドは --delta-base-offset オプションを git pack-objects に渡します。これにより、通常、パックはわずかに小さくなりますが、生成されたパックは、バージョン1.4.4より古いバージョンのGitと互換性がありません。直接またはダムhttpプロトコルを介して、このような古いバージョンのGitとリポジトリを共有する必要がある場合は、構成変数 repack.UseDeltaBaseOffset を false に設定して再パックする必要があります。この場合、必要に応じて変換がオンザフライで実行されるため、ネイティブプロトコルを介した古いGitバージョンからのアクセスではこのオプションの影響を受けません。
デルタ圧縮は、 core.bigFileThreshold 構成変数より大きいオブジェクト、および属性 delta がfalseに設定されているファイルでは使用されません。
SEE ALSO
GIT
Part of the git(1) suite