]> git.ipfire.org Git - thirdparty/git.git/blame - Documentation/git-repack.txt
parse-remote: replace unnecessary sed invocation
[thirdparty/git.git] / Documentation / git-repack.txt
CommitLineData
215a7ad1
JH
1git-repack(1)
2=============
e31bb3bb
JH
3
4NAME
5----
c3f0baac 6git-repack - Pack unpacked objects in a repository
e31bb3bb
JH
7
8
9SYNOPSIS
10--------
d4c43697 11'git repack' [-a] [-A] [-d] [-f] [-F] [-l] [-n] [-q] [--window=<n>] [--depth=<n>]
e31bb3bb
JH
12
13DESCRIPTION
14-----------
e31bb3bb 15
f85a4191 16This script is used to combine all objects that do not currently
02783075 17reside in a "pack", into a pack. It can also be used to re-organize
38d697a1 18existing packs into a single, more efficient pack.
f85a4191
JH
19
20A pack is a collection of objects, individually compressed, with
21delta compression applied, stored in a single file, with an
22associated index file.
23
24Packs are used to reduce the load on mirror systems, backup
25engines, disk storage, etc.
26
27OPTIONS
28-------
29
30-a::
31 Instead of incrementally packing the unpacked objects,
38d697a1 32 pack everything referenced into a single pack.
f85a4191 33 Especially useful when packing a repository that is used
9a8531ee 34 for private development. Use
38d697a1
SV
35 with '-d'. This will clean up the objects that `git prune`
36 leaves behind, but `git fsck --full` shows as
37 dangling.
9a8531ee
MG
38+
39Note that users fetching over dumb protocols will have to fetch the
40whole new pack in order to get any contained object, no matter how many
41other objects in that pack they already have locally.
f85a4191 42
bbefaa1f 43-A::
83d0289d
BC
44 Same as `-a`, unless '-d' is used. Then any unreachable
45 objects in a previous pack become loose, unpacked objects,
46 instead of being left in the old pack. Unreachable objects
47 are never intentionally added to a pack, even when repacking.
48 This option prevents unreachable objects from being immediately
bbefaa1f
CF
49 deleted by way of being left in the old pack and then
50 removed. Instead, the loose unreachable objects
51 will be pruned according to normal expiry rules
0b444cdb 52 with the next 'git gc' invocation. See linkgit:git-gc[1].
bbefaa1f 53
f85a4191
JH
54-d::
55 After packing, if the newly created packs make some
56 existing packs redundant, remove the redundant packs.
0b444cdb 57 Also run 'git prune-packed' to remove redundant
483bc4f0 58 loose object files.
e31bb3bb 59
31f23281 60-l::
0b444cdb 61 Pass the `--local` option to 'git pack-objects'. See
5162e697 62 linkgit:git-pack-objects[1].
31f23281 63
cec2be76 64-f::
5c47e1c7
JK
65 Pass the `--no-reuse-delta` option to `git-pack-objects`, see
66 linkgit:git-pack-objects[1].
67
68-F::
8d11fdea 69 Pass the `--no-reuse-object` option to `git-pack-objects`, see
5162e697 70 linkgit:git-pack-objects[1].
cec2be76
JH
71
72-q::
0b444cdb 73 Pass the `-q` option to 'git pack-objects'. See
5162e697 74 linkgit:git-pack-objects[1].
cec2be76 75
31f23281 76-n::
c30f9936 77 Do not update the server information with
0b444cdb 78 'git update-server-info'. This option skips
c30f9936
SP
79 updating local catalog files needed to publish
80 this repository (or a direct copy of it)
0cafe944 81 over HTTP or FTP. See linkgit:git-update-server-info[1].
e31bb3bb 82
62b4698e
ŠN
83--window=<n>::
84--depth=<n>::
3df19671 85 These two options affect how the objects contained in the pack are
02ac04fc
JF
86 stored using delta compression. The objects are first internally
87 sorted by type, size and optionally names and compared against the
88 other objects within `--window` to see if using delta compression saves
89 space. `--depth` limits the maximum delta depth; making it too deep
90 affects the performance on the unpacker side, because delta data needs
91 to be applied that many times to get to the necessary object.
618e613a 92 The default value for --window is 10 and --depth is 50.
02ac04fc 93
62b4698e 94--window-memory=<n>::
e93b15cd
BD
95 This option provides an additional limit on top of `--window`;
96 the window size will dynamically scale down so as to not take
62b4698e 97 up more than '<n>' bytes in memory. This is useful in
e93b15cd
BD
98 repositories with a mix of large and small objects to not run
99 out of memory with a large window, but still be able to take
100 advantage of the large window for the smaller objects. The
101 size can be suffixed with "k", "m", or "g".
102 `--window-memory=0` makes memory usage unlimited, which is the
103 default.
104
62b4698e 105--max-pack-size=<n>::
07cf0f24
NP
106 Maximum size of each output pack file. The size can be suffixed with
107 "k", "m", or "g". The minimum size allowed is limited to 1 MiB.
6b94b1a0 108 If specified, multiple packfiles may be created.
07cf0f24
NP
109 The default is unlimited, unless the config variable
110 `pack.packSizeLimit` is set.
6b94b1a0 111
02ac04fc 112
b6945f57
JH
113Configuration
114-------------
115
9f17688d
NP
116By default, the command passes `--delta-base-offset` option to
117'git pack-objects'; this typically results in slightly smaller packs,
118but the generated packs are incompatible with versions of Git older than
119version 1.4.4. If you need to share your repository with such ancient Git
120versions, either directly or via the dumb http or rsync protocol, then you
121need to set the configuration variable `repack.UseDeltaBaseOffset` to
122"false" and repack. Access from old Git versions over the native protocol
123is unaffected by this option as the conversion is performed on the fly
124as needed in that case.
b6945f57
JH
125
126
e31bb3bb
JH
127Author
128------
129Written by Linus Torvalds <torvalds@osdl.org>
130
131Documentation
132--------------
133Documentation by Ryan Anderson <ryan@michonline.com>
134
56ae8df5 135SEE ALSO
e31bb3bb 136--------
5162e697
DM
137linkgit:git-pack-objects[1]
138linkgit:git-prune-packed[1]
e31bb3bb
JH
139
140GIT
141---
9e1f0a85 142Part of the linkgit:git[1] suite