travis-ci: switch to Xcode 10.1 macOS image
[gitweb.git] / Documentation / git-repack.txt
index b9c02ce48134dd44b05053275ec4b219f3999091..aa0cc8bd445c99703d6ee17346d656104194dda8 100644 (file)
@@ -9,7 +9,7 @@ git-repack - Pack unpacked objects in a repository
 SYNOPSIS
 --------
 [verse]
-'git repack' [-a] [-A] [-d] [-f] [-F] [-l] [-n] [-q] [-b] [--window=<n>] [--depth=<n>]
+'git repack' [-a] [-A] [-d] [-f] [-F] [-l] [-n] [-q] [-b] [--window=<n>] [--depth=<n>] [--threads=<n>] [--keep-pack=<pack-name>]
 
 DESCRIPTION
 -----------
@@ -33,16 +33,21 @@ OPTIONS
        pack everything referenced into a single pack.
        Especially useful when packing a repository that is used
        for private development. Use
-       with '-d'.  This will clean up the objects that `git prune`
+       with `-d`.  This will clean up the objects that `git prune`
        leaves behind, but `git fsck --full --dangling` shows as
        dangling.
 +
 Note that users fetching over dumb protocols will have to fetch the
 whole new pack in order to get any contained object, no matter how many
 other objects in that pack they already have locally.
++
+Promisor packfiles are repacked separately: if there are packfiles that
+have an associated ".promisor" file, these packfiles will be repacked
+into another separate pack, and an empty ".promisor" file corresponding
+to the new separate pack will be written.
 
 -A::
-       Same as `-a`, unless '-d' is used.  Then any unreachable
+       Same as `-a`, unless `-d` is used.  Then any unreachable
        objects in a previous pack become loose, unpacked objects,
        instead of being left in the old pack.  Unreachable objects
        are never intentionally added to a pack, even when repacking.
@@ -90,7 +95,12 @@ other objects in that pack they already have locally.
        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 --window is 10 and --depth is 50.
++
+The default value for --window is 10 and --depth is 50. The maximum
+depth is 4095.
+
+--threads=<n>::
+       This option is passed through to `git pack-objects`.
 
 --window-memory=<n>::
        This option provides an additional limit on top of `--window`;
@@ -100,8 +110,10 @@ other objects in that pack they already have locally.
        out of memory with a large window, but still be able to take
        advantage of the large window for the smaller objects.  The
        size can be suffixed with "k", "m", or "g".
-       `--window-memory=0` makes memory usage unlimited, which is the
-       default.
+       `--window-memory=0` makes memory usage unlimited.  The default
+       is taken from the `pack.windowMemory` configuration variable.
+       Note that the actual memory usage will be the limit multiplied
+       by the number of threads used by linkgit:git-pack-objects[1].
 
 --max-pack-size=<n>::
        Maximum size of each output pack file. The size can be suffixed with
@@ -128,6 +140,31 @@ other objects in that pack they already have locally.
        with `-b` or `repack.writeBitmaps`, as it ensures that the
        bitmapped packfile has the necessary objects.
 
+--keep-pack=<pack-name>::
+       Exclude the given pack from repacking. This is the equivalent
+       of having `.keep` file on the pack. `<pack-name>` is the the
+       pack file name without leading directory (e.g. `pack-123.pack`).
+       The option could be specified multiple times to keep multiple
+       packs.
+
+--unpack-unreachable=<when>::
+       When loosening unreachable objects, do not bother loosening any
+       objects older than `<when>`. This can be used to optimize out
+       the write of any objects that would be immediately pruned by
+       a follow-up `git prune`.
+
+-k::
+--keep-unreachable::
+       When used with `-ad`, any unreachable objects from existing
+       packs will be appended to the end of the packfile instead of
+       being removed. In addition, any unreachable loose objects will
+       be packed (and their loose counterparts removed).
+
+-i::
+--delta-islands::
+       Pass the `--delta-islands` option to `git-pack-objects`, see
+       linkgit:git-pack-objects[1].
+
 Configuration
 -------------