[PATCH v2 10/17] refs/files: introduce function to perform normal ref checks
From: Patrick Steinhardt <hidden>
Date: 2026-01-12 09:03:23
Subsystem:
the rest · Maintainer:
Linus Torvalds
In a subsequent commit we'll introduce new generic checks for direct refs. These checks will be independent of the actual backend. Introduce a new function `refs_fsck_ref()` that will be used for this purpose. At the current point in time it's still empty, but it will get populated in a subsequent commit. Signed-off-by: Patrick Steinhardt <redacted> --- refs.c | 7 +++++++ refs.h | 8 ++++++++ refs/files-backend.c | 2 ++ 3 files changed, 17 insertions(+)
diff --git a/refs.c b/refs.c
index 739bf9fefc..4fc1317cb3 100644
--- a/refs.c
+++ b/refs.c@@ -320,6 +320,13 @@ int check_refname_format(const char *refname, int flags) return check_or_sanitize_refname(refname, flags, NULL); } +int refs_fsck_ref(struct ref_store *refs UNUSED, struct fsck_options *o UNUSED, + struct fsck_ref_report *report UNUSED, + const char *refname UNUSED, const struct object_id *oid UNUSED) +{ + return 0; +} + int refs_fsck_symref(struct ref_store *refs UNUSED, struct fsck_options *o, struct fsck_ref_report *report, const char *refname UNUSED, const char *target)
diff --git a/refs.h b/refs.h
index d91fcb2d2f..f0abfa1d93 100644
--- a/refs.h
+++ b/refs.h@@ -655,6 +655,14 @@ int check_refname_format(const char *refname, int flags); struct fsck_ref_report; +/* + * Perform generic checks for a specific direct ref. This function is + * expected to be called by the ref backends for every symbolic ref. + */ +int refs_fsck_ref(struct ref_store *refs, struct fsck_options *o, + struct fsck_ref_report *report, + const char *refname, const struct object_id *oid); + /* * Perform generic checks for a specific symref target. This function is * expected to be called by the ref backends for every symbolic ref.
diff --git a/refs/files-backend.c b/refs/files-backend.c
index 687c26ddcb..240d3c3b26 100644
--- a/refs/files-backend.c
+++ b/refs/files-backend.c@@ -3833,6 +3833,8 @@ static int files_fsck_refs_content(struct ref_store *ref_store, "has trailing garbage: '%s'", trailing); goto cleanup; } + + ret = refs_fsck_ref(ref_store, o, &report, target_name, &oid); } else { ret = files_fsck_symref_target(ref_store, o, &report, target_name, &referent, 0);
--
2.52.0.590.g1f87b77810.dirty