]> git.ipfire.org Git - thirdparty/git.git/commitdiff
object-store: rename `raw_object_store` to `object_database`
authorPatrick Steinhardt <ps@pks.im>
Tue, 1 Jul 2025 12:22:13 +0000 (14:22 +0200)
committerJunio C Hamano <gitster@pobox.com>
Tue, 1 Jul 2025 21:46:33 +0000 (14:46 -0700)
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>
commit-graph.c
commit-graph.h
object-store.c
object-store.h
packfile.c
packfile.h
repository.c
repository.h

index ad3943b69065206227518e4fed997ff761f9a1f1..905fcbdf0e8e9f66a4d3461f0ce8144bbe2a0baf 100644 (file)
@@ -829,7 +829,7 @@ struct bloom_filter_settings *get_bloom_filter_settings(struct repository *r)
        return NULL;
 }
 
-void close_commit_graph(struct raw_object_store *o)
+void close_commit_graph(struct object_database *o)
 {
        if (!o->commit_graph)
                return;
index 13f662827d49a96a5d5b6b98d4a88f5f56cbf797..20d38c100ce7c9bbe4f37dacc92cf25dfd74a806 100644 (file)
@@ -26,7 +26,7 @@ void git_test_write_commit_graph_or_die(void);
 struct commit;
 struct bloom_filter_settings;
 struct repository;
-struct raw_object_store;
+struct object_database;
 struct string_list;
 
 char *get_commit_graph_filename(struct object_directory *odb);
@@ -186,7 +186,7 @@ int write_commit_graph(struct object_directory *odb,
 
 int verify_commit_graph(struct repository *r, struct commit_graph *g, int flags);
 
-void close_commit_graph(struct raw_object_store *);
+void close_commit_graph(struct object_database *);
 void free_commit_graph(struct commit_graph *);
 
 /*
index 58cde0313a55334bae33d7c54ec2e8f1806c09f4..f4e8f99d90f1b28165ef6b65667428c6603022ca 100644 (file)
@@ -44,7 +44,7 @@ struct cached_object_entry {
        } value;
 };
 
-static const struct cached_object *find_cached_object(struct raw_object_store *object_store,
+static const struct cached_object *find_cached_object(struct object_database *object_store,
                                                      const struct object_id *oid)
 {
        static const struct cached_object empty_tree = {
@@ -86,7 +86,7 @@ int odb_mkstemp(struct strbuf *temp_filename, const char *pattern)
 /*
  * Return non-zero iff the path is usable as an alternate object database.
  */
-static int alt_odb_usable(struct raw_object_store *o,
+static int alt_odb_usable(struct object_database *o,
                          struct strbuf *path,
                          const char *normalized_objdir, khiter_t *pos)
 {
@@ -950,9 +950,9 @@ void assert_oid_type(const struct object_id *oid, enum object_type expect)
                    type_name(expect));
 }
 
-struct raw_object_store *raw_object_store_new(void)
+struct object_database *odb_new(void)
 {
-       struct raw_object_store *o = xmalloc(sizeof(*o));
+       struct object_database *o = xmalloc(sizeof(*o));
 
        memset(o, 0, sizeof(*o));
        INIT_LIST_HEAD(&o->packed_git_mru);
@@ -961,7 +961,7 @@ struct raw_object_store *raw_object_store_new(void)
        return o;
 }
 
-static void free_object_directories(struct raw_object_store *o)
+static void free_object_directories(struct object_database *o)
 {
        while (o->odb) {
                struct object_directory *next;
@@ -974,7 +974,7 @@ static void free_object_directories(struct raw_object_store *o)
        o->odb_by_path = NULL;
 }
 
-void raw_object_store_clear(struct raw_object_store *o)
+void odb_clear(struct object_database *o)
 {
        FREE_AND_NULL(o->alternate_db);
 
index c5890085352329ce5314294d504bcc02d9ed4090..a3be27d1171842a7f60aef53ee0b85a84b269d19 100644 (file)
@@ -87,7 +87,12 @@ struct packed_git;
 struct multi_pack_index;
 struct cached_object_entry;
 
-struct raw_object_store {
+/*
+ * The object database encapsulates access to objects in a repository. It
+ * manages one or more backends that store the actual objects which are
+ * configured via alternates.
+ */
+struct object_database {
        /*
         * Set of all object directories; the main directory is first (and
         * cannot be NULL after initialization). Subsequent directories are
@@ -169,8 +174,8 @@ struct raw_object_store {
        unsigned packed_git_initialized : 1;
 };
 
-struct raw_object_store *raw_object_store_new(void);
-void raw_object_store_clear(struct raw_object_store *o);
+struct object_database *odb_new(void);
+void odb_clear(struct object_database *o);
 
 /*
  * Create a temporary file rooted in the object database directory, or
index 70c7208f027b522a45e91c5da2e053083171423d..c735b4d013547d4ebc5e205339d10b4ea12ac818 100644 (file)
@@ -359,7 +359,7 @@ void close_pack(struct packed_git *p)
        oidset_clear(&p->bad_objects);
 }
 
-void close_object_store(struct raw_object_store *o)
+void close_object_store(struct object_database *o)
 {
        struct packed_git *p;
 
index 3a3c77cf05a63d084fe2c7994851fadb5a017423..826eb7f475fc319a7e82e430f44f29350a10ab83 100644 (file)
@@ -183,12 +183,12 @@ int close_pack_fd(struct packed_git *p);
 
 uint32_t get_pack_fanout(struct packed_git *p, uint32_t value);
 
-struct raw_object_store;
+struct object_database;
 
 unsigned char *use_pack(struct packed_git *, struct pack_window **, off_t, unsigned long *);
 void close_pack_windows(struct packed_git *);
 void close_pack(struct packed_git *);
-void close_object_store(struct raw_object_store *o);
+void close_object_store(struct object_database *o);
 void unuse_pack(struct pack_window **);
 void clear_delta_base_cache(void);
 struct packed_git *add_packed_git(struct repository *r, const char *path,
index 9b3d6665fc6d4f5cb203ac0f557b9fd62e63a968..07757e6e0c90d773aae0a9219a7deb0cc81e40c3 100644 (file)
@@ -52,7 +52,7 @@ static void set_default_hash_algo(struct repository *repo)
 
 void initialize_repository(struct repository *repo)
 {
-       repo->objects = raw_object_store_new();
+       repo->objects = odb_new();
        repo->remote_state = remote_state_new();
        repo->parsed_objects = parsed_object_pool_new(repo);
        ALLOC_ARRAY(repo->index, 1);
@@ -374,7 +374,7 @@ void repo_clear(struct repository *repo)
        FREE_AND_NULL(repo->worktree);
        FREE_AND_NULL(repo->submodule_prefix);
 
-       raw_object_store_clear(repo->objects);
+       odb_clear(repo->objects);
        FREE_AND_NULL(repo->objects);
 
        parsed_object_pool_clear(repo->parsed_objects);
index c4c92b2ab9c9e3b425dc2974636e33d1f4089c69..3a5ef9c781e1ecd8a53c954b189310ab7e783f3d 100644 (file)
@@ -9,7 +9,7 @@ struct git_hash_algo;
 struct index_state;
 struct lock_file;
 struct pathspec;
-struct raw_object_store;
+struct object_database;
 struct submodule_cache;
 struct promisor_remote_config;
 struct remote_state;
@@ -47,7 +47,7 @@ struct repository {
        /*
         * Holds any information related to accessing the raw object content.
         */
-       struct raw_object_store *objects;
+       struct object_database *objects;
 
        /*
         * All objects in this repository that have been parsed. This structure