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 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>

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

