blob: 2b9404d6b1c0f637a06727853f70121bee8ed7ae [file] [log] [blame]
'\" t
.\" Title: git-index-pack
.\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 2024-04-29
.\" Manual: Git Manual
.\" Source: Git 2.45.0
.\" Language: English
.\"
.TH "GIT\-INDEX\-PACK" "1" "2024\-04\-29" "Git 2\&.45\&.0" "Git Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
git-index-pack \- Build pack index file for an existing packed archive
.SH "SYNOPSIS"
.sp
.nf
\fIgit index\-pack\fR [\-v] [\-o <index\-file>] [\-\-[no\-]rev\-index] <pack\-file>
\fIgit index\-pack\fR \-\-stdin [\-\-fix\-thin] [\-\-keep] [\-v] [\-o <index\-file>]
[\-\-[no\-]rev\-index] [<pack\-file>]
.fi
.sp
.SH "DESCRIPTION"
.sp
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\&.
.SH "OPTIONS"
.PP
\-v
.RS 4
Be verbose about what is going on, including progress status\&.
.RE
.PP
\-o <index\-file>
.RS 4
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)\&.
.RE
.PP
\-\-[no\-]rev\-index
.RS 4
When this flag is provided, generate a reverse index (a
\fB\&.rev\fR
file) corresponding to the given pack\&. If
\fB\-\-verify\fR
is given, ensure that the existing reverse index is correct\&. Takes precedence over
\fBpack\&.writeReverseIndex\fR\&.
.RE
.PP
\-\-stdin
.RS 4
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
\fIgit repack\fR\&.
.RE
.PP
\-\-fix\-thin
.RS 4
Fix a "thin" pack produced by
\fBgit pack\-objects \-\-thin\fR
(see
\fBgit-pack-objects\fR(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\&.
.RE
.PP
\-\-keep
.RS 4
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
\fIgit repack\fR
process from deleting the newly constructed pack and index before refs can be updated to use objects contained in the pack\&.
.RE
.PP
\-\-keep=<msg>
.RS 4
Like \-\-keep, create a \&.keep file before moving the index into its final destination\&. However, instead of creating an empty file place
\fI<msg>\fR
followed by an LF into the \&.keep file\&. The
\fI<msg>\fR
message can later be searched for within all \&.keep files to locate any which have outlived their usefulness\&.
.RE
.PP
\-\-index\-version=<version>[,<offset>]
.RS 4
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\&.
.RE
.PP
\-\-strict[=<msg\-id>=<severity>\&...]
.RS 4
Die, if the pack contains broken objects or links\&. An optional comma\-separated list of
\fB<msg\-id>=<severity>\fR
can be passed to change the severity of some possible issues, e\&.g\&.,
\fB\-\-strict="missingEmail=ignore,badTagName=error"\fR\&. See the entry for the
\fBfsck\&.<msg\-id>\fR
configuration options in
\fBgit-fsck\fR(1)
for more information on the possible values of
\fB<msg\-id>\fR
and
\fB<severity>\fR\&.
.RE
.PP
\-\-progress\-title
.RS 4
For internal use only\&.
.sp
Set the title of the progress bar\&. The title is "Receiving objects" by default and "Indexing objects" when
\fB\-\-stdin\fR
is specified\&.
.RE
.PP
\-\-check\-self\-contained\-and\-connected
.RS 4
Die if the pack contains broken links\&. For internal use only\&.
.RE
.PP
\-\-fsck\-objects[=<msg\-id>=<severity>\&...]
.RS 4
Die if the pack contains broken objects, but unlike
\fB\-\-strict\fR, don\(cqt 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")\&.
.sp
An optional comma\-separated list of
\fB<msg\-id>=<severity>\fR
can be passed to change the severity of some possible issues, e\&.g\&.,
\fB\-\-fsck\-objects="missingEmail=ignore,badTagName=ignore"\fR\&. See the entry for the
\fBfsck\&.<msg\-id>\fR
configuration options in
\fBgit-fsck\fR(1)
for more information on the possible values of
\fB<msg\-id>\fR
and
\fB<severity>\fR\&.
.RE
.PP
\-\-threads=<n>
.RS 4
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\(cqs and use maximum 3 threads\&.
.RE
.PP
\-\-max\-input\-size=<size>
.RS 4
Die, if the pack is larger than <size>\&.
.RE
.PP
\-\-object\-format=<hash\-algorithm>
.RS 4
Specify the given object format (hash algorithm) for the pack\&. The valid values are
\fIsha1\fR
and (if enabled)
\fIsha256\fR\&. The default is the algorithm for the current repository (set by
\fBextensions\&.objectFormat\fR), or
\fIsha1\fR
if no value is set or outside a repository\&.
.sp
This option cannot be used with \-\-stdin\&.
.sp
Note: At present, there is no interoperability between SHA\-256 repositories and SHA\-1 repositories\&.
.RE
.sp
Historically, we warned that SHA\-256 repositories may later need backward incompatible changes when we introduce such interoperability features\&. Today, we only expect compatible changes\&. Furthermore, if such changes prove to be necessary, it can be expected that SHA\-256 repositories created with today\(cqs Git will be usable by future versions of Git without data loss\&.
.PP
\-\-promisor[=<message>]
.RS 4
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
\fB<message>\fR
is provided, then that content will be written to the \&.promisor file for future reference\&. See
\m[blue]\fBpartial clone\fR\m[]\&\s-2\u[1]\d\s+2
for more information\&.
.RE
.SH "NOTES"
.sp
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\et", or "keep\et" 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 \fIgit repack\fR mentioned above\&.
.SH "GIT"
.sp
Part of the \fBgit\fR(1) suite
.SH "NOTES"
.IP " 1." 4
partial clone
.RS 4
\%git-htmldocs/technical/partial-clone.html
.RE