a4cb1a2339
To provide an on-ramp for users to use background maintenance without several 'git config' commands, create a 'maintenance.strategy' config option. Currently, the only important value is 'incremental' which assigns the following schedule: * gc: never * prefetch: hourly * commit-graph: hourly * loose-objects: daily * incremental-repack: daily These tasks are chosen to minimize disruptions to foreground Git commands and use few compute resources. The 'maintenance.strategy' is intended as a baseline that can be customzied further by manually assigning 'maintenance.<task>.enabled' and 'maintenance.<task>.schedule' config options, which will override any recommendation from 'maintenance.strategy'. This operates similarly to config options like 'feature.experimental' which operate as "meta" config options that change default config values. This presents a way forward for updating the 'incremental' strategy in the future or adding new strategies. For example, a potential strategy could be to include a 'full' strategy that runs the 'gc' task weekly and no other tasks by default. Helped-by: Martin Ågren <martin.agren@gmail.com> Signed-off-by: Derrick Stolee <dstolee@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
60 lines
2.9 KiB
Plaintext
60 lines
2.9 KiB
Plaintext
maintenance.auto::
|
|
This boolean config option controls whether some commands run
|
|
`git maintenance run --auto` after doing their normal work. Defaults
|
|
to true.
|
|
|
|
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:
|
|
+
|
|
* `none`: This default setting implies no task are run at any schedule.
|
|
* `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 and the
|
|
`loose-objects` and `incremental-repack` tasks daily.
|
|
|
|
maintenance.<task>.enabled::
|
|
This boolean config option controls whether the maintenance task
|
|
with name `<task>` is run when no `--task` option is specified to
|
|
`git maintenance run`. These config values are ignored if a
|
|
`--task` option exists. By default, only `maintenance.gc.enabled`
|
|
is true.
|
|
|
|
maintenance.<task>.schedule::
|
|
This config option controls whether or not the given `<task>` runs
|
|
during a `git maintenance run --schedule=<frequency>` command. The
|
|
value must be one of "hourly", "daily", or "weekly".
|
|
|
|
maintenance.commit-graph.auto::
|
|
This integer config option controls how often the `commit-graph` task
|
|
should be run as part of `git maintenance run --auto`. If zero, then
|
|
the `commit-graph` 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 when the number of
|
|
reachable commits that are not in the commit-graph file is at least
|
|
the value of `maintenance.commit-graph.auto`. The default value is
|
|
100.
|
|
|
|
maintenance.loose-objects.auto::
|
|
This integer config option controls how often the `loose-objects` task
|
|
should be run as part of `git maintenance run --auto`. If zero, then
|
|
the `loose-objects` 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 when the number of
|
|
loose objects is at least the value of `maintenance.loose-objects.auto`.
|
|
The default value is 100.
|
|
|
|
maintenance.incremental-repack.auto::
|
|
This integer config option controls how often the `incremental-repack`
|
|
task should be run as part of `git maintenance run --auto`. If zero,
|
|
then the `incremental-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 when the
|
|
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.
|