| git-multi-pack-index(1) | |
| ======================= | |
| NAME | |
| ---- | |
| git-multi-pack-index - Write and verify multi-pack-indexes | |
| SYNOPSIS | |
| -------- | |
| [verse] | |
| 'git multi-pack-index' [<options>] write [--preferred-pack=<pack>] | |
| [--[no-]bitmap] [--[no-]incremental] [--[no-]stdin-packs] | |
| [--refs-snapshot=<path>] [--[no-]write-chain-file] | |
| [--base=<checksum>] | |
| 'git multi-pack-index' [<options>] compact [--[no-]incremental] | |
| [--[no-]bitmap] [--base=<checksum>] [--[no-]write-chain-file] | |
| <from> <to> | |
| 'git multi-pack-index' [<options>] verify | |
| 'git multi-pack-index' [<options>] expire | |
| 'git multi-pack-index' [<options>] repack [--batch-size=<size>] | |
| DESCRIPTION | |
| ----------- | |
| Write or verify a multi-pack-index (MIDX) file. | |
| OPTIONS | |
| ------- | |
| The following command-line options are applicable to all sub-commands: | |
| --object-dir=<dir>:: | |
| Use given directory for the location of Git objects. We check | |
| `<dir>/packs/multi-pack-index` for the current MIDX file, and | |
| `<dir>/packs` for the pack-files to index. | |
| + | |
| `<dir>` must be an alternate of the current repository. | |
| --progress:: | |
| --no-progress:: | |
| Turn progress on/off explicitly. If neither is specified, progress is | |
| shown if standard error is connected to a terminal. Supported by | |
| sub-commands `write`, `verify`, `expire`, and `repack`. | |
| The following subcommands are available: | |
| write:: | |
| Write a new MIDX file. The following options are available for | |
| the `write` sub-command: | |
| + | |
| -- | |
| --preferred-pack=<pack>:: | |
| When specified, break ties in favor of this pack when | |
| there are additional copies of its objects in other | |
| packs. Ties for objects not found in the preferred | |
| pack are always resolved in favor of the copy in the | |
| pack with the highest mtime. If unspecified, the pack | |
| with the lowest mtime is used by default. The | |
| preferred pack must have at least one object. | |
| --[no-]bitmap:: | |
| Control whether or not a multi-pack bitmap is written. | |
| --stdin-packs:: | |
| Write a multi-pack index containing only the set of | |
| line-delimited pack index basenames provided over stdin. | |
| --refs-snapshot=<path>:: | |
| With `--bitmap`, optionally specify a file which | |
| contains a "refs snapshot" taken prior to repacking. | |
| + | |
| A reference snapshot is composed of line-delimited OIDs corresponding to | |
| the reference tips, usually taken by `git repack` prior to generating a | |
| new pack. A line may optionally start with a `+` character to indicate | |
| that the reference which corresponds to that OID is "preferred" (see | |
| linkgit:git-config[1]'s `pack.preferBitmapTips`.) | |
| + | |
| The file given at `<path>` is expected to be readable, and can contain | |
| duplicates. (If a given OID is given more than once, it is marked as | |
| preferred if at least one instance of it begins with the special `+` | |
| marker). | |
| --incremental:: | |
| Write an incremental MIDX file containing only objects | |
| and packs not present in an existing MIDX layer. | |
| Migrates non-incremental MIDXs to incremental ones when | |
| necessary. | |
| --[no-]write-chain-file:: | |
| When used with `--incremental`, write a new MIDX layer | |
| but do not update the multi-pack-index-chain file. | |
| The checksum of the new layer is printed to standard | |
| output, allowing the caller to assemble and write the | |
| chain itself. Requires `--incremental`. | |
| --base=<checksum>:: | |
| Specify the checksum of an existing MIDX layer to use | |
| as the base when writing a new incremental layer. | |
| The special value `none` indicates that the new layer | |
| should have no base (i.e., it becomes a root layer). | |
| Requires `--no-write-chain-file`. | |
| -- | |
| compact:: | |
| Write a new MIDX layer containing only objects and packs present | |
| in the range `<from>` to `<to>`, where both arguments are | |
| checksums of existing layers in the MIDX chain. | |
| + | |
| -- | |
| --incremental:: | |
| Write the result to a MIDX chain instead of writing a | |
| stand-alone MIDX. | |
| --[no-]bitmap:: | |
| Control whether or not a multi-pack bitmap is written. | |
| --[no-]write-chain-file:: | |
| When used with `--incremental`, write a new compacted | |
| MIDX layer but do not update the multi-pack-index-chain | |
| file. The checksum of the new layer is printed to | |
| standard output. Requires `--incremental`. | |
| --base=<checksum>:: | |
| Specify the checksum of an existing MIDX layer to use | |
| as the base for the compacted result, instead of using | |
| the immediate parent of `<from>`. The special value | |
| `none` indicates that the result should have no base. | |
| -- | |
| + | |
| Note that the compact command requires writing a version-2 midx that | |
| cannot be read by versions of Git prior to v2.54. | |
| verify:: | |
| Verify the contents of the MIDX file. | |
| expire:: | |
| Delete the pack-files that are tracked by the MIDX file, but | |
| have no objects referenced by the MIDX (with the exception of | |
| `.keep` packs and cruft packs). Rewrite the MIDX file afterward | |
| to remove all references to these pack-files. | |
| + | |
| NOTE: this mode is incompatible with incremental MIDX files. | |
| repack:: | |
| Create a new pack-file containing objects in small pack-files | |
| referenced by the multi-pack-index. If the size given by the | |
| `--batch-size=<size>` argument is zero, then create a pack | |
| containing all objects referenced by the multi-pack-index. For | |
| a non-zero batch size, Select the pack-files by examining packs | |
| from oldest-to-newest, computing the "expected size" by counting | |
| the number of objects in the pack referenced by the | |
| multi-pack-index, then divide by the total number of objects in | |
| the pack and multiply by the pack size. We select packs with | |
| expected size below the batch size until the set of packs have | |
| total expected size at least the batch size, or all pack-files | |
| are considered. If only one pack-file is selected, then do | |
| nothing. If a new pack-file is created, rewrite the | |
| multi-pack-index to reference the new pack-file. A later run of | |
| 'git multi-pack-index expire' will delete the pack-files that | |
| were part of this batch. | |
| + | |
| If `repack.packKeptObjects` is `false`, then any pack-files with an | |
| associated `.keep` file will not be selected for the batch to repack. | |
| + | |
| NOTE: this mode is incompatible with incremental MIDX files. | |
| EXAMPLES | |
| -------- | |
| * Write a MIDX file for the packfiles in the current `.git` directory. | |
| + | |
| ----------------------------------------------- | |
| $ git multi-pack-index write | |
| ----------------------------------------------- | |
| * Write a MIDX file for the packfiles in the current `.git` directory with a | |
| corresponding bitmap. | |
| + | |
| ------------------------------------------------------------- | |
| $ git multi-pack-index write --preferred-pack=<pack> --bitmap | |
| ------------------------------------------------------------- | |
| * Write a MIDX file for the packfiles in an alternate object store. | |
| + | |
| ----------------------------------------------- | |
| $ git multi-pack-index --object-dir <alt> write | |
| ----------------------------------------------- | |
| * Verify the MIDX file for the packfiles in the current `.git` directory. | |
| + | |
| ----------------------------------------------- | |
| $ git multi-pack-index verify | |
| ----------------------------------------------- | |
| SEE ALSO | |
| -------- | |
| See link:technical/multi-pack-index.html[The Multi-Pack-Index Design | |
| Document] and linkgit:gitformat-pack[5] for more information on the | |
| multi-pack-index feature and its file format. | |
| GIT | |
| --- | |
| Part of the linkgit:git[1] suite |