Re: [Outreachy PATCH v6 2/3] environment: stop using core.sparseCheckout globally
- From
- Phillip Wood <phillip.wood123@gmail.com>
- Date
- Feb 4, 2026, 16:55 UTC
- Message-ID
- <534b70cc-e1e9-432c-932c-73215d9a4632@gmail.com>
- In-Reply-To
- <8645b4f5952a98ed32180466fc40a184c61081b5.1770127568.git.belkid98@gmail.com>
On 03/02/2026 15:42, Olamide Caleb Bello wrote:
Show 8 quoted lines
> The config value `core.sparseCheckout` is parsed in > `git_default_core_config()` and stored globally in > `core_apply_sparse_checkout`. This could cause it to be overwritten > by another repository when different Git repositories run in the same > process. > > Move the parsed value into `struct repo_config_values` in the_repository > to retain current behaviours and move towards libifying Git.
This looks good, I've left a small style comment below
Show 9 quoted lines
> diff --git a/builtin/clone.c b/builtin/clone.c
> index b19b302b06..0005fd7118 100644
> --- a/builtin/clone.c
> +++ b/builtin/clone.c
> @@ -617,13 +617,14 @@ static int git_sparse_checkout_init(const char *repo)
> {
> struct child_process cmd = CHILD_PROCESS_INIT;
> int result = 0;
> + struct repo_config_values *cfg = repo_config_values(the_repository);We normally have a blank line between the varibale declarations and statements. As you're adding a new declaration here it would be good to add a blank line as well. The same goes for dir.c and sparse-index.c below.
Thanks
Phillip
> strvec_pushl(&cmd.args, "-C", repo, "sparse-checkout", "set", NULL);
> diff --git a/dir.c b/dir.c
> index b00821f294..0e05b3a383 100644
> --- a/dir.c
> +++ b/dir.c
> @@ -1551,7 +1551,8 @@ enum pattern_match_result
path_matches_pattern_list(
>
> int init_sparse_checkout_patterns(struct index_state *istate)
> {
> - if (!core_apply_sparse_checkout)
> + struct repo_config_values *cfg = repo_config_values(the_repository);
> + if (!cfg->apply_sparse_checkout)
> return 1;
> if (istate->sparse_checkout_patterns)
> return 0;Show 24 quoted lines
> diff --git a/sparse-index.c b/sparse-index.c
> index 76f90da5f5..cb4c99dcae 100644
> --- a/sparse-index.c
> +++ b/sparse-index.c
> @@ -152,7 +152,8 @@ static int index_has_unmerged_entries(struct index_state *istate)
>
> int is_sparse_index_allowed(struct index_state *istate, int flags)
> {
> - if (!core_apply_sparse_checkout || !core_sparse_checkout_cone)
> + struct repo_config_values *cfg = repo_config_values(the_repository);
> + if (!cfg->apply_sparse_checkout || !core_sparse_checkout_cone)
> return 0;
>
> if (!(flags & SPARSE_INDEX_MEMORY_ONLY)) {
> @@ -670,7 +671,8 @@ static void clear_skip_worktree_from_present_files_full(struct index_state *ista
>
> void clear_skip_worktree_from_present_files(struct index_state *istate)
> {
> - if (!core_apply_sparse_checkout ||
> + struct repo_config_values *cfg = repo_config_values(the_repository);
> + if (!cfg->apply_sparse_checkout ||
> sparse_expect_files_outside_of_patterns)
> return;
>