Merge branch 'mg/use-default-abbrev-length-in-rev-list' into maint
[gitweb.git] / Documentation / git-pack-objects.txt
index f54d433d36b50184bd83f217c310935d1bbb541f..8ed09c0b3cfc0fff2dbb8907fdc00e027c2c6d33 100644 (file)
@@ -21,27 +21,28 @@ 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 self contained so that it can be unpacked without
-any further information, but for fast, random access to the objects
-in the pack, a pack index file (.idx) will be generated.
-
-Placing both in the pack/ subdirectory of $GIT_OBJECT_DIRECTORY (or
+A packed archive is an efficient way to transfer a set of objects
+between two repositories as well as an access efficient archival
+format.  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.
+
+The packed archive format (.pack) is designed to be self-contained
+so that it can be unpacked without any further information. Therefore,
+each object that a delta depends upon must be present within the pack.
+
+A pack index file (.idx) is generated for fast, random access to the
+objects in the pack. Placing both the index file (.idx) and the packed
+archive (.pack) 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.
+enables git to read from the pack archive.
 
-The 'git-unpack-objects' command can read the packed archive and
+The '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.
 
-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
 -------
@@ -61,7 +62,7 @@ base-name::
 --revs::
        Read the revision arguments from the standard input, instead of
        individual object names.  The revision arguments are processed
-       the same way as 'git-rev-list' with the `--objects` flag
+       the same way as 'git rev-list' with the `--objects` flag
        uses its `commit` arguments to build the list of objects it
        outputs.  The objects on the resulting list are packed.
 
@@ -73,7 +74,7 @@ base-name::
 --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
+       as if all refs under `refs/` are specified to be
        included.
 
 --include-tag::
@@ -105,26 +106,26 @@ base-name::
        `--window-memory=0` makes memory usage unlimited, which is the
        default.
 
---max-pack-size=<n>::
-       Maximum size of each output packfile, expressed in MiB.
+--max-pack-size=[N]::
+       Maximum size of each output pack file. The size can be suffixed with
+       "k", "m", or "g". The minimum size allowed is limited to 1 MiB.
        If specified,  multiple packfiles may be created.
        The default is unlimited, unless the config variable
        `pack.packSizeLimit` is set.
 
 --honor-pack-keep::
        This flag causes an object already in a local pack that
-       has a .keep file to be ignored, even if it appears in the
-       standard input.
+       has a .keep file to be ignored, even if it it would have
+       otherwise been packed.
 
 --incremental::
-       This flag causes an object already in a pack ignored
-       even if it appears in the standard input.
+       This flag causes an object already in a pack to be ignored
+       even if it would have otherwise been packed.
 
 --local::
-       This flag is similar to `--incremental`; instead of
-       ignoring all packed objects, it only ignores objects
-       that are packed and/or not in the local object store
-       (i.e. borrowed from an alternate).
+       This flag causes an object that is borrowed from an alternate
+       object store to be ignored even if it would have otherwise been
+       packed.
 
 --non-empty::
         Only create a packed archive if it would contain at
@@ -178,11 +179,21 @@ base-name::
        Add --no-reuse-object if you want to force a uniform compression
        level on all data no matter the source.
 
+--thin::
+       Create a "thin" pack by omitting the common objects between a
+       sender and a receiver in order to reduce network transfer. This
+       option only makes sense in conjunction with --stdout.
++
+Note: A thin pack violates the packed archive format by omitting
+required objects and is thus unusable by git without making it
+self-contained. Use `git index-pack --fix-thin`
+(see linkgit:git-index-pack[1]) to restore the self-contained property.
+
 --delta-base-offset::
        A packed archive can express base object of a delta as
        either 20-byte object name or as an offset in the
        stream, but older version of git does not understand the
-       latter.  By default, 'git-pack-objects' only uses the
+       latter.  By default, 'git pack-objects' only uses the
        former format for better compatibility.  This option
        allows the command to use the latter format for
        compactness.  Depending on the average delta chain