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::
	It is possible for 'git-pack-objects' to build
	"thin" pack, which records objects in deltified form based on
	objects not included in the pack to reduce network traffic.
	Those objects are expected to be present on the receiving end
	and they must be included in the pack for that pack to be self
	contained and indexable. Without this option any attempt to
	index a thin pack will fail. 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='why'::
	Like --keep create a .keep file before moving the index into
	its final destination, but rather than creating an empty file
	place 'why' followed by an LF into the .keep file.  The 'why'
	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.


Author
------
Written by Sergey Vlasov <vsu@altlinux.ru>

Documentation
-------------
Documentation by Sergey Vlasov

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