The `packfile.c` file uses the global variable 'the_repository' extensively throughout the code. Let's remove all usecases of this, by modifying the required functions to accept a 'struct repository' instead. This is to clean up usage of global state. The first 3 patches are mostly internal to `packfile.c`, we add the repository field to the `packed_git` struct and this is used to clear up some useages of the global variables. The next 3 patches are more disruptive, they modify the function definition of `odb_pack_name`, `has_object[_kept]_pack` and `for_each_packed_object` to receive a repository, helping remove other usages of 'the_repository' variable. Finally, the last two patches deal with global config values. These values are localized. This series is based off on master: 6a11438f43 (The fifth batch, 2024-10-25), with 'jk/dumb-http-finalize' merged in. I found no issues merging this with seen, but since these patches cover a lot of files, there might be some conflicts. Since this tackles the topic in a new way compared to v1, I've avoided adding a range-diff with the previous version. Changes in v2: - This version reduces the blast radius by not passing around the repository struct to each function and instead pass it through the packed_git struct. Thanks to Patrick for the tip. Karthik Nayak (8): packfile: add repository to struct `packed_git` packfile: use `repository` from `packed_git` directly packfile: pass `repository` to static function in the file packfile: pass down repository to `odb_pack_name` packfile: pass down repository to `has_object[_kept]_pack` packfile: pass down repository to `for_each_packed_object` config: make `delta_base_cache_limit` a non-global variable config: make `packed_git_(limit|window_size)` non-global variables builtin/cat-file.c | 7 +- builtin/count-objects.c | 2 +- builtin/fast-import.c | 15 ++-- builtin/fsck.c | 20 +++-- builtin/gc.c | 5 +- builtin/index-pack.c | 20 +++-- builtin/pack-objects.c | 11 ++- builtin/pack-redundant.c | 4 +- builtin/repack.c | 2 +- builtin/rev-list.c | 2 +- commit-graph.c | 4 +- config.c | 22 ----- connected.c | 3 +- diff.c | 3 +- environment.c | 3 - environment.h | 1 - fsck.c | 2 +- http.c | 4 +- list-objects.c | 7 +- midx-write.c | 2 +- midx.c | 2 +- object-store-ll.h | 9 +- pack-bitmap.c | 2 +- pack-objects.h | 3 +- pack-write.c | 1 + pack.h | 1 + packfile.c | 185 ++++++++++++++++++++++++++------------- packfile.h | 18 ++-- promisor-remote.c | 2 +- prune-packed.c | 2 +- reachable.c | 4 +- revision.c | 13 +-- tag.c | 2 +- 33 files changed, 226 insertions(+), 157 deletions(-) -- 2.47.0