scalar register: add --no-maintenance option
When registering a repository with Scalar to get the latest opinionated configuration, the 'scalar register' command will also set up background maintenance. This is a recommended feature for most user scenarios. However, this is not always recommended in some scenarios where background modifications may interfere with foreground activities. Specifically, setting up a clone for use in automation may require doing certain maintenance steps in the foreground that could become blocked by concurrent background maintenance operations. Allow the user to specify --no-maintenance to 'scalar register'. This requires updating the method prototype for register_dir(), so use the default of enabling this value when otherwise specified. 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
c428216d4d
commit
9816e24a78
@@ -11,7 +11,7 @@ SYNOPSIS
|
|||||||
scalar clone [--single-branch] [--branch <main-branch>] [--full-clone]
|
scalar clone [--single-branch] [--branch <main-branch>] [--full-clone]
|
||||||
[--[no-]src] <url> [<enlistment>]
|
[--[no-]src] <url> [<enlistment>]
|
||||||
scalar list
|
scalar list
|
||||||
scalar register [<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 [ --all | <enlistment> ]
|
||||||
@@ -117,6 +117,12 @@ Note: when this subcommand is called in a worktree that is called `src/`, its
|
|||||||
parent directory is considered to be the Scalar enlistment. If the worktree is
|
parent directory is considered to be the Scalar enlistment. If the worktree is
|
||||||
_not_ called `src/`, it itself will be considered to be the Scalar enlistment.
|
_not_ called `src/`, it itself will be considered to be the Scalar enlistment.
|
||||||
|
|
||||||
|
--[no-]maintenance::
|
||||||
|
By default, `scalar register` configures the enlistment to use Git's
|
||||||
|
background maintenance feature. Use the `--no-maintenance` to skip
|
||||||
|
this configuration. This does not disable any maintenance that may
|
||||||
|
already be enabled in other ways.
|
||||||
|
|
||||||
Unregister
|
Unregister
|
||||||
~~~~~~~~~~
|
~~~~~~~~~~
|
||||||
|
|
||||||
|
|||||||
8
scalar.c
8
scalar.c
@@ -612,11 +612,14 @@ static int cmd_list(int argc, const char **argv UNUSED)
|
|||||||
|
|
||||||
static int cmd_register(int argc, const char **argv)
|
static int cmd_register(int argc, const char **argv)
|
||||||
{
|
{
|
||||||
|
int maintenance = 1;
|
||||||
struct option options[] = {
|
struct option options[] = {
|
||||||
|
OPT_BOOL(0, "maintenance", &maintenance,
|
||||||
|
N_("specify if background maintenance should be enabled")),
|
||||||
OPT_END(),
|
OPT_END(),
|
||||||
};
|
};
|
||||||
const char * const usage[] = {
|
const char * const usage[] = {
|
||||||
N_("scalar register [<enlistment>]"),
|
N_("scalar register [--[no-]maintenance] [<enlistment>]"),
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -625,7 +628,8 @@ static int cmd_register(int argc, const char **argv)
|
|||||||
|
|
||||||
setup_enlistment_directory(argc, argv, usage, options, NULL);
|
setup_enlistment_directory(argc, argv, usage, options, NULL);
|
||||||
|
|
||||||
return register_dir(1);
|
/* If --no-maintenance, then leave maintenance as-is. */
|
||||||
|
return register_dir(maintenance);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int get_scalar_repos(const char *key, const char *value,
|
static int get_scalar_repos(const char *key, const char *value,
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ test_expect_success 'scalar register warns when background maintenance fails' '
|
|||||||
git init register-repo &&
|
git init register-repo &&
|
||||||
GIT_TEST_MAINT_SCHEDULER="crontab:false,launchctl:false,schtasks:false" \
|
GIT_TEST_MAINT_SCHEDULER="crontab:false,launchctl:false,schtasks:false" \
|
||||||
scalar register register-repo 2>err &&
|
scalar register register-repo 2>err &&
|
||||||
grep "could not turn on maintenance" err
|
grep "could not toggle maintenance" err
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'scalar unregister' '
|
test_expect_success 'scalar unregister' '
|
||||||
@@ -129,6 +129,17 @@ test_expect_success 'scalar unregister' '
|
|||||||
scalar unregister vanish
|
scalar unregister vanish
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'scalar register --no-maintenance' '
|
||||||
|
git init register-no-maint &&
|
||||||
|
event_log="$(pwd)/no-maint.event" &&
|
||||||
|
GIT_TEST_MAINT_SCHEDULER="crontab:false,launchctl:false,schtasks:false" \
|
||||||
|
GIT_TRACE2_EVENT="$event_log" \
|
||||||
|
GIT_TRACE2_EVENT_DEPTH=100 \
|
||||||
|
scalar register --no-maintenance register-no-maint 2>err &&
|
||||||
|
test_must_be_empty err &&
|
||||||
|
test_subcommand ! git maintenance unregister --force <no-maint.event
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success 'set up repository to clone' '
|
test_expect_success 'set up repository to clone' '
|
||||||
test_commit first &&
|
test_commit first &&
|
||||||
test_commit second &&
|
test_commit second &&
|
||||||
|
|||||||
Reference in New Issue
Block a user