Documentation / git-pack-objects.txton commit don't let the delta cache grow unbounded in 'git repack' (5749b0b)
   1git-pack-objects(1)
   2===================
   3
   4NAME
   5----
   6git-pack-objects - Create a packed archive of objects
   7
   8
   9SYNOPSIS
  10--------
  11[verse]
  12'git pack-objects' [-q] [--no-reuse-delta] [--delta-base-offset] [--non-empty]
  13        [--local] [--incremental] [--window=N] [--depth=N] [--all-progress]
  14        [--revs [--unpacked | --all]*] [--stdout | base-name]
  15        [--keep-true-parents] < object-list
  16
  17
  18DESCRIPTION
  19-----------
  20Reads list of objects from the standard input, and writes a packed
  21archive with specified base-name, or to the standard output.
  22
  23A packed archive is an efficient way to transfer set of objects
  24between two repositories, and also is an archival format which
  25is efficient to access.  The packed archive format (.pack) is
  26designed to be self contained so that it can be unpacked without
  27any further information, but for fast, random access to the objects
  28in the pack, a pack index file (.idx) will be generated.
  29
  30Placing both in the pack/ subdirectory of $GIT_OBJECT_DIRECTORY (or
  31any of the directories on $GIT_ALTERNATE_OBJECT_DIRECTORIES)
  32enables git to read from such an archive.
  33
  34The 'git-unpack-objects' command can read the packed archive and
  35expand the objects contained in the pack into "one-file
  36one-object" format; this is typically done by the smart-pull
  37commands when a pack is created on-the-fly for efficient network
  38transport by their peers.
  39
  40In a packed archive, an object is either stored as a compressed
  41whole, or as a difference from some other object.  The latter is
  42often called a delta.
  43
  44
  45OPTIONS
  46-------
  47base-name::
  48        Write into a pair of files (.pack and .idx), using
  49        <base-name> to determine the name of the created file.
  50        When this option is used, the two files are written in
  51        <base-name>-<SHA1>.{pack,idx} files.  <SHA1> is a hash
  52        of the sorted object names to make the resulting filename
  53        based on the pack content, and written to the standard
  54        output of the command.
  55
  56--stdout::
  57        Write the pack contents (what would have been written to
  58        .pack file) out to the standard output.
  59
  60--revs::
  61        Read the revision arguments from the standard input, instead of
  62        individual object names.  The revision arguments are processed
  63        the same way as 'git-rev-list' with the `--objects` flag
  64        uses its `commit` arguments to build the list of objects it
  65        outputs.  The objects on the resulting list are packed.
  66
  67--unpacked::
  68        This implies `--revs`.  When processing the list of
  69        revision arguments read from the standard input, limit
  70        the objects packed to those that are not already packed.
  71
  72--all::
  73        This implies `--revs`.  In addition to the list of
  74        revision arguments read from the standard input, pretend
  75        as if all refs under `$GIT_DIR/refs` are specified to be
  76        included.
  77
  78--include-tag::
  79        Include unasked-for annotated tags if the object they
  80        reference was included in the resulting packfile.  This
  81        can be useful to send new tags to native git clients.
  82
  83--window=[N]::
  84--depth=[N]::
  85        These two options affect how the objects contained in
  86        the pack are stored using delta compression.  The
  87        objects are first internally sorted by type, size and
  88        optionally names and compared against the other objects
  89        within --window to see if using delta compression saves
  90        space.  --depth limits the maximum delta depth; making
  91        it too deep affects the performance on the unpacker
  92        side, because delta data needs to be applied that many
  93        times to get to the necessary object.
  94        The default value for --window is 10 and --depth is 50.
  95
  96--window-memory=[N]::
  97        This option provides an additional limit on top of `--window`;
  98        the window size will dynamically scale down so as to not take
  99        up more than N bytes in memory.  This is useful in
 100        repositories with a mix of large and small objects to not run
 101        out of memory with a large window, but still be able to take
 102        advantage of the large window for the smaller objects.  The
 103        size can be suffixed with "k", "m", or "g".
 104        `--window-memory=0` makes memory usage unlimited, which is the
 105        default.
 106
 107--max-pack-size=<n>::
 108        Maximum size of each output packfile, expressed in MiB.
 109        If specified,  multiple packfiles may be created.
 110        The default is unlimited, unless the config variable
 111        `pack.packSizeLimit` is set.
 112
 113--honor-pack-keep::
 114        This flag causes an object already in a local pack that
 115        has a .keep file to be ignored, even if it appears in the
 116        standard input.
 117
 118--incremental::
 119        This flag causes an object already in a pack ignored
 120        even if it appears in the standard input.
 121
 122--local::
 123        This flag is similar to `--incremental`; instead of
 124        ignoring all packed objects, it only ignores objects
 125        that are packed and/or not in the local object store
 126        (i.e. borrowed from an alternate).
 127
 128--non-empty::
 129        Only create a packed archive if it would contain at
 130        least one object.
 131
 132--progress::
 133        Progress status is reported on the standard error stream
 134        by default when it is attached to a terminal, unless -q
 135        is specified. This flag forces progress status even if
 136        the standard error stream is not directed to a terminal.
 137
 138--all-progress::
 139        When --stdout is specified then progress report is
 140        displayed during the object count and deltification phases
 141        but inhibited during the write-out phase. The reason is
 142        that in some cases the output stream is directly linked
 143        to another command which may wish to display progress
 144        status of its own as it processes incoming pack data.
 145        This flag is like --progress except that it forces progress
 146        report for the write-out phase as well even if --stdout is
 147        used.
 148
 149-q::
 150        This flag makes the command not to report its progress
 151        on the standard error stream.
 152
 153--no-reuse-delta::
 154        When creating a packed archive in a repository that
 155        has existing packs, the command reuses existing deltas.
 156        This sometimes results in a slightly suboptimal pack.
 157        This flag tells the command not to reuse existing deltas
 158        but compute them from scratch.
 159
 160--no-reuse-object::
 161        This flag tells the command not to reuse existing object data at all,
 162        including non deltified object, forcing recompression of everything.
 163        This implies --no-reuse-delta. Useful only in the obscure case where
 164        wholesale enforcement of a different compression level on the
 165        packed data is desired.
 166
 167--compression=[N]::
 168        Specifies compression level for newly-compressed data in the
 169        generated pack.  If not specified,  pack compression level is
 170        determined first by pack.compression,  then by core.compression,
 171        and defaults to -1,  the zlib default,  if neither is set.
 172        Add --no-reuse-object if you want to force a uniform compression
 173        level on all data no matter the source.
 174
 175--delta-base-offset::
 176        A packed archive can express base object of a delta as
 177        either 20-byte object name or as an offset in the
 178        stream, but older version of git does not understand the
 179        latter.  By default, 'git-pack-objects' only uses the
 180        former format for better compatibility.  This option
 181        allows the command to use the latter format for
 182        compactness.  Depending on the average delta chain
 183        length, this option typically shrinks the resulting
 184        packfile by 3-5 per-cent.
 185
 186--threads=<n>::
 187        Specifies the number of threads to spawn when searching for best
 188        delta matches.  This requires that pack-objects be compiled with
 189        pthreads otherwise this option is ignored with a warning.
 190        This is meant to reduce packing time on multiprocessor machines.
 191        The required amount of memory for the delta search window is
 192        however multiplied by the number of threads.
 193        Specifying 0 will cause git to auto-detect the number of CPU's
 194        and set the number of threads accordingly.
 195
 196--index-version=<version>[,<offset>]::
 197        This is intended to be used by the test suite only. It allows
 198        to force the version for the generated pack index, and to force
 199        64-bit index entries on objects located above the given offset.
 200
 201--keep-true-parents::
 202        With this option, parents that are hidden by grafts are packed
 203        nevertheless.
 204
 205
 206Author
 207------
 208Written by Linus Torvalds <torvalds@osdl.org>
 209
 210Documentation
 211-------------
 212Documentation by Junio C Hamano
 213
 214SEE ALSO
 215--------
 216linkgit:git-rev-list[1]
 217linkgit:git-repack[1]
 218linkgit:git-prune-packed[1]
 219
 220GIT
 221---
 222Part of the linkgit:git[1] suite