git-index-pack(1)
=================

NAME
----
git-index-pack - Build pack index file for an existing packed archive


SYNOPSIS
--------
[verse]
'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
-----------
Reads a packed archive (.pack) from the specified file,
builds a pack index file (.idx) for it, and optionally writes a
reverse-index (.rev) for the specified pack. The packed
archive, together with the pack index, can then be placed in
the objects/pack/ directory of a Git repository.


OPTIONS
-------
-v::
	Be verbose about what is going on, including progress status.

-o <index-file>::
	Write the generated pack index into the specified
	file.  Without this option the name of pack index
	file is constructed from the name of packed archive
	file by replacing .pack with .idx (and the program
	fails if the name of packed archive does not end
	with .pack).

--[no-]rev-index::
	When this flag is provided, generate a reverse index
	(a `.rev` file) corresponding to the given pack. If
	`--verify` is given, ensure that the existing
	reverse index is correct. Takes precedence over
	`pack.writeReverseIndex`.

--stdin::
	When this flag is provided, the pack is read from stdin
	instead and a copy is then written to <pack-file>. If
	<pack-file> is not specified, the pack is written to
	objects/pack/ directory of the current Git repository with
	a default name determined from the pack content.  If
	<pack-file> is not specified consider using --keep to
	prevent a race condition between this process and
	'git repack'.

--fix-thin::
	Fix a "thin" pack produced by `git pack-objects --thin` (see
	linkgit:git-pack-objects[1] for details) by adding the
	excluded objects the deltified objects are based on to the
	pack. This option only makes sense in conjunction with --stdin.

--keep::
	Before moving the index into its final destination
	create an empty .keep file for the associated pack file.
	This option is usually necessary with --stdin to prevent a
	simultaneous 'git repack' process from deleting
	the newly constructed pack and index before refs can be
	updated to use objects contained in the pack.

--keep=<msg>::
	Like --keep, create a .keep file before moving the index into
	its final destination.  However, instead of creating an empty file
	place '<msg>' followed by an LF into the .keep file.  The '<msg>'
	message can later be searched for within all .keep files to
	locate any which have outlived their usefulness.

--index-version=<version>[,<offset>]::
	This is intended to be used by the test suite only. It allows
	to force the version for the generated pack index, and to force
	64-bit index entries on objects located above the given offset.

--strict[=<msg-id>=<severity>...]::
	Die, if the pack contains broken objects or links. An optional
	comma-separated list of `<msg-id>=<severity>` can be passed to change
	the severity of some possible issues, e.g.,
	 `--strict="missingEmail=ignore,badTagName=error"`. See the entry for the
	`fsck.<msg-id>` configuration options in linkgit:git-fsck[1] for more
	information on the possible values of `<msg-id>` and `<severity>`.

--progress-title::
	For internal use only.
+
Set the title of the progress bar. The title is "Receiving objects" by
default and "Indexing objects" when `--stdin` is specified.

--check-self-contained-and-connected::
	Die if the pack contains broken links. For internal use only.

--fsck-objects[=<msg-id>=<severity>...]::
	Die if the pack contains broken objects, but unlike `--strict`, don't
	choke on broken links. If the pack contains a tree pointing to a
	.gitmodules blob that does not exist, prints the hash of that blob
	(for the caller to check) after the hash that goes into the name of the
	pack/idx file (see "Notes").
+
An optional comma-separated list of `<msg-id>=<severity>` can be passed to
change the severity of some possible issues, e.g.,
`--fsck-objects="missingEmail=ignore,badTagName=ignore"`. See the entry for the
`fsck.<msg-id>` configuration options in linkgit:git-fsck[1] for more
information on the possible values of `<msg-id>` and `<severity>`.

--threads=<n>::
	Specifies the number of threads to spawn when resolving
	deltas. This requires that index-pack be compiled with
	pthreads otherwise this option is ignored with a warning.
	This is meant to reduce packing time on multiprocessor
	machines. The required amount of memory for the delta search
	window is however multiplied by the number of threads.
	Specifying 0 will cause Git to auto-detect the number of CPU's
	and use maximum 3 threads.

--max-input-size=<size>::
	Die, if the pack is larger than <size>.

--object-format=<hash-algorithm>::
	Specify the given object format (hash algorithm) for the pack.  The valid
	values are 'sha1' and (if enabled) 'sha256'.  The default is the algorithm for
	the current repository (set by `extensions.objectFormat`), or 'sha1' if no
	value is set or outside a repository.
+
This option cannot be used with --stdin.
+
include::object-format-disclaimer.txt[]

--promisor[=<message>]::
	Before committing the pack-index, create a .promisor file for this
	pack. Particularly helpful when writing a promisor pack with --fix-thin
	since the name of the pack is not final until the pack has been fully
	written. If a `<message>` is provided, then that content will be
	written to the .promisor file for future reference. See
	link:technical/partial-clone.html[partial clone] for more information.

NOTES
-----

Once the index has been created, the hash that goes into the name of
the pack/idx file is printed to stdout. If --stdin was
also used then this is prefixed by either "pack\t", or "keep\t" if a
new .keep file was successfully created. This is useful to remove a
.keep file used as a lock to prevent the race with 'git repack'
mentioned above.

GIT
---
Part of the linkgit:git[1] suite
