builtin/maintenance: mark "--task=" and "--schedule=" as incompatible

The "--task=" option explicitly allows the user to say which maintenance
tasks should be run, whereas "--schedule=" only respects the maintenance
strategy configured for a specific repository. As such, it is not
sensible to accept both options at the same time.

Mark them as incompatible with one another. While at it, also convert
the existing logic that marks "--auto" and "--schedule=" as incompatible
to use `die_for_incompatible_opt2()`.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Patrick Steinhardt
2025-06-03 16:01:12 +02:00
committed by Junio C Hamano
parent 1bb6bdb646
commit a7c86d328f
2 changed files with 10 additions and 3 deletions

View File

@@ -1785,8 +1785,10 @@ static int maintenance_run(int argc, const char **argv, const char *prefix,
builtin_maintenance_run_usage,
PARSE_OPT_STOP_AT_NON_OPTION);
if (opts.auto_flag && opts.schedule)
die(_("use at most one of --auto and --schedule=<frequency>"));
die_for_incompatible_opt2(opts.auto_flag, "--auto",
opts.schedule, "--schedule=");
die_for_incompatible_opt2(selected_tasks.nr, "--task=",
opts.schedule, "--schedule=");
gc_config(&cfg);
initialize_task_config(&selected_tasks, opts.schedule);

View File

@@ -610,7 +610,12 @@ test_expect_success 'rerere-gc task with --auto honors maintenance.rerere-gc.aut
test_expect_success '--auto and --schedule incompatible' '
test_must_fail git maintenance run --auto --schedule=daily 2>err &&
test_grep "at most one" err
test_grep "cannot be used together" err
'
test_expect_success '--task and --schedule incompatible' '
test_must_fail git maintenance run --task=pack-refs --schedule=daily 2>err &&
test_grep "cannot be used together" err
'
test_expect_success 'invalid --schedule value' '