pack-objects: equal objects in size should delta against newer objects
[gitweb.git] / Documentation / git-repack.txt
index 951622774af70e92590740c27fe021223f29442a..d39abc126dec70108625af13d11541b771c8e85d 100644 (file)
@@ -3,13 +3,12 @@ git-repack(1)
 
 NAME
 ----
-git-repack - Script used to pack a repository from a collection of
-objects into pack files.
+git-repack - Pack unpacked objects in a repository
 
 
 SYNOPSIS
 --------
-'git-repack' [-a] [-d] [-f] [-l] [-n] [-q]
+'git-repack' [-a] [-d] [-f] [-l] [-n] [-q] [--window=N] [--depth=N]
 
 DESCRIPTION
 -----------
@@ -31,9 +30,9 @@ OPTIONS
        Instead of incrementally packing the unpacked objects,
        pack everything available into a single pack.
        Especially useful when packing a repository that is used
-       for a private development and there no need to worry
-       about people fetching via dumb protocols from it.  Use
-       with '-d'.
+       for private development and there is no need to worry
+       about people fetching via dumb file transfer protocols
+       from it.  Use with '-d'.
 
 -d::
        After packing, if the newly created packs make some
@@ -56,6 +55,31 @@ OPTIONS
         Do not update the server information with
         `git update-server-info`.
 
+--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.
+
+
+Configuration
+-------------
+
+When configuration variable `repack.UseDeltaBaseOffset` is set
+for the repository, the command passes `--delta-base-offset`
+option to `git-pack-objects`; this typically results in slightly
+smaller packs, but the generated packs are incompatible with
+versions of git older than (and including) v1.4.3; do not set
+the variable in a repository that older version of git needs to
+be able to read (this includes repositories from which packs can
+be copied out over http or rsync, and people who obtained packs
+that way can try to use older git with it).
+
+
 Author
 ------
 Written by Linus Torvalds <torvalds@osdl.org>