]> git.ipfire.org Git - thirdparty/git.git/commitdiff
object-file: move loose object map into loose source
authorPatrick Steinhardt <ps@pks.im>
Mon, 3 Nov 2025 07:42:03 +0000 (08:42 +0100)
committerJunio C Hamano <gitster@pobox.com>
Mon, 3 Nov 2025 20:18:47 +0000 (12:18 -0800)
The loose object map is used to map from the repository's canonical
object hash to the compatibility hash. As the name indicates, this map
is only used for loose objects, and as such it is tied to a specific
loose object source.

Same as with preceding commits, move this map into the loose object
source accordingly.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
loose.c
object-file.c
object-file.h
odb.c
odb.h

diff --git a/loose.c b/loose.c
index 8cc7573ff2b2d9206daaf10f542ec566be412b91..56cf64b648bf80c3d7d8e0649f87687138018743 100644 (file)
--- a/loose.c
+++ b/loose.c
@@ -49,7 +49,7 @@ static int insert_loose_map(struct odb_source *source,
                            const struct object_id *oid,
                            const struct object_id *compat_oid)
 {
-       struct loose_object_map *map = source->loose_map;
+       struct loose_object_map *map = source->loose->map;
        int inserted = 0;
 
        inserted |= insert_oid_pair(map->to_compat, oid, compat_oid);
@@ -65,8 +65,8 @@ static int load_one_loose_object_map(struct repository *repo, struct odb_source
        struct strbuf buf = STRBUF_INIT, path = STRBUF_INIT;
        FILE *fp;
 
-       if (!source->loose_map)
-               loose_object_map_init(&source->loose_map);
+       if (!source->loose->map)
+               loose_object_map_init(&source->loose->map);
        if (!source->loose->cache) {
                ALLOC_ARRAY(source->loose->cache, 1);
                oidtree_init(source->loose->cache);
@@ -125,7 +125,7 @@ int repo_read_loose_object_map(struct repository *repo)
 
 int repo_write_loose_object_map(struct repository *repo)
 {
-       kh_oid_map_t *map = repo->objects->sources->loose_map->to_compat;
+       kh_oid_map_t *map = repo->objects->sources->loose->map->to_compat;
        struct lock_file lock;
        int fd;
        khiter_t iter;
@@ -231,7 +231,7 @@ int repo_loose_object_map_oid(struct repository *repo,
        khiter_t pos;
 
        for (source = repo->objects->sources; source; source = source->next) {
-               struct loose_object_map *loose_map = source->loose_map;
+               struct loose_object_map *loose_map = source->loose->map;
                if (!loose_map)
                        continue;
                map = (to == repo->compat_hash_algo) ?
index 20daa629a1dda97f9045c50d9bc8c8de60f82fab..ccc67713fad38fa3dc8a5dff000df8428147b804 100644 (file)
@@ -2014,5 +2014,6 @@ void odb_source_loose_free(struct odb_source_loose *loose)
        if (!loose)
                return;
        odb_source_loose_clear_cache(loose);
+       loose_object_map_clear(&loose->map);
        free(loose);
 }
index bec855e8e53f952776c8c3a5b799ffbb452910b3..f8a96a45f5770399fccc104dc350241be730940b 100644 (file)
@@ -32,6 +32,9 @@ struct odb_source_loose {
         */
        uint32_t subdir_seen[8]; /* 256 bits */
        struct oidtree *cache;
+
+       /* Map between object IDs for loose objects. */
+       struct loose_object_map *map;
 };
 
 struct odb_source_loose *odb_source_loose_new(struct odb_source *source);
diff --git a/odb.c b/odb.c
index b3e8d4a49cb07e6e8ecdb625be040134208848ca..d1df9609e21d1e38796dd6d9d55d695992c7d52a 100644 (file)
--- a/odb.c
+++ b/odb.c
@@ -370,7 +370,6 @@ static void odb_source_free(struct odb_source *source)
 {
        free(source->path);
        odb_source_loose_free(source->loose);
-       loose_object_map_clear(&source->loose_map);
        free(source);
 }
 
diff --git a/odb.h b/odb.h
index 77104396afe4aa4db606b046f75455f683af900a..f9a3137a34aa3b2756c85c28bbe91e8f98ba9657 100644 (file)
--- a/odb.h
+++ b/odb.h
@@ -51,9 +51,6 @@ struct odb_source {
        /* Private state for loose objects. */
        struct odb_source_loose *loose;
 
-       /* Map between object IDs for loose objects. */
-       struct loose_object_map *loose_map;
-
        /*
         * private data
         *