]> git.ipfire.org Git - thirdparty/git.git/commitdiff
builtin/fsck: stop using `the_repository` when checking refs
authorPatrick Steinhardt <ps@pks.im>
Mon, 23 Mar 2026 15:02:58 +0000 (16:02 +0100)
committerJunio C Hamano <gitster@pobox.com>
Mon, 23 Mar 2026 15:33:10 +0000 (08:33 -0700)
We implicitly rely on `the_repository` when checking refs. Refactor this
to instead inject the repository via the callback payload.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/fsck.c

index edbff16add21a2205dcd6a91cde12119e9652a4e..efc60862ae654b10d31ce4a28d63deaecd11dbc0 100644 (file)
@@ -574,11 +574,12 @@ static int snapshot_ref(const struct reference *ref, void *cb_data)
        return 0;
 }
 
-static int fsck_handle_ref(const struct reference *ref, void *cb_data UNUSED)
+static int fsck_handle_ref(const struct reference *ref, void *cb_data)
 {
+       struct repository *repo = cb_data;
        struct object *obj;
 
-       obj = parse_object(the_repository, ref->oid);
+       obj = parse_object(repo, ref->oid);
        obj->flags |= USED;
        fsck_put_object_name(&fsck_walk_options,
                             ref->oid, "%s", ref->name);
@@ -665,7 +666,7 @@ static void free_snapshot_refs(struct snapshot *snap)
        free(snap->ref);
 }
 
-static void process_refs(struct snapshot *snap)
+static void process_refs(struct repository *repo, struct snapshot *snap)
 {
        struct worktree **worktrees, **p;
 
@@ -674,7 +675,7 @@ static void process_refs(struct snapshot *snap)
                        .name = snap->ref[i].refname,
                        .oid = &snap->ref[i].oid,
                };
-               fsck_handle_ref(&ref, NULL);
+               fsck_handle_ref(&ref, repo);
        }
 
        if (include_reflogs) {
@@ -1095,7 +1096,7 @@ int cmd_fsck(int argc,
        }
 
        /* Process the snapshotted refs and the reflogs. */
-       process_refs(&snap);
+       process_refs(repo, &snap);
 
        /* If not given any explicit objects, process index files too. */
        if (!argc)