On Tue, Sep 14, 2021 at 12:18:35PM +0200, Johannes Schindelin wrote: > Seeing as there seems to be some appetite for refactoring Git's code on > this list, I am thinking that the `struct repository *r` direction might > be the one to go for. And I mean like "move the globals into that struct" > as opposed to introducing that stack you talked about. It would even be a > refactoring where I would understand the motivation, and agree with it, > too. Oh, definitely. Regardless of whether step 2 is "pass around the repository struct" or "treat the global repository struct as a stack", step 1 must be putting repository-related globals into the struct. I don't think there can be any solution that doesn't start with that. :) And I think it can even be done incrementally with very little impact. Just s/ignore_case/the_repository->ignore_case/ in the use-sites is an improvement over the status quo. Even though it doesn't _fix_ anything, now we can easily see where the dependencies on repo-variables are. And of course follow-on steps to make sure we are passing around and accessing the right repository struct are then welcome. -Peff