object-file: move loose object map into loose source
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>
Patrick Steinhardt committed
Nov 3, 2025 at 08:42 UTC
376016ec71c3a6c883f2ca77a3f1c0245fd60dc2
5 files changed
+9
-9
loose.c
+5
-5
@@ -49,7 +49,7 @@ static int insert_loose_map(struct odb_source *source,
49
const struct object_id *oid,
50
const struct object_id *compat_oid)
51
{
52
- struct loose_object_map *map = source->loose_map;
52
+ struct loose_object_map *map = source->loose->map;
53
int inserted = 0;
54
55
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
65
struct strbuf buf = STRBUF_INIT, path = STRBUF_INIT;
66
FILE *fp;
67
68
- if (!source->loose_map)
69
- loose_object_map_init(&source->loose_map);
68
+ if (!source->loose->map)
69
+ loose_object_map_init(&source->loose->map);
70
if (!source->loose->cache) {
71
ALLOC_ARRAY(source->loose->cache, 1);
72
oidtree_init(source->loose->cache);
@@ -125,7 +125,7 @@ int repo_read_loose_object_map(struct repository *repo)
125
126
int repo_write_loose_object_map(struct repository *repo)
127
{
128
- kh_oid_map_t *map = repo->objects->sources->loose_map->to_compat;
128
+ kh_oid_map_t *map = repo->objects->sources->loose->map->to_compat;
129
struct lock_file lock;
130
int fd;
131
khiter_t iter;
@@ -231,7 +231,7 @@ int repo_loose_object_map_oid(struct repository *repo,
231
khiter_t pos;
232
233
for (source = repo->objects->sources; source; source = source->next) {
234
- struct loose_object_map *loose_map = source->loose_map;
234
+ struct loose_object_map *loose_map = source->loose->map;
235
if (!loose_map)
236
continue;
237
map = (to == repo->compat_hash_algo) ?
object-file.c
+1
@@ -2014,5 +2014,6 @@ void odb_source_loose_free(struct odb_source_loose *loose)
2014
if (!loose)
2015
return;
2016
odb_source_loose_clear_cache(loose);
2017
+ loose_object_map_clear(&loose->map);
2018
free(loose);
2019
}
object-file.h
+3
@@ -32,6 +32,9 @@ struct odb_source_loose {
32
*/
33
uint32_t subdir_seen[8]; /* 256 bits */
34
struct oidtree *cache;
35
+
36
+ /* Map between object IDs for loose objects. */
37
+ struct loose_object_map *map;
38
};
39
40
struct odb_source_loose *odb_source_loose_new(struct odb_source *source);
odb.c
-1
@@ -370,7 +370,6 @@ static void odb_source_free(struct odb_source *source)
370
{
371
free(source->path);
372
odb_source_loose_free(source->loose);
373
- loose_object_map_clear(&source->loose_map);
373
free(source);
374
}
375
odb.h
-3
@@ -51,9 +51,6 @@ struct odb_source {
51
/* Private state for loose objects. */
52
struct odb_source_loose *loose;
53
54
- /* Map between object IDs for loose objects. */
55
- struct loose_object_map *loose_map;
56
-
54
/*
55
* private data
56
*