to auto-detect the number of CPU's
and set the number of threads accordingly.
--index-version=<version>[,<offset>]::
This is intended to be used by the test suite only. It allows
to force the version for the generated pack index, and to force
64-bit index entries on objects located above the given offset.
--keep-true-parents::
With this option, parents that are hidden by grafts are packed
nevertheless.
--filter=<filter-spec>::
Omits certain objects (usually blobs) from the resulting
packfile. See linkgit:git-rev-list[1] for valid
`<filter-spec>` forms.
--no-filter::
Turns off any previous `--filter=` argument.
--missing=<missing-action>::
A debug option to help with future "partial clone" development.
This option specifies how missing objects are handled.
+
The form '--missing=error' requests that pack-objects stop with an error if
a missing object is encountered. If the repository is a partial clone, an
attempt to fetch missing objects will be made before declaring them missing.
This is the default action.
+
The form '--missing=allow-any' will allow object traversal to continue
if a missing object is encountered. No fetch of a missing object will occur.
Missing objects will silently be omitted from the results.
+
The form '--missing=allow-promisor' is like 'allow-any', but will only
allow object traversal to continue for EXPECTED promisor missing objects.
No fetch of a missing object will occur. An unexpected missing object will
raise an error.
--exclude-promisor-objects::
Omit objects that are known to be in the promisor remote. (This
option has the purpose of operating only on locally created objects,
so that when we repack, we still maintain a distinction between
locally created objects [without .promisor] and objects from the
promisor remote [with .promisor].) This is used with partial clone.
--keep-unreachable::
Objects unreachable from the refs in packs named with
--unpacked= option are added to the resulting pack, in
addition to the reachable objects that are not in packs marked
with *.keep files. This implies `--revs`.
--pack-loose-unreachable::
Pack unreachable loose objects (and their loose counterparts
removed). This implies `--revs`.
--unpack-unreachable::
Keep unreachable objects in loose form. This implies `--revs`.
--delta-islands::
Restrict delta matches based on "islands". See DELTA ISLANDS
below.
--name-hash-version=<n>::
While performing delta compression, Git groups objects that may be
similar based on heuristics using the path to that object. While
grouping objects by an exact path match is good for paths with
many versions, there are benefits for finding delta pairs across
different full paths. Git collects objects by type and then by a
"name hash" of the path and then by size, hoping to group objects
that will compress well together.
+
The default name hash version is `1`, which prioritizes hash locality by
considering the final bytes of the path as providing the maximum magnitude
to the hash function. This version excels at distinguishing short paths
and finding renames across directories. However, the hash function depends
primarily on the final 16 bytes of the path. If there are many paths in
the repo that have the same final 16 bytes and differ only by parent
directory, then this name-hash may lead to too many collisions and cause
poor results. At the moment, this version is required when writing
reachability bitmap files with `--write-bitmap-index`.
+
The name hash version `2` has similar locality features as version `1`,
except it considers each path component separately and overlays the hashes
with a shift. This still prioritizes the final bytes of the path, but also
"salts" the lower bits of the hash using the parent directory names. This
method allows for some of the locality benefits of version `1` while
breaking most of the collisions from a similarly-named file appearing in
many different directories. At the moment, this version is not allowed