]> git.ipfire.org Git - thirdparty/git.git/commitdiff
builtin/maintenance: extract function to run tasks
authorPatrick Steinhardt <ps@pks.im>
Tue, 3 Jun 2025 14:01:14 +0000 (16:01 +0200)
committerJunio C Hamano <gitster@pobox.com>
Tue, 3 Jun 2025 15:30:50 +0000 (08:30 -0700)
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>
builtin/gc.c

index 4d636237cac0401aad1bbed3f899f26ae49ae466..cfbf9d8a2b9545518c78bb10ca93181cfe2ba293 100644 (file)
@@ -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;