scalar reconfigure: add --maintenance=<mode> option
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 --maintenance=<mode> option to 'scalar reconfigure' that provides options for enabling (default), disabling, or leaving background maintenance config as-is. Helped-by: Junio C Hamano <gitster@pobox.com> Signed-off-by: Derrick Stolee <stolee@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
882ce0c475
commit
a34fef86e0
@@ -14,7 +14,7 @@ scalar list
|
|||||||
scalar register [--[no-]maintenance] [<enlistment>]
|
scalar register [--[no-]maintenance] [<enlistment>]
|
||||||
scalar unregister [<enlistment>]
|
scalar unregister [<enlistment>]
|
||||||
scalar run ( all | config | commit-graph | fetch | loose-objects | pack-files ) [<enlistment>]
|
scalar run ( all | config | commit-graph | fetch | loose-objects | pack-files ) [<enlistment>]
|
||||||
scalar reconfigure [ --all | <enlistment> ]
|
scalar reconfigure [--maintenance=<mode>] [ --all | <enlistment> ]
|
||||||
scalar diagnose [<enlistment>]
|
scalar diagnose [<enlistment>]
|
||||||
scalar delete <enlistment>
|
scalar delete <enlistment>
|
||||||
|
|
||||||
@@ -160,8 +160,19 @@ After a Scalar upgrade, or when the configuration of a Scalar enlistment
|
|||||||
was somehow corrupted or changed by mistake, this subcommand allows to
|
was somehow corrupted or changed by mistake, this subcommand allows to
|
||||||
reconfigure the enlistment.
|
reconfigure the enlistment.
|
||||||
|
|
||||||
With the `--all` option, all enlistments currently registered with Scalar
|
--all::
|
||||||
will be reconfigured. Use this option after each Scalar upgrade.
|
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.
|
||||||
|
|
||||||
|
--maintenance=<mode>::
|
||||||
|
By default, Scalar configures the enlistment to use Git's
|
||||||
|
background maintenance feature; this is the same as using the
|
||||||
|
`--maintenance=enable` value for this option. Use the
|
||||||
|
`--maintenance=disable` to remove each considered enlistment
|
||||||
|
from background maintenance. Use `--maitnenance=keep' to leave
|
||||||
|
the background maintenance configuration untouched for These
|
||||||
|
repositories.
|
||||||
|
|
||||||
Diagnose
|
Diagnose
|
||||||
~~~~~~~~
|
~~~~~~~~
|
||||||
|
|||||||
23
scalar.c
23
scalar.c
@@ -668,13 +668,19 @@ static int remove_deleted_enlistment(struct strbuf *path)
|
|||||||
static int cmd_reconfigure(int argc, const char **argv)
|
static int cmd_reconfigure(int argc, const char **argv)
|
||||||
{
|
{
|
||||||
int all = 0;
|
int all = 0;
|
||||||
|
const char *maintenance_str = NULL;
|
||||||
|
int maintenance = 1; /* Enable maintenance by default. */
|
||||||
|
|
||||||
struct option options[] = {
|
struct option options[] = {
|
||||||
OPT_BOOL('a', "all", &all,
|
OPT_BOOL('a', "all", &all,
|
||||||
N_("reconfigure all registered enlistments")),
|
N_("reconfigure all registered enlistments")),
|
||||||
|
OPT_STRING(0, "maintenance", &maintenance_str,
|
||||||
|
N_("<mode>"),
|
||||||
|
N_("signal how to adjust background maintenance")),
|
||||||
OPT_END(),
|
OPT_END(),
|
||||||
};
|
};
|
||||||
const char * const usage[] = {
|
const char * const usage[] = {
|
||||||
N_("scalar reconfigure [--all | <enlistment>]"),
|
N_("scalar reconfigure [--maintenance=<mode>] [--all | <enlistment>]"),
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
struct string_list scalar_repos = STRING_LIST_INIT_DUP;
|
struct string_list scalar_repos = STRING_LIST_INIT_DUP;
|
||||||
@@ -694,6 +700,18 @@ static int cmd_reconfigure(int argc, const char **argv)
|
|||||||
usage_msg_opt(_("--all or <enlistment>, but not both"),
|
usage_msg_opt(_("--all or <enlistment>, but not both"),
|
||||||
usage, options);
|
usage, options);
|
||||||
|
|
||||||
|
if (maintenance_str) {
|
||||||
|
if (!strcmp(maintenance_str, "enable"))
|
||||||
|
maintenance = 1;
|
||||||
|
else if (!strcmp(maintenance_str, "disable"))
|
||||||
|
maintenance = 0;
|
||||||
|
else if (!strcmp(maintenance_str, "keep"))
|
||||||
|
maintenance = -1;
|
||||||
|
else
|
||||||
|
die(_("unknown mode for --maintenance option: %s"),
|
||||||
|
maintenance_str);
|
||||||
|
}
|
||||||
|
|
||||||
git_config(get_scalar_repos, &scalar_repos);
|
git_config(get_scalar_repos, &scalar_repos);
|
||||||
|
|
||||||
for (size_t i = 0; i < scalar_repos.nr; i++) {
|
for (size_t i = 0; i < scalar_repos.nr; i++) {
|
||||||
@@ -758,7 +776,8 @@ static int cmd_reconfigure(int argc, const char **argv)
|
|||||||
the_repository = old_repo;
|
the_repository = old_repo;
|
||||||
repo_clear(&r);
|
repo_clear(&r);
|
||||||
|
|
||||||
if (toggle_maintenance(1) >= 0)
|
if (maintenance >= 0 &&
|
||||||
|
toggle_maintenance(maintenance) >= 0)
|
||||||
succeeded = 1;
|
succeeded = 1;
|
||||||
|
|
||||||
loop_end:
|
loop_end:
|
||||||
|
|||||||
@@ -210,7 +210,18 @@ test_expect_success 'scalar reconfigure' '
|
|||||||
GIT_TRACE2_EVENT="$(pwd)/reconfigure" scalar reconfigure -a &&
|
GIT_TRACE2_EVENT="$(pwd)/reconfigure" scalar reconfigure -a &&
|
||||||
test_path_is_file one/src/cron.txt &&
|
test_path_is_file one/src/cron.txt &&
|
||||||
test true = "$(git -C one/src config core.preloadIndex)" &&
|
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-disable" \
|
||||||
|
scalar reconfigure -a --maintenance=disable &&
|
||||||
|
test_subcommand ! git maintenance start <reconfigure-maint-disable &&
|
||||||
|
test_subcommand git maintenance unregister --force <reconfigure-maint-disable &&
|
||||||
|
|
||||||
|
GIT_TRACE2_EVENT="$(pwd)/reconfigure-maint-keep" \
|
||||||
|
scalar reconfigure --maintenance=keep -a &&
|
||||||
|
test_subcommand ! git maintenance start <reconfigure-maint-keep &&
|
||||||
|
test_subcommand ! git maintenance unregister --force <reconfigure-maint-keep
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'scalar reconfigure --all with includeIf.onbranch' '
|
test_expect_success 'scalar reconfigure --all with includeIf.onbranch' '
|
||||||
|
|||||||
Reference in New Issue
Block a user