From a7c86d328ffe2d93cb1bfaf557dba7a2034ec17b Mon Sep 17 00:00:00 2001 From: Patrick Steinhardt Date: Tue, 3 Jun 2025 16:01:12 +0200 Subject: [PATCH] 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 Signed-off-by: Junio C Hamano --- builtin/gc.c | 6 ++++-- t/t7900-maintenance.sh | 7 ++++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/builtin/gc.c b/builtin/gc.c index c4af9b1128..57d7602596 100644 --- a/builtin/gc.c +++ b/builtin/gc.c @@ -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=")); + 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); diff --git a/t/t7900-maintenance.sh b/t/t7900-maintenance.sh index 8cf89e285f..1ada524660 100755 --- a/t/t7900-maintenance.sh +++ b/t/t7900-maintenance.sh @@ -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' '