blob: 65eff66afe5990efc4af4f141809f355b7111bd3 [file] [log] [blame]
Junio C Hamano1a4e8412005-12-27 08:17:231git-pack-objects(1)
2===================
3
4NAME
5----
Junio C Hamano01078922006-03-10 00:31:476git-pack-objects - Create a packed archive of objects
Junio C Hamano1a4e8412005-12-27 08:17:237
8
9SYNOPSIS
10--------
Junio C Hamano7e9f6b72006-02-22 10:44:5511[verse]
Junio C Hamano5706e0b2009-11-24 10:54:1612'git pack-objects' [-q | --progress | --all-progress] [--all-progress-implied]
13[--no-reuse-delta] [--delta-base-offset] [--non-empty]
Junio C Hamanod2179ef2010-10-22 04:12:1714[--local] [--incremental] [--window=<n>] [--depth=<n>]
15[--revs [--unpacked | --all]] [--stdout | base-name]
Junio C Hamanod594fb62009-07-25 09:09:5416[--keep-true-parents] < object-list
Junio C Hamano1a4e8412005-12-27 08:17:2317
18
19DESCRIPTION
20-----------
21Reads list of objects from the standard input, and writes a packed
22archive with specified base-name, or to the standard output.
23
Junio C Hamano4fdccb22010-02-19 09:58:1424A packed archive is an efficient way to transfer a set of objects
25between two repositories as well as an access efficient archival
26format. In a packed archive, an object is either stored as a
27compressed whole or as a difference from some other object.
28The latter is often called a delta.
Junio C Hamano1a4e8412005-12-27 08:17:2329
Junio C Hamano4fdccb22010-02-19 09:58:1430The packed archive format (.pack) is designed to be self-contained
31so that it can be unpacked without any further information. Therefore,
32each object that a delta depends upon must be present within the pack.
33
34A pack index file (.idx) is generated for fast, random access to the
35objects in the pack. Placing both the index file (.idx) and the packed
36archive (.pack) in the pack/ subdirectory of $GIT_OBJECT_DIRECTORY (or
Junio C Hamano9810d632007-09-24 01:05:3437any of the directories on $GIT_ALTERNATE_OBJECT_DIRECTORIES)
Junio C Hamano4fdccb22010-02-19 09:58:1438enables git to read from the pack archive.
Junio C Hamano9810d632007-09-24 01:05:3439
Junio C Hamano1aa40d22010-01-21 17:46:4340The 'git unpack-objects' command can read the packed archive and
Junio C Hamano1a4e8412005-12-27 08:17:2341expand the objects contained in the pack into "one-file
42one-object" format; this is typically done by the smart-pull
43commands when a pack is created on-the-fly for efficient network
44transport by their peers.
45
Junio C Hamano1a4e8412005-12-27 08:17:2346
47OPTIONS
48-------
49base-name::
50Write into a pair of files (.pack and .idx), using
51<base-name> to determine the name of the created file.
52When this option is used, the two files are written in
53<base-name>-<SHA1>.{pack,idx} files. <SHA1> is a hash
Junio C Hamanoa2ec14f2006-11-02 00:22:4854of the sorted object names to make the resulting filename
55based on the pack content, and written to the standard
Junio C Hamano1a4e8412005-12-27 08:17:2356output of the command.
57
58--stdout::
Junio C Hamano235a91e2006-01-07 01:13:5859Write the pack contents (what would have been written to
Junio C Hamano1a4e8412005-12-27 08:17:2360.pack file) out to the standard output.
61
Junio C Hamano3eb513f2006-09-18 02:47:1662--revs::
63Read the revision arguments from the standard input, instead of
64individual object names. The revision arguments are processed
Junio C Hamano1aa40d22010-01-21 17:46:4365the same way as 'git rev-list' with the `--objects` flag
Junio C Hamano3eb513f2006-09-18 02:47:1666uses its `commit` arguments to build the list of objects it
67outputs. The objects on the resulting list are packed.
68
69--unpacked::
70This implies `--revs`. When processing the list of
71revision arguments read from the standard input, limit
72the objects packed to those that are not already packed.
73
74--all::
75This implies `--revs`. In addition to the list of
76revision arguments read from the standard input, pretend
Junio C Hamano4fdccb22010-02-19 09:58:1477as if all refs under `refs/` are specified to be
Junio C Hamano3eb513f2006-09-18 02:47:1678included.
79
Junio C Hamanobb343172008-03-09 10:39:0980--include-tag::
81Include unasked-for annotated tags if the object they
82reference was included in the resulting packfile. This
83can be useful to send new tags to native git clients.
84
Junio C Hamanod2179ef2010-10-22 04:12:1785--window=<n>::
86--depth=<n>::
Junio C Hamano93567a62006-10-08 08:47:5687These two options affect how the objects contained in
Junio C Hamano1a4e8412005-12-27 08:17:2388the pack are stored using delta compression. The
89objects are first internally sorted by type, size and
90optionally names and compared against the other objects
91within --window to see if using delta compression saves
92space. --depth limits the maximum delta depth; making
93it too deep affects the performance on the unpacker
94side, because delta data needs to be applied that many
95times to get to the necessary object.
Junio C Hamano91d44c52007-05-09 07:16:0796The default value for --window is 10 and --depth is 50.
Junio C Hamano1a4e8412005-12-27 08:17:2397
Junio C Hamanod2179ef2010-10-22 04:12:1798--window-memory=<n>::
Junio C Hamano235d53f2007-07-13 00:25:1599This option provides an additional limit on top of `--window`;
100the window size will dynamically scale down so as to not take
Junio C Hamanod2179ef2010-10-22 04:12:17101up more than '<n>' bytes in memory. This is useful in
Junio C Hamano235d53f2007-07-13 00:25:15102repositories with a mix of large and small objects to not run
103out of memory with a large window, but still be able to take
104advantage of the large window for the smaller objects. The
105size can be suffixed with "k", "m", or "g".
106`--window-memory=0` makes memory usage unlimited, which is the
107default.
108
Junio C Hamanod2179ef2010-10-22 04:12:17109--max-pack-size=<n>::
Junio C Hamano4d979582010-02-04 06:27:29110Maximum size of each output pack file. The size can be suffixed with
111"k", "m", or "g". The minimum size allowed is limited to 1 MiB.
Junio C Hamano591dc6a2007-05-29 09:18:19112If specified, multiple packfiles may be created.
Junio C Hamano49dccaf2008-02-10 10:48:01113The default is unlimited, unless the config variable
114`pack.packSizeLimit` is set.
Junio C Hamano591dc6a2007-05-29 09:18:19115
Junio C Hamano28363492008-11-14 08:26:31116--honor-pack-keep::
117This flag causes an object already in a local pack that
Junio C Hamano636c8b22010-03-07 22:25:17118has a .keep file to be ignored, even if it it would have
119otherwise been packed.
Junio C Hamano28363492008-11-14 08:26:31120
Junio C Hamano1a4e8412005-12-27 08:17:23121--incremental::
Junio C Hamano636c8b22010-03-07 22:25:17122This flag causes an object already in a pack to be ignored
123even if it would have otherwise been packed.
Junio C Hamano1a4e8412005-12-27 08:17:23124
125--local::
Junio C Hamano636c8b22010-03-07 22:25:17126This flag causes an object that is borrowed from an alternate
127object store to be ignored even if it would have otherwise been
128packed.
Junio C Hamano1a4e8412005-12-27 08:17:23129
130--non-empty::
131 Only create a packed archive if it would contain at
132 least one object.
133
Junio C Hamano0d3c8152006-11-08 01:33:41134--progress::
135Progress status is reported on the standard error stream
136by default when it is attached to a terminal, unless -q
137is specified. This flag forces progress status even if
138the standard error stream is not directed to a terminal.
139
140--all-progress::
141When --stdout is specified then progress report is
Junio C Hamano5706e0b2009-11-24 10:54:16142displayed during the object count and compression phases
Junio C Hamano0d3c8152006-11-08 01:33:41143but inhibited during the write-out phase. The reason is
144that in some cases the output stream is directly linked
145to another command which may wish to display progress
146status of its own as it processes incoming pack data.
147This flag is like --progress except that it forces progress
148report for the write-out phase as well even if --stdout is
149used.
150
Junio C Hamano5706e0b2009-11-24 10:54:16151--all-progress-implied::
152This is used to imply --all-progress whenever progress display
153is activated. Unlike --all-progress this flag doesn't actually
154force any progress display by itself.
155
Junio C Hamano7e9f6b72006-02-22 10:44:55156-q::
157This flag makes the command not to report its progress
158on the standard error stream.
159
160--no-reuse-delta::
161When creating a packed archive in a repository that
162has existing packs, the command reuses existing deltas.
163This sometimes results in a slightly suboptimal pack.
164This flag tells the command not to reuse existing deltas
165but compute them from scratch.
166
Junio C Hamanof2ce2972007-05-20 19:12:09167--no-reuse-object::
168This flag tells the command not to reuse existing object data at all,
169including non deltified object, forcing recompression of everything.
170This implies --no-reuse-delta. Useful only in the obscure case where
171wholesale enforcement of a different compression level on the
172packed data is desired.
173
Junio C Hamanod2179ef2010-10-22 04:12:17174--compression=<n>::
Junio C Hamanof2ce2972007-05-20 19:12:09175Specifies compression level for newly-compressed data in the
176generated pack. If not specified, pack compression level is
177determined first by pack.compression, then by core.compression,
178and defaults to -1, the zlib default, if neither is set.
Junio C Hamanofce7c7e2008-07-02 03:06:38179Add --no-reuse-object if you want to force a uniform compression
Junio C Hamanoef4c2d12007-09-10 08:11:27180level on all data no matter the source.
Junio C Hamanof2ce2972007-05-20 19:12:09181
Junio C Hamano4fdccb22010-02-19 09:58:14182--thin::
183Create a "thin" pack by omitting the common objects between a
184sender and a receiver in order to reduce network transfer. This
185option only makes sense in conjunction with --stdout.
186+
187Note: A thin pack violates the packed archive format by omitting
188required objects and is thus unusable by git without making it
189self-contained. Use `git index-pack --fix-thin`
190(see linkgit:git-index-pack[1]) to restore the self-contained property.
191
Junio C Hamano77b7e902006-10-23 07:18:50192--delta-base-offset::
193A packed archive can express base object of a delta as
194either 20-byte object name or as an offset in the
195stream, but older version of git does not understand the
Junio C Hamano1aa40d22010-01-21 17:46:43196latter. By default, 'git pack-objects' only uses the
Junio C Hamano77b7e902006-10-23 07:18:50197former format for better compatibility. This option
198allows the command to use the latter format for
199compactness. Depending on the average delta chain
200length, this option typically shrinks the resulting
201packfile by 3-5 per-cent.
202
Junio C Hamano58155b42007-09-15 07:46:14203--threads=<n>::
204Specifies the number of threads to spawn when searching for best
205delta matches. This requires that pack-objects be compiled with
206pthreads otherwise this option is ignored with a warning.
207This is meant to reduce packing time on multiprocessor machines.
208The required amount of memory for the delta search window is
209however multiplied by the number of threads.
Junio C Hamano24bc09a2008-02-28 00:27:44210Specifying 0 will cause git to auto-detect the number of CPU's
211and set the number of threads accordingly.
Junio C Hamano58155b42007-09-15 07:46:14212
Junio C Hamanoe90436a2007-04-22 07:22:13213--index-version=<version>[,<offset>]::
214This is intended to be used by the test suite only. It allows
215to force the version for the generated pack index, and to force
21664-bit index entries on objects located above the given offset.
217
Junio C Hamanod594fb62009-07-25 09:09:54218--keep-true-parents::
219With this option, parents that are hidden by grafts are packed
220nevertheless.
221
Junio C Hamano7e9f6b72006-02-22 10:44:55222
Junio C Hamano1a4e8412005-12-27 08:17:23223Author
224------
225Written by Linus Torvalds <torvalds@osdl.org>
226
227Documentation
228-------------
229Documentation by Junio C Hamano
230
Junio C Hamano9049d912008-05-29 02:09:50231SEE ALSO
Junio C Hamano1a4e8412005-12-27 08:17:23232--------
Junio C Hamano35738e82008-01-07 07:55:46233linkgit:git-rev-list[1]
234linkgit:git-repack[1]
235linkgit:git-prune-packed[1]
Junio C Hamano1a4e8412005-12-27 08:17:23236
237GIT
238---
Junio C Hamanof7c042d2008-06-06 22:50:53239Part of the linkgit:git[1] suite