shejialuo <shejialuo@xxxxxxxxx> writes: > 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@xxxxxx> > Mentored-by: Karthik Nayak <karthik.188@xxxxxxxxx> > Signed-off-by: shejialuo <shejialuo@xxxxxxxxx> > --- > builtin/fsck.c | 17 +++++++++++++++++ > 1 file changed, 17 insertions(+) > > diff --git a/builtin/fsck.c b/builtin/fsck.c > index d13a226c2e..10d73f534f 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; > +} > + At first I thought we need to call `child_process_clear()` here, but seems like `run_command` does that internally. > 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
Attachment:
signature.asc
Description: PGP signature