]> git.ipfire.org Git - thirdparty/git.git/blame - Documentation/config/pack.txt
Merge branch 'es/add-doc-list-short-form-of-all-in-synopsis'
[thirdparty/git.git] / Documentation / config / pack.txt
CommitLineData
a168c5a2
NTND
1pack.window::
2 The size of the window used by linkgit:git-pack-objects[1] when no
3 window size is given on the command line. Defaults to 10.
4
5pack.depth::
6 The maximum delta depth used by linkgit:git-pack-objects[1] when no
7 maximum depth is given on the command line. Defaults to 50.
8 Maximum value is 4095.
9
10pack.windowMemory::
11 The maximum size of memory that is consumed by each thread
12 in linkgit:git-pack-objects[1] for pack window memory when
13 no limit is given on the command line. The value can be
14 suffixed with "k", "m", or "g". When left unconfigured (or
15 set explicitly to 0), there will be no limit.
16
17pack.compression::
18 An integer -1..9, indicating the compression level for objects
19 in a pack file. -1 is the zlib default. 0 means no
20 compression, and 1..9 are various speed/size tradeoffs, 9 being
21 slowest. If not set, defaults to core.compression. If that is
22 not set, defaults to -1, the zlib default, which is "a default
23 compromise between speed and compression (currently equivalent
24 to level 6)."
25+
26Note that changing the compression level will not automatically recompress
27all existing objects. You can force recompression by passing the -F option
28to linkgit:git-repack[1].
29
e704fc79
JK
30pack.allowPackReuse::
31 When true, and when reachability bitmaps are enabled,
32 pack-objects will try to send parts of the bitmapped packfile
33 verbatim. This can reduce memory and CPU usage to serve fetches,
34 but might result in sending a slightly larger pack. Defaults to
35 true.
36
a168c5a2
NTND
37pack.island::
38 An extended regular expression configuring a set of delta
39 islands. See "DELTA ISLANDS" in linkgit:git-pack-objects[1]
40 for details.
41
42pack.islandCore::
43 Specify an island name which gets to have its objects be
44 packed first. This creates a kind of pseudo-pack at the front
45 of one pack, so that the objects from the specified island are
46 hopefully faster to copy into any pack that should be served
47 to a user requesting these objects. In practice this means
48 that the island specified should likely correspond to what is
49 the most commonly cloned in the repo. See also "DELTA ISLANDS"
50 in linkgit:git-pack-objects[1].
51
52pack.deltaCacheSize::
53 The maximum memory in bytes used for caching deltas in
54 linkgit:git-pack-objects[1] before writing them out to a pack.
55 This cache is used to speed up the writing object phase by not
56 having to recompute the final delta result once the best match
57 for all objects is found. Repacking large repositories on machines
58 which are tight with memory might be badly impacted by this though,
59 especially if this cache pushes the system into swapping.
60 A value of 0 means no limit. The smallest size of 1 byte may be
61 used to virtually disable this cache. Defaults to 256 MiB.
62
63pack.deltaCacheLimit::
64 The maximum size of a delta, that is cached in
65 linkgit:git-pack-objects[1]. This cache is used to speed up the
66 writing object phase by not having to recompute the final delta
67 result once the best match for all objects is found.
68 Defaults to 1000. Maximum value is 65535.
69
70pack.threads::
71 Specifies the number of threads to spawn when searching for best
72 delta matches. This requires that linkgit:git-pack-objects[1]
73 be compiled with pthreads otherwise this option is ignored with a
74 warning. This is meant to reduce packing time on multiprocessor
75 machines. The required amount of memory for the delta search window
76 is however multiplied by the number of threads.
dbe33c5a 77 Specifying 0 will cause Git to auto-detect the number of CPUs
a168c5a2
NTND
78 and set the number of threads accordingly.
79
80pack.indexVersion::
81 Specify the default pack index version. Valid values are 1 for
82 legacy pack index used by Git versions prior to 1.5.2, and 2 for
83 the new pack index with capabilities for packs larger than 4 GB
84 as well as proper protection against the repacking of corrupted
85 packs. Version 2 is the default. Note that version 2 is enforced
cf6cac20 86 and this config option is ignored whenever the corresponding pack is
a168c5a2
NTND
87 larger than 2 GB.
88+
89If you have an old Git that does not understand the version 2 `*.idx` file,
0cac690e 90cloning or fetching over a non-native protocol (e.g. "http")
a168c5a2
NTND
91that will copy both `*.pack` file and corresponding `*.idx` file from the
92other side may give you a repository that cannot be accessed with your
93older version of Git. If the `*.pack` file is smaller than 2 GB, however,
94you can use linkgit:git-index-pack[1] on the *.pack file to regenerate
95the `*.idx` file.
96
97pack.packSizeLimit::
98 The maximum size of a pack. This setting only affects
99 packing to a file when repacking, i.e. the git:// protocol
100 is unaffected. It can be overridden by the `--max-pack-size`
101 option of linkgit:git-repack[1]. Reaching this limit results
6fb9195f
JK
102 in the creation of multiple packfiles.
103+
104Note that this option is rarely useful, and may result in a larger total
cf6cac20
EN
105on-disk size (because Git will not store deltas between packs) and
106worse runtime performance (object lookup within multiple packs is
6fb9195f
JK
107slower than a single pack, and optimizations like reachability bitmaps
108cannot cope with multiple packs).
109+
110If you need to actively run Git using smaller packfiles (e.g., because your
111filesystem does not support large files), this option may help. But if
112your goal is to transmit a packfile over a medium that supports limited
113sizes (e.g., removable media that cannot store the whole repository),
114you are likely better off creating a single large packfile and splitting
115it using a generic multi-volume archive tool (e.g., Unix `split`).
116+
117The minimum size allowed is limited to 1 MiB. The default is unlimited.
118Common unit suffixes of 'k', 'm', or 'g' are supported.
a168c5a2
NTND
119
120pack.useBitmaps::
121 When true, git will use pack bitmaps (if available) when packing
122 to stdout (e.g., during the server side of a fetch). Defaults to
123 true. You should not generally need to turn this off unless
124 you are debugging pack bitmaps.
125
b0afdce5
TB
126pack.useBitmapBoundaryTraversal::
127 When true, Git will use an experimental algorithm for computing
128 reachability queries with bitmaps. Instead of building up
129 complete bitmaps for all of the negated tips and then OR-ing
130 them together, consider negated tips with existing bitmaps as
131 additive (i.e. OR-ing them into the result if they exist,
132 ignoring them otherwise), and build up a bitmap at the boundary
133 instead.
134+
135When using this algorithm, Git may include too many objects as a result
136of not opening up trees belonging to certain UNINTERESTING commits. This
137inexactness matches the non-bitmap traversal algorithm.
138+
139In many cases, this can provide a speed-up over the exact algorithm,
140particularly when there is poor bitmap coverage of the negated side of
141the query.
142
3d036eb0
DS
143pack.useSparse::
144 When true, git will default to using the '--sparse' option in
145 'git pack-objects' when the '--revs' option is present. This
146 algorithm only walks trees that appear in paths that introduce new
147 objects. This can have significant performance benefits when
148 computing a pack to send a small change. However, it is possible
149 that extra objects are added to the pack-file if the included
de3a8641
DS
150 commits contain certain types of direct renames. Default is
151 `true`.
3d036eb0 152
3f267a11
TB
153pack.preferBitmapTips::
154 When selecting which commits will receive bitmaps, prefer a
155 commit at the tip of any reference that is a suffix of any value
156 of this configuration over any other commits in the "selection
157 window".
158+
159Note that setting this configuration to `refs/foo` does not mean that
160the commits at the tips of `refs/foo/bar` and `refs/foo/baz` will
161necessarily be selected. This is because commits are selected for
162bitmaps from within a series of windows of variable length.
163+
164If a commit at the tip of any reference which is a suffix of any value
165of this configuration is seen in a window, it is immediately given
166preference over any other commit in that window.
167
a168c5a2
NTND
168pack.writeBitmaps (deprecated)::
169 This is a deprecated synonym for `repack.writeBitmaps`.
170
171pack.writeBitmapHashCache::
172 When true, git will include a "hash cache" section in the bitmap
173 index (if one is written). This cache can be used to feed git's
174 delta heuristics, potentially leading to better deltas between
175 bitmapped and non-bitmapped objects (e.g., when serving a fetch
176 between an older, bitmapped pack and objects that have been
177 pushed since the last gc). The downside is that it consumes 4
d4316604 178 bytes per object of disk space. Defaults to true.
caca3c9f
TB
179+
180When writing a multi-pack reachability bitmap, no new namehashes are
181computed; instead, any namehashes stored in an existing bitmap are
182permuted into their appropriate location when writing a new bitmap.
1615c567 183
76f14b77
AC
184pack.writeBitmapLookupTable::
185 When true, Git will include a "lookup table" section in the
186 bitmap index (if one is written). This table is used to defer
187 loading individual bitmaps as late as possible. This can be
188 beneficial in repositories that have relatively large bitmap
189 indexes. Defaults to false.
190
dbcf6116
TB
191pack.readReverseIndex::
192 When true, git will read any .rev file(s) that may be available
193 (see: linkgit:gitformat-pack[5]). When false, the reverse index
194 will be generated from scratch and stored in memory. Defaults to
195 true.
196
1615c567
TB
197pack.writeReverseIndex::
198 When true, git will write a corresponding .rev file (see:
977c47b4 199 linkgit:gitformat-pack[5])
1615c567
TB
200 for each new packfile that it writes in all places except for
201 linkgit:git-fast-import[1] and in the bulk checkin mechanism.
a8dd7e05 202 Defaults to true.