maintenance.auto::
	This boolean config option controls whether some commands run
	`git maintenance run --auto` after doing their normal work. Defaults
	to true.

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.
