git-repack(1)
=============

NAME
----
git-repack - Pack unpacked objects in a repository


SYNOPSIS
--------
'git-repack' [-a] [-d] [-f] [-l] [-n] [-q] [--window=N] [--depth=N]

DESCRIPTION
-----------

This script is used to combine all objects that do not currently
reside in a "pack", into a pack.

A pack is a collection of objects, individually compressed, with
delta compression applied, stored in a single file, with an
associated index file.

Packs are used to reduce the load on mirror systems, backup
engines, disk storage, etc.

OPTIONS
-------

-a::
	Instead of incrementally packing the unpacked objects,
	pack everything available 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'.

-d::
	After packing, if the newly created packs make some
	existing packs redundant, remove the redundant packs.
	Also runs gitlink:git-prune-packed[1].

-l::
        Pass the `--local` option to `git pack-objects`, see
        gitlink:git-pack-objects[1].

-f::
        Pass the `--no-reuse-delta` option to `git pack-objects`, see
        gitlink:git-pack-objects[1].

-q::
        Pass the `-q` option to `git pack-objects`, see
        gitlink:git-pack-objects[1].

-n::
        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 --window is 10 and --depth is 50.


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>

Documentation
--------------
Documentation by Ryan Anderson <ryan@michonline.com>

See Also
--------
gitlink:git-pack-objects[1]
gitlink:git-prune-packed[1]

GIT
---
Part of the gitlink:git[7] suite

