Re: [PATCH v4 2/4] submodule: update core.worktree using git-config

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Jul 21, 2016 at 12:04 AM, Stefan Beller <sbeller@xxxxxxxxxx> wrote:
>> diff --git a/submodule.c b/submodule.c
>> index abc2ac2..b912871 100644
>> --- a/submodule.c
>> +++ b/submodule.c
>> @@ -1128,7 +1128,9 @@ void connect_work_tree_and_git_dir(const char *work_tree, const char *git_dir)
>>  {
>>         struct strbuf file_name = STRBUF_INIT;
>>         struct strbuf rel_path = STRBUF_INIT;
>> +       struct strbuf path = STRBUF_INIT;
>>         const char *real_work_tree = xstrdup(real_path(work_tree));
>> +       struct child_process cp = CHILD_PROCESS_INIT;
>>
>>         /* Update gitfile */
>>         strbuf_addf(&file_name, "%s/.git", work_tree);
>> @@ -1136,13 +1138,17 @@ void connect_work_tree_and_git_dir(const char *work_tree, const char *git_dir)
>>                    relative_path(git_dir, real_work_tree, &rel_path));
>>
>>         /* Update core.worktree setting */
>> -       strbuf_reset(&file_name);
>> -       strbuf_addf(&file_name, "%s/config", git_dir);
>> -       git_config_set_in_file(file_name.buf, "core.worktree",
>> -                              relative_path(real_work_tree, git_dir,
>> -                                            &rel_path));
>> +       strbuf_addstr(&path, relative_path(real_work_tree, git_dir,
>> +                                          &rel_path));
>> +       cp.git_cmd = 1;
>> +       argv_array_pushl(&cp.args, "-C", work_tree, NULL);
>> +       argv_array_pushl(&cp.args, "--work-tree", ".", NULL);
>> +       argv_array_pushl(&cp.args, "config", "core.worktree", path.buf, NULL);
>> +       if (run_command(&cp) < 0)
>> +               die(_("failed to update core.worktree for %s"), git_dir);
>
> Do we need to make this conditional on the extensions.worktreeConfig
> variable, though? When I just run
>
>     git config --worktree . foo bar
> fatal: Per-worktree configuration requires extensions.worktreeConfig
> Please read section CONFIGURATION in `git help worktree` before
> enabling it.
>
> which would trigger the failure here?

It was intended, but I was probably just paranoid. The thinking back
then was, you are switching from "share whole config" to "not share
something". This should not be taken lightly and you should examine
your config file and decide what to share, before making the switch.
It's dangerous!

But then, if everything has been shared before (assuming there are
more than one worktree) and you are probably happy with it (or you
would have made done something to unshare), so it's probably good to
keep on sharing. Which means we can set extensions.worktreeConfig
automatically here (when "git config --worktree" is used) instead of
dying. We would need to move core.bare and core.worktree to main
worktree, but that's manageable.

So in short, you would not see this message in this context in future again.
-- 
Duy
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]