From: Patrick Steinhardt Date: Tue, 3 Jun 2025 14:01:14 +0000 (+0200) Subject: builtin/maintenance: extract function to run tasks X-Git-Tag: v2.51.0-rc0~108^2~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2aa9ee7eecc696fe93a8f00b0eb2369de5279aaa;p=thirdparty%2Fgit.git builtin/maintenance: extract function to run tasks Extract the function to run maintenance tasks. This function will be reused in a subsequent commit where we introduce a split between maintenance tasks that run before and after daemonizing the process. Signed-off-by: Patrick Steinhardt Signed-off-by: Junio C Hamano --- diff --git a/builtin/gc.c b/builtin/gc.c index 4d636237ca..cfbf9d8a2b 100644 --- a/builtin/gc.c +++ b/builtin/gc.c @@ -1596,6 +1596,27 @@ static const struct maintenance_task tasks[] = { }, }; +static int maybe_run_task(const struct maintenance_task *task, + struct repository *repo, + struct maintenance_run_opts *opts, + struct gc_config *cfg) +{ + int ret = 0; + + if (opts->auto_flag && + (!task->auto_condition || !task->auto_condition(cfg))) + return 0; + + trace2_region_enter("maintenance", task->name, repo); + if (task->fn(opts, cfg)) { + error(_("task '%s' failed"), task->name); + ret = 1; + } + trace2_region_leave("maintenance", task->name, repo); + + return ret; +} + static int maintenance_run_tasks(struct maintenance_run_opts *opts, struct gc_config *cfg) { @@ -1627,19 +1648,9 @@ static int maintenance_run_tasks(struct maintenance_run_opts *opts, trace2_region_leave("maintenance", "detach", the_repository); } - for (size_t i = 0; i < opts->tasks_nr; i++) { - if (opts->auto_flag && - (!tasks[opts->tasks[i]].auto_condition || - !tasks[opts->tasks[i]].auto_condition(cfg))) - continue; - - trace2_region_enter("maintenance", tasks[opts->tasks[i]].name, r); - if (tasks[opts->tasks[i]].fn(opts, cfg)) { - error(_("task '%s' failed"), tasks[opts->tasks[i]].name); + for (size_t i = 0; i < opts->tasks_nr; i++) + if (maybe_run_task(&tasks[opts->tasks[i]], r, opts, cfg)) result = 1; - } - trace2_region_leave("maintenance", tasks[opts->tasks[i]].name, r); - } rollback_lock_file(&lk); return result;