object-store: rename `raw_object_store` to `object_database`

The `raw_object_store` structure is the central entry point for reading and writing objects in a repository. The main purpose of this structure is to manage object directories and provide an interface to access and write objects in those object directories. Right now, many of the functions associated with the raw object store implicitly rely on `the_repository` to get access to its `objects` pointer, which is the `raw_object_store`. As we want to generally get rid of using `the_repository` across our codebase we will have to convert this implicit dependency on this global variable into an explicit parameter. This conversion can be done by simply passing in an explicit pointer to a repository and then using its `->objects` pointer. But there is a second effort underway, which is to make the object subsystem more selfcontained so that we can eventually have pluggable object backends. As such, passing in a repository wouldn't make a ton of sense, and the goal is to convert the object store interfaces such that we always pass in a reference to the `raw_object_store` instead. This will expose the `raw_object_store` type to a lot more callers though, which surfaces that this type is named somewhat awkwardly. The "raw_" prefix makes readers wonder whether there is a non-raw variant of the object store, but there isn't. Furthermore, we nowadays want to name functions in a way that they can be clearly attributed to a specific subsystem, but calling them e.g. `raw_object_store_has_object()` is just too unwieldy, even when dropping the "raw_" prefix. Instead, rename the structure to `object_database`. This term is already used a lot throughout our codebase, and it cannot easily be mistaken for "object directories", either. Furthermore, its acronym ODB is already well-known and works well as part of a function's name, like for example `odb_has_object()`. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Patrick Steinhardt committed Jul 1, 2025 at 14:22 UTC 1ace06644926bcf1f05e291e8a9476c977c25eeb
8 files changed +24 -19
commit-graph.c
+1 -1
@@ -829,7 +829,7 @@ struct bloom_filter_settings *get_bloom_filter_settings(struct repository *r)
829 return NULL;
830 }
831
832 -void close_commit_graph(struct raw_object_store *o)
832 +void close_commit_graph(struct object_database *o)
833 {
834 if (!o->commit_graph)
835 return;
commit-graph.h
+2 -2
@@ -26,7 +26,7 @@ void git_test_write_commit_graph_or_die(void);
26 struct commit;
27 struct bloom_filter_settings;
28 struct repository;
29 -struct raw_object_store;
29 +struct object_database;
30 struct string_list;
31
32 char *get_commit_graph_filename(struct object_directory *odb);
@@ -186,7 +186,7 @@ int write_commit_graph(struct object_directory *odb,
186
187 int verify_commit_graph(struct repository *r, struct commit_graph *g, int flags);
188
189 -void close_commit_graph(struct raw_object_store *);
189 +void close_commit_graph(struct object_database *);
190 void free_commit_graph(struct commit_graph *);
191
192 /*
object-store.c
+6 -6
@@ -44,7 +44,7 @@ struct cached_object_entry {
44 } value;
45 };
46
47 -static const struct cached_object *find_cached_object(struct raw_object_store *object_store,
47 +static const struct cached_object *find_cached_object(struct object_database *object_store,
48 const struct object_id *oid)
49 {
50 static const struct cached_object empty_tree = {
@@ -86,7 +86,7 @@ int odb_mkstemp(struct strbuf *temp_filename, const char *pattern)
86 /*
87 * Return non-zero iff the path is usable as an alternate object database.
88 */
89 -static int alt_odb_usable(struct raw_object_store *o,
89 +static int alt_odb_usable(struct object_database *o,
90 struct strbuf *path,
91 const char *normalized_objdir, khiter_t *pos)
92 {
@@ -950,9 +950,9 @@ void assert_oid_type(const struct object_id *oid, enum object_type expect)
950 type_name(expect));
951 }
952
953 -struct raw_object_store *raw_object_store_new(void)
953 +struct object_database *odb_new(void)
954 {
955 - struct raw_object_store *o = xmalloc(sizeof(*o));
955 + struct object_database *o = xmalloc(sizeof(*o));
956
957 memset(o, 0, sizeof(*o));
958 INIT_LIST_HEAD(&o->packed_git_mru);
@@ -961,7 +961,7 @@ struct raw_object_store *raw_object_store_new(void)
961 return o;
962 }
963
964 -static void free_object_directories(struct raw_object_store *o)
964 +static void free_object_directories(struct object_database *o)
965 {
966 while (o->odb) {
967 struct object_directory *next;
@@ -974,7 +974,7 @@ static void free_object_directories(struct raw_object_store *o)
974 o->odb_by_path = NULL;
975 }
976
977 -void raw_object_store_clear(struct raw_object_store *o)
977 +void odb_clear(struct object_database *o)
978 {
979 FREE_AND_NULL(o->alternate_db);
980
object-store.h
+8 -3
@@ -87,7 +87,12 @@ struct packed_git;
87 struct multi_pack_index;
88 struct cached_object_entry;
89
90 -struct raw_object_store {
90 +/*
91 + * The object database encapsulates access to objects in a repository. It
92 + * manages one or more backends that store the actual objects which are
93 + * configured via alternates.
94 + */
95 +struct object_database {
96 /*
97 * Set of all object directories; the main directory is first (and
98 * cannot be NULL after initialization). Subsequent directories are
@@ -169,8 +174,8 @@ struct raw_object_store {
174 unsigned packed_git_initialized : 1;
175 };
176
172 -struct raw_object_store *raw_object_store_new(void);
173 -void raw_object_store_clear(struct raw_object_store *o);
177 +struct object_database *odb_new(void);
178 +void odb_clear(struct object_database *o);
179
180 /*
181 * Create a temporary file rooted in the object database directory, or
packfile.c
+1 -1
@@ -359,7 +359,7 @@ void close_pack(struct packed_git *p)
359 oidset_clear(&p->bad_objects);
360 }
361
362 -void close_object_store(struct raw_object_store *o)
362 +void close_object_store(struct object_database *o)
363 {
364 struct packed_git *p;
365
packfile.h
+2 -2
@@ -183,12 +183,12 @@ int close_pack_fd(struct packed_git *p);
183
184 uint32_t get_pack_fanout(struct packed_git *p, uint32_t value);
185
186 -struct raw_object_store;
186 +struct object_database;
187
188 unsigned char *use_pack(struct packed_git *, struct pack_window **, off_t, unsigned long *);
189 void close_pack_windows(struct packed_git *);
190 void close_pack(struct packed_git *);
191 -void close_object_store(struct raw_object_store *o);
191 +void close_object_store(struct object_database *o);
192 void unuse_pack(struct pack_window **);
193 void clear_delta_base_cache(void);
194 struct packed_git *add_packed_git(struct repository *r, const char *path,
repository.c
+2 -2
@@ -52,7 +52,7 @@ static void set_default_hash_algo(struct repository *repo)
52
53 void initialize_repository(struct repository *repo)
54 {
55 - repo->objects = raw_object_store_new();
55 + repo->objects = odb_new();
56 repo->remote_state = remote_state_new();
57 repo->parsed_objects = parsed_object_pool_new(repo);
58 ALLOC_ARRAY(repo->index, 1);
@@ -374,7 +374,7 @@ void repo_clear(struct repository *repo)
374 FREE_AND_NULL(repo->worktree);
375 FREE_AND_NULL(repo->submodule_prefix);
376
377 - raw_object_store_clear(repo->objects);
377 + odb_clear(repo->objects);
378 FREE_AND_NULL(repo->objects);
379
380 parsed_object_pool_clear(repo->parsed_objects);
repository.h
+2 -2
@@ -9,7 +9,7 @@ struct git_hash_algo;
9 struct index_state;
10 struct lock_file;
11 struct pathspec;
12 -struct raw_object_store;
12 +struct object_database;
13 struct submodule_cache;
14 struct promisor_remote_config;
15 struct remote_state;
@@ -47,7 +47,7 @@ struct repository {
47 /*
48 * Holds any information related to accessing the raw object content.
49 */
50 - struct raw_object_store *objects;
50 + struct object_database *objects;
51
52 /*
53 * All objects in this repository that have been parsed. This structure