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>
Patrick Steinhardt committed
Jun 3, 2025 at 16:01 UTC
2aa9ee7eecc696fe93a8f00b0eb2369de5279aaa
1 file changed
+23
-12
builtin/gc.c
+23
-12
@@ -1596,6 +1596,27 @@ static const struct maintenance_task tasks[] = {
1596
},
1597
};
1598
1599
+static int maybe_run_task(const struct maintenance_task *task,
1600
+ struct repository *repo,
1601
+ struct maintenance_run_opts *opts,
1602
+ struct gc_config *cfg)
1603
+{
1604
+ int ret = 0;
1605
+
1606
+ if (opts->auto_flag &&
1607
+ (!task->auto_condition || !task->auto_condition(cfg)))
1608
+ return 0;
1609
+
1610
+ trace2_region_enter("maintenance", task->name, repo);
1611
+ if (task->fn(opts, cfg)) {
1612
+ error(_("task '%s' failed"), task->name);
1613
+ ret = 1;
1614
+ }
1615
+ trace2_region_leave("maintenance", task->name, repo);
1616
+
1617
+ return ret;
1618
+}
1619
+
1620
static int maintenance_run_tasks(struct maintenance_run_opts *opts,
1621
struct gc_config *cfg)
1622
{
@@ -1627,19 +1648,9 @@ static int maintenance_run_tasks(struct maintenance_run_opts *opts,
1648
trace2_region_leave("maintenance", "detach", the_repository);
1649
}
1650
1630
- for (size_t i = 0; i < opts->tasks_nr; i++) {
1631
- if (opts->auto_flag &&
1632
- (!tasks[opts->tasks[i]].auto_condition ||
1633
- !tasks[opts->tasks[i]].auto_condition(cfg)))
1634
- continue;
1635
-
1636
- trace2_region_enter("maintenance", tasks[opts->tasks[i]].name, r);
1637
- if (tasks[opts->tasks[i]].fn(opts, cfg)) {
1638
- error(_("task '%s' failed"), tasks[opts->tasks[i]].name);
1651
+ for (size_t i = 0; i < opts->tasks_nr; i++)
1652
+ if (maybe_run_task(&tasks[opts->tasks[i]], r, opts, cfg))
1653
result = 1;
1640
- }
1641
- trace2_region_leave("maintenance", tasks[opts->tasks[i]].name, r);
1642
- }
1654
1655
rollback_lock_file(&lk);
1656
return result;