[GSoC][PATCH v4 4/7] builtin/fsck: add `git-refs verify` child process
- From
shejialuo <shejialuo@gmail.com>
- Date
- Jun 19, 2024, 07:42 UTC
- Message-ID
- <ZnKL7Evg-lLIzW4e@ArchLinux>
- In-Reply-To
- <ZnKKy52QFO2UhqM6@ArchLinux>
Introduce a new function "fsck_refs" that initializes and runs a child process to execute the "git-refs verify" command.
Mentored-by: Patrick Steinhardt <ps@pks.im> Mentored-by: Karthik Nayak <karthik.188@gmail.com> Signed-off-by: shejialuo <shejialuo@gmail.com> --- builtin/fsck.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+)
diff --git a/builtin/fsck.c b/builtin/fsck.c index a5b82e228c..cd988ff167 100644 --- a/builtin/fsck.c +++ b/builtin/fsck.c @@ -896,6 +896,21 @@ static int check_pack_rev_indexes(struct repository *r, int show_progress) return res; } +static void fsck_refs(void) +{ + struct child_process refs_verify = CHILD_PROCESS_INIT; + child_process_init(&refs_verify); + refs_verify.git_cmd = 1; + strvec_pushl(&refs_verify.args, "refs", "verify", NULL); + if (verbose) + strvec_push(&refs_verify.args, "--verbose"); + if (check_strict) + strvec_push(&refs_verify.args, "--strict"); + + if (run_command(&refs_verify)) + errors_found |= ERROR_REFS; +} + static char const * const fsck_usage[] = { N_("git fsck [--tags] [--root] [--unreachable] [--cache] [--no-reflogs]\n" " [--[no-]full] [--strict] [--verbose] [--lost-found]\n" @@ -1065,6 +1080,8 @@ int cmd_fsck(int argc, const char **argv, const char *prefix) check_connectivity(); + fsck_refs(); + if (the_repository->settings.core_commit_graph) { struct child_process commit_graph_verify = CHILD_PROCESS_INIT;
-- 2.45.2