Re: [GSOC PATCH v6 0/3] environment: remove sparse-checkout related global variables
From: Derrick Stolee <hidden>
Date: 2025-07-29 12:19:45
On 7/29/25 7:36 AM, Ayush Chandekar wrote:
Hey Derrick, On Thu, Jul 24, 2025 at 6:55 PM Derrick Stolee [off-list ref] wrote:quoted
There are two ways to change the approach here to fix the problem of needing prepare_repo_settings() everyhwere: 1. With the idea that these sparse-checkout variables are critical to the functionality of the repo, they should move into the repository struct itself and be initialized along with all other values there. This changes the patches (and my follow-up series) significantly, but mechanically. 2. If we are going to change the intention of the repo settings struct to move from "optional one-off feature flags" to "important information about the core behavior of a repo" then we should prepare_repo_settings() when initializing the repository struct. My preference is (1). The only argument for (2) that I can think of is that it is sometimes helpful to share only the settings for a repo without sharing the whole repo. But that seems like a weak reason right now.Okay, I agree with your points. I can maybe send a new version to address this. Do we also shift settings like index.sparse to the repository then?
For now, it's important to focus this series on the globals being converted. We can come back around to the ideas around removing the settings struct and the prepare_repo_settings() method as a separate series. The index.sparse setting is something that is colocated in the settings partly because of its interaction with feature.experimental being handled in prepare_repo_settings() but also its very isolated use. The sparse checkout globals are much more spread out across the codebase. Thanks, -Stolee