There is an ongoing effort to remove global state currently and switch over to pass around the relevant data structures; for most of it we end up passing around 'the_repository' as it contains everything there is. Merged into master: fcb6df32546 Merge branch 'sb/oid-object-info' a2cec42213c Merge branch 'sb/object-store-replace' 3a1ec60c43b Merge branch 'sb/packfiles-in-repository' cf0b1793ead Merge branch 'sb/object-store' Currently cooking: 8c69a7d7e80 Merge branch 'sb/object-store-grafts' into pu 42d32d07298 Merge branch 'sb/object-store-alloc' into jch (both marked for "will merge to next" in the cooking report) Floating on the mailing list, not cooking yet: "sb/object-store-lookup" https://public-inbox.org/git/20180613230522.55335-1-sbeller@xxxxxxxxxx/ This clashes with other series in flight (Stolees get_tree series; see https://public-inbox.org/git/709bd61c-70fc-a925-efba-58ab9be265c9@xxxxxxxxx/ I'll rebase this series on top of that series once the currently cooking series stabilize) "nd/kill-the_index" https://public-inbox.org/git/20180616054157.32433-1-pclouds@xxxxxxxxx/ This converts the_index to pass around index pointers instead of the_repository; it fits into the theme, but Duys end goal differs from mine; he is less submodule focused. Work that still needs to be done: "xx/object-store-commit-graph" Convert the commit graph to have no global state, but be part of the repository struct. I think this can go in parallel to "sb/object-store-lookup", so I'll tackle that next. Thanks Stolee for looking ahead: There is only the commit graph itself as well as whether it has been prepared as a global variable. So this series will consist of passing around a repository struct for all those higher level functions that do not pass around the commit graph or parts of it. "xx/finish-object-stores" This requires "xx/object-store-commit-graph" as well as "sb/object-store-lookup"; it will convert parse_commit[_gently] to take a repository argument and will finish the actual object store part. This might be optional for the goal of converting submodules, that I have in mind, but it sure is a nice finishing touch. "xx/convert-revision-walking" This series aims to convert get_merge_bases(), in_merge_bases() and all its revision walking code to take a repository argument. "xx/submodule-dont-use-alternates" Once "xx/convert-revision-walking" is in, convert the local find_first_merges(), and convert all functions to drop function add_submodule_odb() and instead operate on the submodule repository instead of the_repository with the submodule objects added as an alternate. Thanks, Stefan