Re: [PATCH v4 01/17] object-store: rename `raw_object_store` to `object_database`
- From
Toon Claes <toon@iotcl.com>
- Date
- Jun 4, 2025, 08:55 UTC
- Message-ID
- <87a56n3myb.fsf@iotcl.com>
- In-Reply-To
- <20250602-pks-object-store-wo-the-repository-v4-1-e986804a7c62@pks.im>
Patrick Steinhardt <ps@pks.im> writes:
Show 146 quoted lines
> 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>
> ---
> commit-graph.c | 2 +-
> commit-graph.h | 4 ++--
> object-store.c | 12 ++++++------
> object-store.h | 11 ++++++++---
> packfile.c | 2 +-
> packfile.h | 4 ++--
> repository.c | 4 ++--
> repository.h | 4 ++--
> 8 files changed, 24 insertions(+), 19 deletions(-)
>
> diff --git a/commit-graph.c b/commit-graph.c
> index ad3943b6906..905fcbdf0e8 100644
> --- a/commit-graph.c
> +++ b/commit-graph.c
> @@ -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;
> diff --git a/commit-graph.h b/commit-graph.h
> index 13f662827d4..20d38c100ce 100644
> --- a/commit-graph.h
> +++ b/commit-graph.h
> @@ -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 *);
>
> /*
> diff --git a/object-store.c b/object-store.c
> index 58cde0313a5..f4e8f99d90f 100644
> --- a/object-store.c
> +++ b/object-store.c
> @@ -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);
>
> diff --git a/object-store.h b/object-store.h
> index c5890085352..a3be27d1171 100644
> --- a/object-store.h
> +++ b/object-store.h
> @@ -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.This still uses /old/ terminology. I think the "backend" should be called "source", and we can keep the "alternates"?
-- Cheers, Toon