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>] <pack-file>
'git index-pack' --stdin [--fix-thin] [--keep] [-v] [-o <index-file>]
                 [<pack-file>]


DESCRIPTION
-----------
Reads a packed archive (.pack) from the specified file, and
builds a pack index file (.idx) for it.  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).

--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, but rather than 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::
	Die, if the pack contains broken objects or links.


Note
----

Once the index has been created, the list of object names is sorted
and the SHA1 hash of that list 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
