mirror of
https://github.com/git/git.git
synced 2025-12-12 20:36:24 +01:00
Merge branch 'ps/maintenance-geometric'
"git maintenance" command learns the "geometric" strategy where it avoids doing maintenance tasks that rebuilds everything from scratch. * ps/maintenance-geometric: t7900: fix a flaky test due to git-repack always regenerating MIDX builtin/maintenance: introduce "geometric" strategy builtin/maintenance: make "gc" strategy accessible builtin/maintenance: extend "maintenance.strategy" to manual maintenance builtin/maintenance: run maintenance tasks depending on type builtin/maintenance: improve readability of strategies builtin/maintenance: don't silently ignore invalid strategy builtin/maintenance: make the geometric factor configurable builtin/maintenance: introduce "geometric-repack" task builtin/gc: make `too_many_loose_objects()` reusable without GC config builtin/gc: remove global `repack` variable
This commit is contained in:
@@ -16,19 +16,36 @@ detach.
|
||||
|
||||
maintenance.strategy::
|
||||
This string config option provides a way to specify one of a few
|
||||
recommended schedules for background maintenance. This only affects
|
||||
which tasks are run during `git maintenance run --schedule=X`
|
||||
commands, provided no `--task=<task>` arguments are provided.
|
||||
Further, if a `maintenance.<task>.schedule` config value is set,
|
||||
then that value is used instead of the one provided by
|
||||
`maintenance.strategy`. The possible strategy strings are:
|
||||
recommended strategies for repository maintenance. This affects
|
||||
which tasks are run during `git maintenance run`, provided no
|
||||
`--task=<task>` arguments are provided. This setting impacts manual
|
||||
maintenance, auto-maintenance as well as scheduled maintenance. The
|
||||
tasks that run may be different depending on the maintenance type.
|
||||
+
|
||||
* `none`: This default setting implies no tasks are run at any schedule.
|
||||
The maintenance strategy can be further tweaked by setting
|
||||
`maintenance.<task>.enabled` and `maintenance.<task>.schedule`. If set, these
|
||||
values are used instead of the defaults provided by `maintenance.strategy`.
|
||||
+
|
||||
The possible strategies are:
|
||||
+
|
||||
* `none`: This strategy implies no tasks are run at all. This is the default
|
||||
strategy for scheduled maintenance.
|
||||
* `gc`: This strategy runs the `gc` task. This is the default strategy for
|
||||
manual maintenance.
|
||||
* `geometric`: This strategy performs geometric repacking of packfiles and
|
||||
keeps auxiliary data structures up-to-date. The strategy expires data in the
|
||||
reflog and removes worktrees that cannot be located anymore. When the
|
||||
geometric repacking strategy would decide to do an all-into-one repack, then
|
||||
the strategy generates a cruft pack for all unreachable objects. Objects that
|
||||
are already part of a cruft pack will be expired.
|
||||
+
|
||||
This repacking strategy is a full replacement for the `gc` strategy and is
|
||||
recommended for large repositories.
|
||||
* `incremental`: This setting optimizes for performing small maintenance
|
||||
activities that do not delete any data. This does not schedule the `gc`
|
||||
task, but runs the `prefetch` and `commit-graph` tasks hourly, the
|
||||
`loose-objects` and `incremental-repack` tasks daily, and the `pack-refs`
|
||||
task weekly.
|
||||
task weekly. Manual repository maintenance uses the `gc` task.
|
||||
|
||||
maintenance.<task>.enabled::
|
||||
This boolean config option controls whether the maintenance task
|
||||
@@ -75,6 +92,22 @@ maintenance.incremental-repack.auto::
|
||||
number of pack-files not in the multi-pack-index is at least the value
|
||||
of `maintenance.incremental-repack.auto`. The default value is 10.
|
||||
|
||||
maintenance.geometric-repack.auto::
|
||||
This integer config option controls how often the `geometric-repack`
|
||||
task should be run as part of `git maintenance run --auto`. If zero,
|
||||
then the `geometric-repack` task will not run with the `--auto`
|
||||
option. A negative value will force the task to run every time.
|
||||
Otherwise, a positive value implies the command should run either when
|
||||
there are packfiles that need to be merged together to retain the
|
||||
geometric progression, or when there are at least this many loose
|
||||
objects that would be written into a new packfile. The default value is
|
||||
100.
|
||||
|
||||
maintenance.geometric-repack.splitFactor::
|
||||
This integer config option controls the factor used for the geometric
|
||||
sequence. See the `--geometric=` option in linkgit:git-repack[1] for
|
||||
more details. Defaults to `2`.
|
||||
|
||||
maintenance.reflog-expire.auto::
|
||||
This integer config option controls how often the `reflog-expire` task
|
||||
should be run as part of `git maintenance run --auto`. If zero, then
|
||||
|
||||
Reference in New Issue
Block a user