git-pack-objects(1)
===================

NAME
----
git-pack-objects - Create a packed archive of objects


SYNOPSIS
--------
[verse]
'git-pack-objects' [-q] [--no-reuse-delta] [--non-empty]
	[--local] [--incremental] [--window=N] [--depth=N]
	[--revs [--unpacked | --all]*] [--stdout | base-name] < object-list


DESCRIPTION
-----------
Reads list of objects from the standard input, and writes a packed
archive with specified base-name, or to the standard output.

A packed archive is an efficient way to transfer set of objects
between two repositories, and also is an archival format which
is efficient to access.  The packed archive format (.pack) is
designed to be unpackable without having anything else, but for
random access, accompanied with the pack index file (.idx).

'git-unpack-objects' command can read the packed archive and
expand the objects contained in the pack into "one-file
one-object" format; this is typically done by the smart-pull
commands when a pack is created on-the-fly for efficient network
transport by their peers.

Placing both in the pack/ subdirectory of $GIT_OBJECT_DIRECTORY (or
any of the directories on $GIT_ALTERNATE_OBJECT_DIRECTORIES)
enables git to read from such an archive.

In a packed archive, an object is either stored as a compressed
whole, or as a difference from some other object.  The latter is
often called a delta.


OPTIONS
-------
base-name::
	Write into a pair of files (.pack and .idx), using
	<base-name> to determine the name of the created file.
	When this option is used, the two files are written in
	<base-name>-<SHA1>.{pack,idx} files.  <SHA1> is a hash
	of object names (currently in random order so it does
	not have any useful meaning) to make the resulting
	filename reasonably unique, and written to the standard
	output of the command.

--stdout::
	Write the pack contents (what would have been written to
	.pack file) out to the standard output.

--revs::
	Read the revision arguments from the standard input, instead of
	individual object names.  The revision arguments are processed
	the same way as gitlink:git-rev-list[1] with `--objects` flag
	uses its `commit` arguments to build the list of objects it
	outputs.  The objects on the resulting list are packed.

--unpacked::
	This implies `--revs`.  When processing the list of
	revision arguments read from the standard input, limit
	the objects packed to those that are not already packed.

--all::
	This implies `--revs`.  In addition to the list of
	revision arguments read from the standard input, pretend
	as if all refs under `$GIT_DIR/refs` are specified to be
	included.

--window=[N], --depth=[N]::
	These two options affect how the objects contained in
	the pack are stored using delta compression.  The
	objects are first internally sorted by type, size and
	optionally names and compared against the other objects
	within --window to see if using delta compression saves
	space.  --depth limits the maximum delta depth; making
	it too deep affects the performance on the unpacker
	side, because delta data needs to be applied that many
	times to get to the necessary object.
	The default value for both --window and --depth is 10.

--incremental::
	This flag causes an object already in a pack ignored
	even if it appears in the standard input.

--local::
	This flag is similar to `--incremental`; instead of
	ignoring all packed objects, it only ignores objects
	that are packed and not in the local object store
	(i.e. borrowed from an alternate).

--non-empty::
        Only create a packed archive if it would contain at
        least one object.

-q::
	This flag makes the command not to report its progress
	on the standard error stream.

--no-reuse-delta::
	When creating a packed archive in a repository that
	has existing packs, the command reuses existing deltas.
	This sometimes results in a slightly suboptimal pack.
	This flag tells the command not to reuse existing deltas
	but compute them from scratch.


Author
------
Written by Linus Torvalds <torvalds@osdl.org>

Documentation
-------------
Documentation by Junio C Hamano

See Also
--------
gitlink:git-rev-list[1]
gitlink:git-repack[1]
gitlink:git-prune-packed[1]

GIT
---
Part of the gitlink:git[7] suite

