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
