Merge branch 'ms/refs-optimize'
"git refs optimize" is added for not very well explained reason despite it does the same thing as "git pack-refs"... * ms/refs-optimize: t: add test for git refs optimize subcommand t0601: refactor tests to be shareable builtin/refs: add optimize subcommand doc: pack-refs: factor out common options builtin/pack-refs: factor out core logic into a shared library builtin/pack-refs: convert to use the generic refs_optimize() API reftable-backend: implement 'optimize' action files-backend: implement 'optimize' action refs: add a generic 'optimize' API
This commit is contained in:
@@ -45,58 +45,7 @@ unpacked.
|
||||
OPTIONS
|
||||
-------
|
||||
|
||||
--all::
|
||||
|
||||
The command by default packs all tags and refs that are already
|
||||
packed, and leaves other refs
|
||||
alone. This is because branches are expected to be actively
|
||||
developed and packing their tips does not help performance.
|
||||
This option causes all refs to be packed as well, with the exception
|
||||
of hidden refs, broken refs, and symbolic refs. Useful for a repository
|
||||
with many branches of historical interests.
|
||||
|
||||
--no-prune::
|
||||
|
||||
The command usually removes loose refs under `$GIT_DIR/refs`
|
||||
hierarchy after packing them. This option tells it not to.
|
||||
|
||||
--auto::
|
||||
|
||||
Pack refs as needed depending on the current state of the ref database. The
|
||||
behavior depends on the ref format used by the repository and may change in the
|
||||
future.
|
||||
+
|
||||
- "files": Loose references are packed into the `packed-refs` file
|
||||
based on the ratio of loose references to the size of the
|
||||
`packed-refs` file. The bigger the `packed-refs` file, the more loose
|
||||
references need to exist before we repack.
|
||||
+
|
||||
- "reftable": Tables are compacted such that they form a geometric
|
||||
sequence. For two tables N and N+1, where N+1 is newer, this
|
||||
maintains the property that N is at least twice as big as N+1. Only
|
||||
tables that violate this property are compacted.
|
||||
|
||||
--include <pattern>::
|
||||
|
||||
Pack refs based on a `glob(7)` pattern. Repetitions of this option
|
||||
accumulate inclusion patterns. If a ref is both included in `--include` and
|
||||
`--exclude`, `--exclude` takes precedence. Using `--include` will preclude all
|
||||
tags from being included by default. Symbolic refs and broken refs will never
|
||||
be packed. When used with `--all`, it will be a noop. Use `--no-include` to clear
|
||||
and reset the list of patterns.
|
||||
|
||||
--exclude <pattern>::
|
||||
|
||||
Do not pack refs matching the given `glob(7)` pattern. Repetitions of this option
|
||||
accumulate exclusion patterns. Use `--no-exclude` to clear and reset the list of
|
||||
patterns. If a ref is already packed, including it with `--exclude` will not
|
||||
unpack it.
|
||||
+
|
||||
When used with `--all`, pack only loose refs which do not match any of
|
||||
the provided `--exclude` patterns.
|
||||
+
|
||||
When used with `--include`, refs provided to `--include`, minus refs that are
|
||||
provided to `--exclude` will be packed.
|
||||
include::pack-refs-options.adoc[]
|
||||
|
||||
|
||||
BUGS
|
||||
|
||||
@@ -19,6 +19,7 @@ git refs list [--count=<count>] [--shell|--perl|--python|--tcl]
|
||||
[(--exclude=<pattern>)...] [--start-after=<marker>]
|
||||
[ --stdin | (<pattern>...)]
|
||||
git refs exists <ref>
|
||||
git refs optimize [--all] [--no-prune] [--auto] [--include <pattern>] [--exclude <pattern>]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
@@ -45,6 +46,11 @@ exists::
|
||||
failed with an error other than the reference being missing. This does
|
||||
not verify whether the reference resolves to an actual object.
|
||||
|
||||
optimize::
|
||||
Optimizes references to improve repository performance and reduce disk
|
||||
usage. This subcommand is an alias for linkgit:git-pack-refs[1] and
|
||||
offers identical functionality.
|
||||
|
||||
OPTIONS
|
||||
-------
|
||||
|
||||
@@ -80,6 +86,10 @@ The following options are specific to 'git refs list':
|
||||
|
||||
include::for-each-ref-options.adoc[]
|
||||
|
||||
The following options are specific to 'git refs optimize':
|
||||
|
||||
include::pack-refs-options.adoc[]
|
||||
|
||||
KNOWN LIMITATIONS
|
||||
-----------------
|
||||
|
||||
|
||||
52
Documentation/pack-refs-options.adoc
Normal file
52
Documentation/pack-refs-options.adoc
Normal file
@@ -0,0 +1,52 @@
|
||||
--all::
|
||||
|
||||
The command by default packs all tags and refs that are already
|
||||
packed, and leaves other refs
|
||||
alone. This is because branches are expected to be actively
|
||||
developed and packing their tips does not help performance.
|
||||
This option causes all refs to be packed as well, with the exception
|
||||
of hidden refs, broken refs, and symbolic refs. Useful for a repository
|
||||
with many branches of historical interests.
|
||||
|
||||
--no-prune::
|
||||
|
||||
The command usually removes loose refs under `$GIT_DIR/refs`
|
||||
hierarchy after packing them. This option tells it not to.
|
||||
|
||||
--auto::
|
||||
|
||||
Pack refs as needed depending on the current state of the ref database. The
|
||||
behavior depends on the ref format used by the repository and may change in the
|
||||
future.
|
||||
+
|
||||
- "files": Loose references are packed into the `packed-refs` file
|
||||
based on the ratio of loose references to the size of the
|
||||
`packed-refs` file. The bigger the `packed-refs` file, the more loose
|
||||
references need to exist before we repack.
|
||||
+
|
||||
- "reftable": Tables are compacted such that they form a geometric
|
||||
sequence. For two tables N and N+1, where N+1 is newer, this
|
||||
maintains the property that N is at least twice as big as N+1. Only
|
||||
tables that violate this property are compacted.
|
||||
|
||||
--include <pattern>::
|
||||
|
||||
Pack refs based on a `glob(7)` pattern. Repetitions of this option
|
||||
accumulate inclusion patterns. If a ref is both included in `--include` and
|
||||
`--exclude`, `--exclude` takes precedence. Using `--include` will preclude all
|
||||
tags from being included by default. Symbolic refs and broken refs will never
|
||||
be packed. When used with `--all`, it will be a noop. Use `--no-include` to clear
|
||||
and reset the list of patterns.
|
||||
|
||||
--exclude <pattern>::
|
||||
|
||||
Do not pack refs matching the given `glob(7)` pattern. Repetitions of this option
|
||||
accumulate exclusion patterns. Use `--no-exclude` to clear and reset the list of
|
||||
patterns. If a ref is already packed, including it with `--exclude` will not
|
||||
unpack it.
|
||||
+
|
||||
When used with `--all`, pack only loose refs which do not match any of
|
||||
the provided `--exclude` patterns.
|
||||
+
|
||||
When used with `--include`, refs provided to `--include`, minus refs that are
|
||||
provided to `--exclude` will be packed.
|
||||
Reference in New Issue
Block a user