diff options
| author | Patrick Steinhardt <ps@pks.im> | 2025-06-03 16:01:14 +0200 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2025-06-03 08:30:50 -0700 |
| commit | 2aa9ee7eecc696fe93a8f00b0eb2369de5279aaa (patch) | |
| tree | a6bed3d6e2058a962171a8dbc6833c2dc3def2ad /builtin/gc.c | |
| parent | 38a8fa5a9a3a74dd606ba37702689a8b07c084bf (diff) | |
| download | git-2aa9ee7eecc696fe93a8f00b0eb2369de5279aaa.tar.gz | |
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 <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/gc.c')
| -rw-r--r-- | builtin/gc.c | 35 |
1 files changed, 23 insertions, 12 deletions
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; |
