From: Derrick Stolee <stolee@xxxxxxxxx> When users want to enable the latest and greatest configuration options recommended by Scalar after a Git upgrade, 'scalar reconfigure --all' is a great option that iterates over all repos in the multi-valued 'scalar.repos' config key. However, this feature previously forced users to enable background maintenance. In some environments this is not preferred. Add a new --[no-]maintenance option to 'scalar reconfigure' that avoids running 'git maintenance start' on these enlistments. Signed-off-by: Derrick Stolee <stolee@xxxxxxxxx> --- Documentation/scalar.adoc | 14 +++++++++++--- scalar.c | 9 ++++++--- t/t9210-scalar.sh | 7 ++++++- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/Documentation/scalar.adoc b/Documentation/scalar.adoc index 7753df3b4352..2868b01988e4 100644 --- a/Documentation/scalar.adoc +++ b/Documentation/scalar.adoc @@ -14,7 +14,7 @@ scalar list scalar register [--[no-]maintenance] [<enlistment>] scalar unregister [<enlistment>] scalar run ( all | config | commit-graph | fetch | loose-objects | pack-files ) [<enlistment>] -scalar reconfigure [ --all | <enlistment> ] +scalar reconfigure [--[no-]maintenance] [ --all | <enlistment> ] scalar diagnose [<enlistment>] scalar delete <enlistment> @@ -160,8 +160,16 @@ After a Scalar upgrade, or when the configuration of a Scalar enlistment was somehow corrupted or changed by mistake, this subcommand allows to reconfigure the enlistment. -With the `--all` option, all enlistments currently registered with Scalar -will be reconfigured. Use this option after each Scalar upgrade. +--all:: + When `--all` is specified, reconfigure all enlistments currently + registered with Scalar by the `scalar.repo` config key. Use this + option after each upgrade to get the latest features. + +--[no-]maintenance:: + By default, Scalar configures the enlistment to use Git's + background maintenance feature. Use the `--no-maintenance` to skip + this configuration and leave the repositories in whatever state is + currently configured. Diagnose ~~~~~~~~ diff --git a/scalar.c b/scalar.c index dd6e1447e086..0b8a63f6e5a6 100644 --- a/scalar.c +++ b/scalar.c @@ -667,14 +667,16 @@ static int remove_deleted_enlistment(struct strbuf *path) static int cmd_reconfigure(int argc, const char **argv) { - int all = 0; + int all = 0, maintenance = 1; struct option options[] = { OPT_BOOL('a', "all", &all, N_("reconfigure all registered enlistments")), + OPT_BOOL(0, "maintenance", &maintenance, + N_("specify if background maintenance should be enabled")), OPT_END(), }; const char * const usage[] = { - N_("scalar reconfigure [--all | <enlistment>]"), + N_("scalar reconfigure [--[no-]maintenance] [--all | <enlistment>]"), NULL }; struct string_list scalar_repos = STRING_LIST_INIT_DUP; @@ -758,7 +760,8 @@ static int cmd_reconfigure(int argc, const char **argv) the_repository = old_repo; repo_clear(&r); - if (toggle_maintenance(1) >= 0) + if (maintenance && + toggle_maintenance(1) >= 0) succeeded = 1; loop_end: diff --git a/t/t9210-scalar.sh b/t/t9210-scalar.sh index 89a6a2a24d8b..34765a49fd07 100755 --- a/t/t9210-scalar.sh +++ b/t/t9210-scalar.sh @@ -210,7 +210,12 @@ test_expect_success 'scalar reconfigure' ' GIT_TRACE2_EVENT="$(pwd)/reconfigure" scalar reconfigure -a && test_path_is_file one/src/cron.txt && test true = "$(git -C one/src config core.preloadIndex)" && - test_subcommand git maintenance start <reconfigure + test_subcommand git maintenance start <reconfigure && + test_subcommand ! git maintenance unregister --force <reconfigure && + + GIT_TRACE2_EVENT="$(pwd)/reconfigure-maint" scalar reconfigure --no-maintenance -a && + test_subcommand ! git maintenance start <reconfigure-maint && + test_subcommand ! git maintenance unregister --force <reconfigure-maint ' test_expect_success 'scalar reconfigure --all with includeIf.onbranch' ' -- gitgitgadget