]> git.ipfire.org Git - thirdparty/git.git/commit - builtin/gc.c
maintenance: create maintenance.strategy config
authorDerrick Stolee <dstolee@microsoft.com>
Thu, 15 Oct 2020 17:22:02 +0000 (17:22 +0000)
committerJunio C Hamano <gitster@pobox.com>
Fri, 16 Oct 2020 15:36:42 +0000 (08:36 -0700)
commita4cb1a2339c1aa4ba71ebc6d2b07d537e1071124
treec92f1aff8d66b053d05cadb653a57857f3c3190b
parent2fec604f8df51fcf47551723e68a3447915b9eb9
maintenance: create maintenance.strategy config

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>
Documentation/config/maintenance.txt
builtin/gc.c
t/t7900-maintenance.sh