SYNOPSIS

git index-pack [-v] [-o <index-file>] [--[no-]rev-index] <pack-file>
git index-pack --stdin [--fix-thin] [--keep] [-v] [-o <index-file>]
                  [--[no-]rev-index] [<pack-file>]

DESCRIPTION

指定のファイルからパックされたアーカイブ(.pack)を読み取り、 それに対応するパック・インデックス・ファイル(.idx)を生成し、 オプションで、 指定のパックのためのリバース・インデックス(.rev)を書き込みます。 パックされたアーカイブは、 パック・インデックスとともに、 Gitリポジトリの objects/pack/ ディレクトリに配置することができます。

OPTIONS

-v

進捗状況など、何が起こっているかについて詳しく説明します。

-o <index-file>

生成されたパックインデックスを指定のファイルに書き込みます。このオプションがない場合、パックインデックスファイルの名前は、 .pack を .idx に置き換えることにより、パックされたアーカイブファイルの名前から作成されます(パックされたアーカイブの名前が .pack で終わらない場合、プログラムは失敗します)。

--[no-]rev-index

このフラグが指定されている場合、指定されたパックに対応する逆インデックス(reverse index)(.rev ファイル)を生成します。 --verify が指定されている場合は、既存の逆インデックスが正しいことを確認し保証(ensure)します。 pack.writeReverseIndex よりも優先されます。

--stdin

このフラグが指定されると、コマンドラインの代わりにパックがstdinから読み取られ、コピーが <pack-file> に書き込まれます。 <pack-file> が指定されていない場合、パックは現在のGitリポジトリの objects/pack/ ディレクトリに書き込まれ、デフォルト名はパックの内容から決定されます。 <pack-file> が指定されていない場合は、 --keep を使用して、このプロセスと git repack の間の競合状態を防ぐことを検討してください。

--fix-thin

デルタ化オブジェクトが基づいている除外されたオブジェクトをパックに追加することにより、 git pack-objects --thin によって生成された「薄い」パックを修正します(詳細は git-pack-objects(1) を参照)。 このオプションは、--stdin と組み合わせた場合にのみ意味があります。

--keep

インデックスを最終的な宛先に移動する前に、関連するパックファイル用に空の .keep ファイルを作成します。このオプションは通常、 --stdin と一緒に指定する必要があります。これは、パックに含まれるオブジェクトを使用するようにrefを更新する前に、 git repack プロセスが新しく構築されたパックとインデックスを同時に削除しないようにするためです。

--keep=<msg>

--keep のように、インデックスを最終的な宛先に移動する前に .keep ファイルを作成します。 けれども、 空のファイルを作成する代わりに、 <msg> に続けて LF を .keep ファイルに書き込みます。 これにより <msg> メッセージは後で全ての .keep ファイル内で検索でき、 役目を終えたものを特定することができます。

--index-version=<version>[,<offset>]

これは、テストスイートでのみ使用することを目的としています。 生成されたパックインデックスのバージョンを強制し、指定されたオフセットにあるオブジェクトに64ビットインデックスエントリを強制することができます。

--strict[=<msg-id>=<severity>...]

パックに壊れたオブジェクトまたは壊れたリンクが含まれている場合に終了(die)します。 オプションで <msg-id>=<severity> のカンマ区切りリストを渡して、 いくつかの問題の重大度を変更できます。 たとえば --strict="missingEmail=ignore,badTagName=error" と指定します。 <msg-id> と <severity> の取りうる値に関する詳細は、 git-fsck(1) の fsck.<msg-id> 構成オプションのエントリを参照してください。

--progress-title

内部使用のみ。

プログレスバーのタイトルを設定します。 タイトルはデフォルトで「Receiving objects」(オブジェクトの受信)であり、 --stdin が指定されている場合は「Indexing objects」(オブジェクトのインデックス作成)です。

--check-self-contained-and-connected

パックに壊れたリンクが含まれている場合は終了(die)します。内部使用のみ。

--fsck-objects[=<msg-id>=<severity>...]

パックに壊れたオブジェクトが含まれている場合に終了(die)しますが、 --strict とは異なり、 壊れたリンクでは処理を中断しません。 存在しない .gitmodulesblob を指すツリーがパックに含まれている場合、 pack/idx ファイルの名前に含まれるハッシュの後に、(呼び出し元が確認できるように)そのブロブのハッシュを出力します(「Notes」参照)。

プションの <msg-id>=<severity> のコンマ区切りリストは、 いくつかの問題の重大度を変更するために渡すことができます。 <msg-id> および <severity> の取りうる値の詳細については、 git-fsck(1)fsck.<msg-id> 構成オプションのエントリを参照してください。

--threads=<n>

デルタを解決するときに生成するスレッドの数を指定します。これには、インデックスパックを pthreads でコンパイルする必要があります。そうでない場合、このオプションは警告とともに無視されます。これは、マルチプロセッサマシンでのパッキング時間を短縮することを目的としています。ただし、デルタ検索ウィンドウに必要なメモリ量は、スレッド数で乗算されます。0を指定すると、GitはCPUの数を自動検出し、最大3つのスレッドを使用します。

--max-input-size=<size>

パックが <size> を超える場合は、終了(die)します。

--object-format=<hash-algorithm>

パックに指定するオブジェクト形式(ハッシュアルゴリズム)を指定します。有効な値は sha1sha256 (有効な場合) です。デフォルトは、(extensions.objectFormat で設定する、)現在のリポジトリのアルゴリズム、または値が設定されていないかリポジトリの外部にある場合は sha1 です。

このオプションは --stdin オプションと一緒に使用することはできません。

注意: 現時点では、 SHA-256 リポジトリと SHA-1 リポジトリの間に相互運用性はありません(no interoperability)。

歴史的に、 作者達は、 このような相互運用性機能を導入した場合、 SHA-256 リポジトリには下位互換性のない変更が必要になる可能性があると警告してきました。 今日期待されているのは、 互換性のある変更のみです。 更にいうと、 そのような変更が必要であることが判明した場合にも、 現在の Git で作成された SHA-256 リポジトリは、 データを失うことなく将来のバージョンの Git で使用できるようになることが期待できます。

--promisor[=<message>]

pack-index をコミットする前に、このパックの .promisor ファイルを作成します。 パックが完全に書き込まれるまでパックの名前は最終的ではないため、 --fix-thin を使用して プロミサー・パック(promisor pack)を書き込む場合に特に役立ちます。 <message> が指定されている場合、その内容は後で参照できるように .promisor ファイルに書き込まれます。 詳細については、 partial clone を参照してください。

また、 指定のパックに非プロミサー・オブジェクト(non-promisor objects)を(リポジトリ内で)参照するオブジェクトがある場合、 これらの非プロミサー・オブジェクトをプロミサー・パックに再パックします。 これにより、 プロミサー・オブジェクトを介してアクセス可能な非プロミサー・オブジェクトがある状況が回避されます。

<pack-file> が指定されて「無い」必要があります。

NOTES

一旦インデックスが作成されると、 pack/idx ファイルの名前に含まれるハッシュがstdoutに出力されます。 --stdin も使用された場合、これには pack\t 、または新しい .keep ファイルが正常に作成された場合は keep\t の、どちらかのプレフィックスが付きます。 これは、 上記 git repack との競合を防ぐためにロックとして使用されている keep ファイルを削除するのに役立ちます。

GIT

Part of the git(1) suite