public inbox for git@vger.kernel.org
 help / color / mirror / Atom feed
From: Phillip Wood <phillip.wood123@gmail.com>
To: Bello Olamide <belkid98@gmail.com>
Cc: git@vger.kernel.org, gitster@pobox.com,
	christian.couder@gmail.com, usmanakinyemi202@gmail.com,
	kaartic.sivaraam@gmail.com, me@ttaylorr.com,
	karthik.188@gmail.com, Toon Claes <toon@iotcl.com>
Subject: Re: [Outreachy PATCH v3 2/3] environment: environment: stop using core.sparseCheckout globally
Date: Fri, 23 Jan 2026 10:43:19 +0000	[thread overview]
Message-ID: <4f19e70f-8ab5-4322-ac71-76bc925b324a@gmail.com> (raw)
In-Reply-To: <CAD=f0L9JhJq95kV7oUsaN5FqmUAH2qeSTLPLYXKAHUtNiHK_WA@mail.gmail.com>

On 22/01/2026 15:29, Bello Olamide wrote:
> On Thu, 22 Jan 2026 at 15:41, Phillip Wood <phillip.wood123@gmail.com> wrote:
>>
>>> diff --git a/builtin/backfill.c b/builtin/backfill.c
>>> index e80fc1b694..5fc8c51ed1 100644
>>> --- a/builtin/backfill.c
>>> +++ b/builtin/backfill.c
>>> @@ -139,7 +139,7 @@ int cmd_backfill(int argc, const char **argv, const char *prefix, struct reposit
>>>        repo_config(repo, git_default_config, NULL);
>>>
>>>        if (ctx.sparse < 0)
>>> -             ctx.sparse = core_apply_sparse_checkout;
>>> +             ctx.sparse = repo->config_values.sparse_checkout;
>>
>> Using "repo" rather than "the_repository" here is dangerous because only
>> "the_repository" contains the parsed config. This applies throughout
>> this patch.
> 
> Okay noted...
> Sorry but I have a question.

You don't need to be sorry for having a question - it shows you have 
been thinking about the feedback you have received which is very good.

> I observed that the address of "repo" is passed to builtin/backfill.c,
> is gotten from git.c:handle_builtin
> which passed run_builtin "the_repository" as a parameter.
> 
> Won't the address of "repo" and "the_repository be the same"?

Yes, but I think it is safer to explicitly say "the_repository" so that
if any of the functions you convert here are ever passed another 
repository instance the code will keep working as expected. It also 
documents that the config value is only stored in "the_repository". Once 
we make these config values per-repository then we can use the 
repository instance passed to the function.

Thanks

Phillip

>>
>>>
>>>        result = do_backfill(&ctx);
>>>        backfill_context_clear(&ctx);
>>> diff --git a/builtin/clone.c b/builtin/clone.c
>>> index b19b302b06..b6b19e83d1 100644
>>> --- a/builtin/clone.c
>>> +++ b/builtin/clone.c
>>> @@ -623,7 +623,7 @@ static int git_sparse_checkout_init(const char *repo)
>>>         * We must apply the setting in the current process
>>>         * for the later checkout to use the sparse-checkout file.
>>>         */
>>> -     core_apply_sparse_checkout = 1;
>>> +     the_repository->config_values.sparse_checkout = 1;
>>>
>>>        cmd.git_cmd = 1;
>>>        if (run_command(&cmd)) {
>>> diff --git a/builtin/grep.c b/builtin/grep.c
>>> index 53cccf2d25..525edb5e9c 100644
>>> --- a/builtin/grep.c
>>> +++ b/builtin/grep.c
>>> @@ -482,7 +482,7 @@ static int grep_submodule(struct grep_opt *opt,
>>>         *      "forget" the sparse-index feature switch. As a result, the index
>>>         *      of these submodules are expanded unexpectedly.
>>>         *
>>> -      * 2. "core_apply_sparse_checkout"
>>> +      * 2. "sparse_checkout"
>>
>> That should be something like config_values.sparse_checkout to make it
>> clear that "sparse_checkout" is the name of a member of a struct, not
>> the name of a variable.
> 
> Okay noted
> 
>>
>>> diff --git a/environment.h b/environment.h
>>> index aea73ff25b..3b5ff7094a 100644
>>> --- a/environment.h
>>> +++ b/environment.h
>>> @@ -88,6 +88,7 @@ struct strvec;
>>>    struct repo_config_values {
>>>        /* core config values */
>>>        char *attributes_file_path;
>>> +     int sparse_checkout;
>>
>> There are several other sparse checkout variables like
>> core_sparse_checkout_cone that we'll need to convert in the future so
>> "apply_sparse_checkout" or "sparse_checkout_apply" would be better names.
> 
> Okay noted.
> 
>>
>> Thanks
>>
>> Phillip
>>
>>
>>>    };
>>>
>>>    /*
>>> @@ -169,7 +170,6 @@ extern int precomposed_unicode;
>>>    extern int protect_hfs;
>>>    extern int protect_ntfs;
>>>
>>> -extern int core_apply_sparse_checkout;
>>>    extern int core_sparse_checkout_cone;
>>>    extern int sparse_expect_files_outside_of_patterns;
>>>
>>> diff --git a/sparse-index.c b/sparse-index.c
>>> index 76f90da5f5..6dd8dd679d 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 = &istate->repo->config_values;
>>> +     if (!cfg->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 = &istate->repo->config_values;
>>> +     if (!cfg->sparse_checkout ||
>>>            sparse_expect_files_outside_of_patterns)
>>>                return;
>>>
>>> diff --git a/unpack-trees.c b/unpack-trees.c
>>> index f38c761ab9..2bdfa1334c 100644
>>> --- a/unpack-trees.c
>>> +++ b/unpack-trees.c
>>> @@ -1924,7 +1924,7 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options
>>>        if (o->prefix)
>>>                update_sparsity_for_prefix(o->prefix, o->src_index);
>>>
>>> -     if (!core_apply_sparse_checkout || !o->update)
>>> +     if (!repo->config_values.sparse_checkout || !o->update)
>>>                o->skip_sparse_checkout = 1;
>>>        if (!o->skip_sparse_checkout) {
>>>                memset(&pl, 0, sizeof(pl));
>>> diff --git a/wt-status.c b/wt-status.c
>>> index e12adb26b9..a2e388606f 100644
>>> --- a/wt-status.c
>>> +++ b/wt-status.c
>>> @@ -1764,7 +1764,7 @@ static void wt_status_check_sparse_checkout(struct repository *r,
>>>        int skip_worktree = 0;
>>>        int i;
>>>
>>> -     if (!core_apply_sparse_checkout || r->index->cache_nr == 0) {
>>> +     if (!r->config_values.sparse_checkout || r->index->cache_nr == 0) {
>>>                /*
>>>                 * Don't compute percentage of checked out files if we
>>>                 * aren't in a sparse checkout or would get division by 0.
>>


  reply	other threads:[~2026-01-23 10:43 UTC|newest]

Thread overview: 71+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-01-12 12:59 [Outreachy PATCH RFC 0/3] store git_default_config() parsed values in new config struct Olamide Caleb Bello
2026-01-12 12:59 ` [Outreachy PATCH RFC 1/3] environment: stop storing `core.attributesFile` globally Olamide Caleb Bello
2026-01-12 14:29   ` Phillip Wood
2026-01-12 15:05     ` Bello Olamide
2026-01-12 12:59 ` [Outreachy PATCH RFC 2/3] environment: stop using core.sparseCheckout globally Olamide Caleb Bello
2026-01-12 12:59 ` [Outreachy PATCH RFC 3/3] environment: move "branch.autoSetupMerge" into `struct config_values` Olamide Caleb Bello
2026-01-13 16:43 ` [Outreachy PATCH v2 0/3] store git_default_config() parsed values in new config struct Olamide Caleb Bello
2026-01-13 16:44   ` [Outreachy PATCH v2 1/3] environment: stop storing `core.attributesFile` globally Olamide Caleb Bello
2026-01-13 19:26     ` Junio C Hamano
2026-01-14  6:59       ` Bello Olamide
2026-01-13 16:44   ` [Outreachy PATCH v2 2/3] environment: environment: stop using core.sparseCheckout globally Olamide Caleb Bello
2026-01-13 19:38     ` Junio C Hamano
2026-01-14  7:16       ` Bello Olamide
2026-01-13 16:44   ` [Outreachy PATCH v2 3/3] environment: move "branch.autoSetupMerge" into `struct repo_config_values` Olamide Caleb Bello
2026-01-13 19:53     ` Junio C Hamano
2026-01-14  7:40       ` Bello Olamide
2026-01-15 22:17   ` [Outreachy PATCH v2 0/3] store git_default_config() parsed values in new config struct Bello Olamide
2026-01-17 20:59   ` [Outreachy PATCH v3 0/3] store repo specific config values in new `struct repo_config_values` Olamide Caleb Bello
2026-01-17 20:59     ` [Outreachy PATCH v3 1/3] environment: stop storing `core.attributesFile` globally Olamide Caleb Bello
2026-01-22 12:13       ` Toon Claes
2026-01-22 15:08         ` Bello Olamide
2026-01-22 14:40       ` Phillip Wood
2026-01-22 15:11         ` Bello Olamide
2026-01-17 20:59     ` [Outreachy PATCH v3 2/3] environment: environment: stop using core.sparseCheckout globally Olamide Caleb Bello
2026-01-22 12:13       ` Toon Claes
2026-01-22 15:17         ` Bello Olamide
2026-01-22 14:41       ` Phillip Wood
2026-01-22 15:29         ` Bello Olamide
2026-01-23 10:43           ` Phillip Wood [this message]
2026-01-23 13:24             ` Bello Olamide
2026-01-17 20:59     ` [Outreachy PATCH v3 3/3] environment: move "branch.autoSetupMerge" into `struct repo_config_values` Olamide Caleb Bello
2026-01-22 14:41       ` Phillip Wood
2026-01-22 15:29         ` Bello Olamide
2026-01-20 15:19     ` [Outreachy PATCH v3 0/3] store repo specific config values in new " Bello Olamide
2026-01-24 11:55     ` [Outreachy PATCH v4 " Olamide Caleb Bello
2026-01-24 11:55       ` [Outreachy PATCH v4 1/3] environment: stop storing `core.attributesFile` globally Olamide Caleb Bello
2026-01-24 11:55       ` [Outreachy PATCH v4 2/3] environment: stop using core.sparseCheckout globally Olamide Caleb Bello
2026-01-24 11:55       ` [Outreachy PATCH v4 3/3] environment: move "branch.autoSetupMerge" into `struct repo_config_values` Olamide Caleb Bello
2026-01-24 12:21       ` [Outreachy PATCH v5 0/3] store repo specific config values in new " Olamide Caleb Bello
2026-01-24 12:21         ` [Outreachy PATCH v5 1/3] environment: stop storing `core.attributesFile` globally Olamide Caleb Bello
2026-01-29 18:01           ` Junio C Hamano
2026-01-24 12:21         ` [Outreachy PATCH v5 2/3] environment: stop using core.sparseCheckout globally Olamide Caleb Bello
2026-01-29 18:12           ` Junio C Hamano
2026-01-24 12:21         ` [Outreachy PATCH v5 3/3] environment: move "branch.autoSetupMerge" into `struct repo_config_values` Olamide Caleb Bello
2026-01-29 18:37           ` Junio C Hamano
2026-01-30 16:20             ` Junio C Hamano
2026-01-30 20:15               ` Junio C Hamano
2026-01-29  8:29         ` [Outreachy PATCH v5 0/3] store repo specific config values in new " Bello Olamide
2026-02-03 15:42         ` [Outreachy PATCH v6 " Olamide Caleb Bello
2026-02-03 15:42           ` [Outreachy PATCH v6 1/3] environment: stop storing `core.attributesFile` globally Olamide Caleb Bello
2026-02-04 16:39             ` Phillip Wood
2026-02-09  8:47               ` Bello Olamide
2026-02-07  1:14             ` Junio C Hamano
2026-02-08 11:14               ` Phillip Wood
2026-02-09  8:54                 ` Bello Olamide
2026-02-10  8:40                 ` Bello Olamide
2026-02-03 15:42           ` [Outreachy PATCH v6 2/3] environment: stop using core.sparseCheckout globally Olamide Caleb Bello
2026-02-04 16:55             ` Phillip Wood
2026-02-03 15:42           ` [Outreachy PATCH v6 3/3] environment: move "branch.autoSetupMerge" into `struct repo_config_values` Olamide Caleb Bello
2026-02-04 16:57           ` [Outreachy PATCH v6 0/3] store repo specific config values in new " Phillip Wood
2026-02-16 16:38         ` [Outreachy PATCH v7 " Olamide Caleb Bello
2026-02-16 16:38           ` [Outreachy PATCH v7 1/3] environment: stop storing `core.attributesFile` globally Olamide Caleb Bello
2026-02-16 16:38           ` [Outreachy PATCH v7 2/3] environment: stop using core.sparseCheckout globally Olamide Caleb Bello
2026-02-26 12:57             ` Christian Couder
2026-02-26 15:23               ` Junio C Hamano
2026-02-26 16:24                 ` Bello Olamide
2026-02-16 16:38           ` [Outreachy PATCH v7 3/3] environment: move "branch.autoSetupMerge" into `struct repo_config_values` Olamide Caleb Bello
2026-02-17 20:08           ` [Outreachy PATCH v7 0/3] store repo specific config values in new " Junio C Hamano
2026-02-18 11:27             ` Bello Olamide
2026-02-26 13:03             ` Christian Couder
2026-02-26 15:19               ` Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4f19e70f-8ab5-4322-ac71-76bc925b324a@gmail.com \
    --to=phillip.wood123@gmail.com \
    --cc=belkid98@gmail.com \
    --cc=christian.couder@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=kaartic.sivaraam@gmail.com \
    --cc=karthik.188@gmail.com \
    --cc=me@ttaylorr.com \
    --cc=phillip.wood@dunelm.org.uk \
    --cc=toon@iotcl.com \
    --cc=usmanakinyemi202@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox