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

NAME
----
git-repack - Script used to pack a repository from a collection of
objects into pack files.


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 a private development and there no need to worry
	about people fetching via dumb 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 affects 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.


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

