Message ID | 20240612085349.710785-5-shejialuo@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [GSoC,v2,1/7] fsck: add refs check interfaces to interface with fsck error levels | expand |
shejialuo <shejialuo@gmail.com> 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@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 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
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; +} + 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;
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(+)