]> git.ipfire.org Git - thirdparty/git.git/commitdiff
odb: get rid of `the_repository` in `find_odb()`
authorPatrick Steinhardt <ps@pks.im>
Thu, 5 Jun 2025 06:46:55 +0000 (08:46 +0200)
committerJunio C Hamano <gitster@pobox.com>
Thu, 5 Jun 2025 15:51:58 +0000 (08:51 -0700)
Get rid of our dependency on `the_repository` in `find_odb()` by passing
in the object database in which we want to search for the source and
adjusting all callers.

Rename the function to `odb_find_source()`.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/commit-graph.c
midx-write.c
odb.c
odb.h

index f04eaba525934332164d34a04392600bb756be89..77d7e88a98c43e757d9becf94effdff2dcb7ccbf 100644 (file)
@@ -101,7 +101,7 @@ static int graph_verify(int argc, const char **argv, const char *prefix,
        if (opts.progress)
                flags |= COMMIT_GRAPH_WRITE_PROGRESS;
 
-       source = find_odb(the_repository, opts.obj_dir);
+       source = odb_find_source(the_repository->objects, opts.obj_dir);
        graph_name = get_commit_graph_filename(source);
        chain_name = get_commit_graph_chain_filename(source);
        if (open_commit_graph(graph_name, &fd, &st))
@@ -289,7 +289,7 @@ static int graph_write(int argc, const char **argv, const char *prefix,
            git_env_bool(GIT_TEST_COMMIT_GRAPH_CHANGED_PATHS, 0))
                flags |= COMMIT_GRAPH_WRITE_BLOOM_FILTERS;
 
-       source = find_odb(the_repository, opts.obj_dir);
+       source = odb_find_source(the_repository->objects, opts.obj_dir);
 
        if (opts.reachable) {
                if (write_commit_graph_reachable(source, flags, &write_opts))
index ba4a94950a8314ce303125f983176208d1a019a1..f2cfb85476ed78b340693c86ab4099ab3fa8186c 100644 (file)
@@ -922,7 +922,7 @@ static struct multi_pack_index *lookup_multi_pack_index(struct repository *r,
        struct strbuf cur_path_real = STRBUF_INIT;
 
        /* Ensure the given object_dir is local, or a known alternate. */
-       find_odb(r, obj_dir_real);
+       odb_find_source(r->objects, obj_dir_real);
 
        for (cur = get_multi_pack_index(r); cur; cur = cur->next) {
                strbuf_realpath(&cur_path_real, cur->object_dir, 1);
diff --git a/odb.c b/odb.c
index afb16f4c693e85cc55d5fe2ee1169a9f6e744be8..483b9b38414d744fe92653445517ce97170f6cf5 100644 (file)
--- a/odb.c
+++ b/odb.c
@@ -448,14 +448,14 @@ out:
        return ref_git;
 }
 
-struct odb_source *find_odb(struct repository *r, const char *obj_dir)
+struct odb_source *odb_find_source(struct object_database *odb, const char *obj_dir)
 {
        struct odb_source *source;
        char *obj_dir_real = real_pathdup(obj_dir, 1);
        struct strbuf odb_path_real = STRBUF_INIT;
 
-       prepare_alt_odb(r);
-       for (source = r->objects->sources; source; source = source->next) {
+       prepare_alt_odb(odb->repo);
+       for (source = odb->sources; source; source = source->next) {
                strbuf_realpath(&odb_path_real, source->path, 1);
                if (!strcmp(obj_dir_real, odb_path_real.buf))
                        break;
diff --git a/odb.h b/odb.h
index c3851e296685cb28ffd86114ca6d07a40515ccb4..941329c6943153e3fd6b029ea9c3ff7ac913d39b 100644 (file)
--- a/odb.h
+++ b/odb.h
@@ -68,7 +68,6 @@ struct odb_source {
 void prepare_alt_odb(struct repository *r);
 int has_alt_odb(struct repository *r);
 char *compute_alternate_path(const char *path, struct strbuf *err);
-struct odb_source *find_odb(struct repository *r, const char *obj_dir);
 typedef int alt_odb_fn(struct odb_source *, void *);
 int foreach_alt_odb(alt_odb_fn, void*);
 typedef void alternate_ref_fn(const struct object_id *oid, void *);
@@ -195,6 +194,12 @@ struct object_database {
 struct object_database *odb_new(struct repository *repo);
 void odb_clear(struct object_database *o);
 
+/*
+ * Find source by its object directory path. Dies in case the source couldn't
+ * be found.
+ */
+struct odb_source *odb_find_source(struct object_database *odb, const char *obj_dir);
+
 /*
  * Create a temporary file rooted in the object database directory, or
  * die on failure. The filename is taken from "pattern", which should have the