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@xxxxxx> --- 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 c4af9b11287..57d7602596a 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=<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); diff --git a/t/t7900-maintenance.sh b/t/t7900-maintenance.sh index 8cf89e285f4..1ada5246606 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' ' -- 2.50.0.rc0.604.gd4ff7b7c86.dirty