aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Steinhardt <ps@pks.im>2026-01-12 10:02:59 +0100
committerJunio C Hamano <gitster@pobox.com>2026-01-12 06:55:41 -0800
commitae38c3a359f4834d27f511f1fa9b982f5ad55c6a (patch)
tree81aa236a3eeed7938adecddfc3fbf32b4758b2ab
parentdcecffb616762893c44f98d556493144edbcd498 (diff)
downloadgit-ae38c3a359f4834d27f511f1fa9b982f5ad55c6a.tar.xz
refs/files: introduce function to perform normal ref checks
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 <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--refs.c7
-rw-r--r--refs.h8
-rw-r--r--refs/files-backend.c2
3 files changed, 17 insertions, 0 deletions
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
@@ -656,6 +656,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);