On 7/29/25 7:36 AM, Ayush Chandekar wrote:
Hey Derrick,
On Thu, Jul 24, 2025 at 6:55 PM Derrick Stolee <stolee@xxxxxxxxx> wrote:
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