mirror of
https://github.com/git/git.git
synced 2024-11-23 18:05:29 +08:00
maintenance: optionally skip --auto process
Some commands run 'git maintenance run --auto --[no-]quiet' after doing their normal work, as a way to keep repositories clean as they are used. Currently, users who do not want this maintenance to occur would set the 'gc.auto' config option to 0 to avoid the 'gc' task from running. However, this does not stop the extra process invocation. On Windows, this extra process invocation can be more expensive than necessary. Allow users to drop this extra process by setting 'maintenance.auto' to 'false'. Signed-off-by: Derrick Stolee <dstolee@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
e841a79a13
commit
1942d48380
@ -1,3 +1,8 @@
|
|||||||
|
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::
|
maintenance.<task>.enabled::
|
||||||
This boolean config option controls whether the maintenance task
|
This boolean config option controls whether the maintenance task
|
||||||
with name `<task>` is run when no `--task` option is specified to
|
with name `<task>` is run when no `--task` option is specified to
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
#include "strbuf.h"
|
#include "strbuf.h"
|
||||||
#include "string-list.h"
|
#include "string-list.h"
|
||||||
#include "quote.h"
|
#include "quote.h"
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
void child_process_init(struct child_process *child)
|
void child_process_init(struct child_process *child)
|
||||||
{
|
{
|
||||||
@ -1868,8 +1869,13 @@ int run_processes_parallel_tr2(int n, get_next_task_fn get_next_task,
|
|||||||
|
|
||||||
int run_auto_maintenance(int quiet)
|
int run_auto_maintenance(int quiet)
|
||||||
{
|
{
|
||||||
|
int enabled;
|
||||||
struct child_process maint = CHILD_PROCESS_INIT;
|
struct child_process maint = CHILD_PROCESS_INIT;
|
||||||
|
|
||||||
|
if (!git_config_get_bool("maintenance.auto", &enabled) &&
|
||||||
|
!enabled)
|
||||||
|
return 0;
|
||||||
|
|
||||||
maint.git_cmd = 1;
|
maint.git_cmd = 1;
|
||||||
strvec_pushl(&maint.args, "maintenance", "run", "--auto", NULL);
|
strvec_pushl(&maint.args, "maintenance", "run", "--auto", NULL);
|
||||||
strvec_push(&maint.args, quiet ? "--quiet" : "--no-quiet");
|
strvec_push(&maint.args, quiet ? "--quiet" : "--no-quiet");
|
||||||
|
@ -28,6 +28,19 @@ test_expect_success 'run [--auto|--quiet]' '
|
|||||||
test_subcommand git gc --no-quiet <run-no-quiet.txt
|
test_subcommand git gc --no-quiet <run-no-quiet.txt
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'maintenance.auto config option' '
|
||||||
|
GIT_TRACE2_EVENT="$(pwd)/default" git commit --quiet --allow-empty -m 1 &&
|
||||||
|
test_subcommand git maintenance run --auto --quiet <default &&
|
||||||
|
GIT_TRACE2_EVENT="$(pwd)/true" \
|
||||||
|
git -c maintenance.auto=true \
|
||||||
|
commit --quiet --allow-empty -m 2 &&
|
||||||
|
test_subcommand git maintenance run --auto --quiet <true &&
|
||||||
|
GIT_TRACE2_EVENT="$(pwd)/false" \
|
||||||
|
git -c maintenance.auto=false \
|
||||||
|
commit --quiet --allow-empty -m 3 &&
|
||||||
|
test_subcommand ! git maintenance run --auto --quiet <false
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success 'maintenance.<task>.enabled' '
|
test_expect_success 'maintenance.<task>.enabled' '
|
||||||
git config maintenance.gc.enabled false &&
|
git config maintenance.gc.enabled false &&
|
||||||
git config maintenance.commit-graph.enabled true &&
|
git config maintenance.commit-graph.enabled true &&
|
||||||
|
Loading…
Reference in New Issue
Block a user