-----------
This script is used to combine all objects that do not currently
-reside in a "pack", into a pack.
+reside in a "pack", into a pack. It can also be used to re-organise
+existing packs into a single, more efficient pack.
A pack is a collection of objects, individually compressed, with
delta compression applied, stored in a single file, with an
-a::
Instead of incrementally packing the unpacked objects,
- pack everything available into a single pack.
+ pack everything referenced into a single pack.
Especially useful when packing a repository that is used
for private development and there is no need to worry
- about people fetching via dumb file transfer protocols
- from it. Use with '-d'.
+ about people fetching via dumb protocols from it. Use
+ with '-d'. This will clean up the objects that `git prune`
+ leaves behind, but `git fsck --full` shows as
+ dangling.
-d::
After packing, if the newly created packs make some
to be applied that many times to get to the necessary object.
The default value for --window is 10 and --depth is 50.
+--window-memory=[N]::
+ This option provides an additional limit on top of `--window`;
+ the window size will dynamically scale down so as to not take
+ up more than N bytes in memory. This is useful in
+ repositories with a mix of large and small objects to not run
+ 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.
+
--max-pack-size=<n>::
Maximum size of each output packfile, expressed in MiB.
If specified, multiple packfiles may be created.