From: Patrick Steinhardt Date: Tue, 1 Jul 2025 12:22:13 +0000 (+0200) Subject: object-store: rename `raw_object_store` to `object_database` X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1ace06644926bcf1f05e291e8a9476c977c25eeb;p=thirdparty%2Fgit.git 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 Signed-off-by: Junio C Hamano --- diff --git a/commit-graph.c b/commit-graph.c index ad3943b690..905fcbdf0e 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 13f662827d..20d38c100c 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 58cde0313a..f4e8f99d90 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 c589008535..a3be27d117 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. + */ +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 diff --git a/packfile.c b/packfile.c index 70c7208f02..c735b4d013 100644 --- a/packfile.c +++ b/packfile.c @@ -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; diff --git a/packfile.h b/packfile.h index 3a3c77cf05..826eb7f475 100644 --- a/packfile.h +++ b/packfile.h @@ -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, diff --git a/repository.c b/repository.c index 9b3d6665fc..07757e6e0c 100644 --- a/repository.c +++ b/repository.c @@ -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); diff --git a/repository.h b/repository.h index c4c92b2ab9..3a5ef9c781 100644 --- a/repository.h +++ b/repository.h @@ -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