| git-pack-objects(1) |
| =================== |
| |
| NAME |
| ---- |
| git-pack-objects - Create a packed archive of objects |
| |
| |
| SYNOPSIS |
| -------- |
| [verse] |
| 'git-pack-objects' [-q] [--no-reuse-delta] [--delta-base-offset] [--non-empty] |
| [--local] [--incremental] [--window=N] [--depth=N] [--all-progress] |
| [--revs [--unpacked | --all]*] [--stdout | base-name] < object-list |
| |
| |
| DESCRIPTION |
| ----------- |
| Reads list of objects from the standard input, and writes a packed |
| archive with specified base-name, or to the standard output. |
| |
| A packed archive is an efficient way to transfer set of objects |
| between two repositories, and also is an archival format which |
| is efficient to access. The packed archive format (.pack) is |
| designed to be unpackable without having anything else, but for |
| random access, accompanied with the pack index file (.idx). |
| |
| 'git-unpack-objects' command can read the packed archive and |
| expand the objects contained in the pack into "one-file |
| one-object" format; this is typically done by the smart-pull |
| commands when a pack is created on-the-fly for efficient network |
| transport by their peers. |
| |
| Placing both in the pack/ subdirectory of $GIT_OBJECT_DIRECTORY (or |
| any of the directories on $GIT_ALTERNATE_OBJECT_DIRECTORIES) |
| enables git to read from such an archive. |
| |
| In a packed archive, an object is either stored as a compressed |
| whole, or as a difference from some other object. The latter is |
| often called a delta. |
| |
| |
| OPTIONS |
| ------- |
| base-name:: |
| Write into a pair of files (.pack and .idx), using |
| <base-name> to determine the name of the created file. |
| When this option is used, the two files are written in |
| <base-name>-<SHA1>.{pack,idx} files. <SHA1> is a hash |
| of the sorted object names to make the resulting filename |
| based on the pack content, and written to the standard |
| output of the command. |
| |
| --stdout:: |
| Write the pack contents (what would have been written to |
| .pack file) out to the standard output. |
| |
| --revs:: |
| Read the revision arguments from the standard input, instead of |
| individual object names. The revision arguments are processed |
| the same way as gitlink:git-rev-list[1] with `--objects` flag |
| uses its `commit` arguments to build the list of objects it |
| outputs. The objects on the resulting list are packed. |
| |
| --unpacked:: |
| This implies `--revs`. When processing the list of |
| revision arguments read from the standard input, limit |
| the objects packed to those that are not already packed. |
| |
| --all:: |
| This implies `--revs`. In addition to the list of |
| revision arguments read from the standard input, pretend |
| as if all refs under `$GIT_DIR/refs` are specified to be |
| included. |
| |
| --window=[N], --depth=[N]:: |
| These two options affect 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. |
| The default value for both --window and --depth is 10. |
| |
| --incremental:: |
| This flag causes an object already in a pack ignored |
| even if it appears in the standard input. |
| |
| --local:: |
| This flag is similar to `--incremental`; instead of |
| ignoring all packed objects, it only ignores objects |
| that are packed and not in the local object store |
| (i.e. borrowed from an alternate). |
| |
| --non-empty:: |
| Only create a packed archive if it would contain at |
| least one object. |
| |
| --progress:: |
| Progress status is reported on the standard error stream |
| by default when it is attached to a terminal, unless -q |
| is specified. This flag forces progress status even if |
| the standard error stream is not directed to a terminal. |
| |
| --all-progress:: |
| When --stdout is specified then progress report is |
| displayed during the object count and deltification phases |
| but inhibited during the write-out phase. The reason is |
| that in some cases the output stream is directly linked |
| to another command which may wish to display progress |
| status of its own as it processes incoming pack data. |
| This flag is like --progress except that it forces progress |
| report for the write-out phase as well even if --stdout is |
| used. |
| |
| -q:: |
| This flag makes the command not to report its progress |
| on the standard error stream. |
| |
| --no-reuse-delta:: |
| When creating a packed archive in a repository that |
| has existing packs, the command reuses existing deltas. |
| This sometimes results in a slightly suboptimal pack. |
| This flag tells the command not to reuse existing deltas |
| but compute them from scratch. |
| |
| --delta-base-offset:: |
| A packed archive can express base object of a delta as |
| either 20-byte object name or as an offset in the |
| stream, but older version of git does not understand the |
| latter. By default, git-pack-objects only uses the |
| former format for better compatibility. This option |
| allows the command to use the latter format for |
| compactness. Depending on the average delta chain |
| length, this option typically shrinks the resulting |
| packfile by 3-5 per-cent. |
| |
| |
| Author |
| ------ |
| Written by Linus Torvalds <torvalds@osdl.org> |
| |
| Documentation |
| ------------- |
| Documentation by Junio C Hamano |
| |
| See Also |
| -------- |
| gitlink:git-rev-list[1] |
| gitlink:git-repack[1] |
| gitlink:git-prune-packed[1] |
| |
| GIT |
| --- |
| Part of the gitlink:git[7] suite |
| |