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>
Derrick Stolee committedMay 7, 2025 at 01:50 UTC9816e24a78e3973164f324d50caa948ecfa2ab81
3 files changed+25-4
Documentation/scalar.adoc
+7-1
index 7e4259c674..b2b244a864 100644--- a/Documentation/scalar.adoc+++ b/Documentation/scalar.adoc@@ -11,7 +11,7 @@ SYNOPSIS scalar clone [--single-branch] [--branch <main-branch>] [--full-clone] [--[no-]src] <url> [<enlistment>] scalar list-scalar register [<enlistment>]+scalar register [--[no-]maintenance] [<enlistment>] scalar unregister [<enlistment>] scalar run ( all | config | commit-graph | fetch | loose-objects | pack-files ) [<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 _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 ~~~~~~~~~~
scalar.c
+6-2
index b20b063471..da0c46bc96 100644--- a/scalar.c+++ b/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) {+ int maintenance = 1; struct option options[] = {+ OPT_BOOL(0, "maintenance", &maintenance,+ N_("specify if background maintenance should be enabled")), OPT_END(), }; const char * const usage[] = {- N_("scalar register [<enlistment>]"),+ N_("scalar register [--[no-]maintenance] [<enlistment>]"), NULL };@@ -625,7 +628,8 @@ static int cmd_register(int argc, const char **argv) 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,