]> git.ipfire.org Git - thirdparty/git.git/commitdiff
builtin/gc: move pruning of worktrees into a separate function
authorPatrick Steinhardt <ps@pks.im>
Wed, 7 May 2025 07:21:39 +0000 (09:21 +0200)
committerJunio C Hamano <gitster@pobox.com>
Wed, 7 May 2025 17:50:14 +0000 (10:50 -0700)
In a subsequent commit we will introduce a new "worktree-prune" task for
git-maintenance(1). To prepare for this, refactor the code that spawns
`git worktree prune` into a separate function.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/gc.c

index ba4b30c24bcb3ba869c0e773cf1619e6adb6d61e..d91b6b7b8cb8a76bae33d04fe2c9017276b19aa6 100644 (file)
@@ -333,6 +333,18 @@ static int maintenance_task_reflog_expire(struct maintenance_run_opts *opts UNUS
        return run_command(&cmd);
 }
 
+static int maintenance_task_worktree_prune(struct maintenance_run_opts *opts UNUSED,
+                                          struct gc_config *cfg)
+{
+       struct child_process prune_worktrees_cmd = CHILD_PROCESS_INIT;
+
+       prune_worktrees_cmd.git_cmd = 1;
+       strvec_pushl(&prune_worktrees_cmd.args, "worktree", "prune", "--expire", NULL);
+       strvec_push(&prune_worktrees_cmd.args, cfg->prune_worktrees_expire);
+
+       return run_command(&prune_worktrees_cmd);
+}
+
 static int too_many_loose_objects(struct gc_config *cfg)
 {
        /*
@@ -913,16 +925,9 @@ int cmd_gc(int argc,
                }
        }
 
-       if (cfg.prune_worktrees_expire) {
-               struct child_process prune_worktrees_cmd = CHILD_PROCESS_INIT;
-
-               prune_worktrees_cmd.git_cmd = 1;
-               strvec_pushl(&prune_worktrees_cmd.args, "worktree", "prune", "--expire", NULL);
-               strvec_push(&prune_worktrees_cmd.args, cfg.prune_worktrees_expire);
-
-               if (run_command(&prune_worktrees_cmd))
-                       die(FAILED_RUN, prune_worktrees_cmd.args.v[0]);
-       }
+       if (cfg.prune_worktrees_expire &&
+           maintenance_task_worktree_prune(&opts, &cfg))
+               die(FAILED_RUN, "worktree");
 
        rerere_cmd.git_cmd = 1;
        strvec_pushl(&rerere_cmd.args, "rerere", "gc", NULL);