On 10/11/2019 6:14 PM, Elijah Newren wrote:
> On Mon, Oct 7, 2019 at 1:08 PM Derrick Stolee via GitGitGadget
> <[email protected]> wrote:
>> ++
>> +The init subcommand also enables the 'extensions.worktreeConfig' setting
>> +and sets the `core.sparseCheckout` setting in the worktree-specific config
>> +file. This prevents the sparse-checkout feature from interfering with other
>> +worktrees.
>
> I'm afraid that might be mis-parsed by future readers. Perhaps something
> like:
>
> The init subcommand also enables the `core.sparseCheckout` setting.
I like the paragraph below, but the sentence above is repeated from
the earlier paragraph.
> To avoid interfering with other worktrees, it first enables the
> `extensions.worktreeConfig` setting and makes sure to set the
> `core.sparseCheckout` setting in the worktree-specific config file.
>
>> +enum sparse_checkout_mode {
>> + MODE_NONE = 0,
>> + MODE_FULL = 1,
>> +};
>
> So MODE_FULL is "true" and MODE_NONE is "false". MODE_NONE seems
> confusing to me, but let's keep reading...
>
>> +
>> +static int sc_set_config(enum sparse_checkout_mode mode)
>> +{
>> + struct argv_array argv = ARGV_ARRAY_INIT;
>> +
>> + if (git_config_set_gently("extensions.worktreeConfig", "true")) {
>> + error(_("failed to set extensions.worktreeConfig setting"));
>> + return 1;
>> + }
>> +
>> + argv_array_pushl(&argv, "config", "--worktree",
>> "core.sparseCheckout", NULL);
>> +
>> + if (mode)
>> + argv_array_pushl(&argv, "true", NULL);
>> + else
>> + argv_array_pushl(&argv, "false", NULL);
>
> Wait, what? MODE_FULL is used to specify that you want a sparse
> checkout, and MODE_NONE is used to denote that you want a full (i.e.
> non-sparse) checkout? These are *very* confusing names.
I understand they are confusing, hopefully it makes more sense with
the cone mode later.
* NONE == "No patterns at all"
* FULL == "all patterns allowed"
* CONE == "only cone patterns" (appears later)
Since this is just an internal detail, what if I switched it to
* MODE_NO_PATTERNS
* MODE_ALL_PATTERNS
* MODE_CONE_PATTERNS
Would that make more sense?
>> +static int sparse_checkout_init(int argc, const char **argv)
>> +{
>> + struct pattern_list pl;
>> + char *sparse_filename;
>> + FILE *fp;
>> + int res;
>> +
>> + if (sc_set_config(MODE_FULL))
>> + return 1;
>
> Seems confusing here too.
>
>
> Everything else in the patch looks good, though.
Thanks,
-Stolee