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]

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

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

