Re: [PATCH v2 2/9] setup: introduce startup_info->original_cwd
- From
Derrick Stolee <stolee@gmail.com>
- Date
- Nov 29, 2021, 17:43 UTC
- Message-ID
- <068b7faf-2ade-14a7-fee3-83fec26ae856@gmail.com>
- In-Reply-To
- <CABPp-BHStJ2x53cffJPb7miaxL2cKr0usgK13HxNDyYMQv11_g@mail.gmail.com>
On 11/29/2021 12:18 PM, Elijah Newren wrote:
Show 18 quoted lines
> On Mon, Nov 29, 2021 at 6:05 AM Derrick Stolee <stolee@gmail.com> wrote: >> >> On 11/25/2021 3:39 AM, Elijah Newren via GitGitGadget wrote: >>> From: Elijah Newren <newren@gmail.com> >> >>> @@ -866,6 +866,8 @@ int cmd_main(int argc, const char **argv) >>> >>> trace_command_performance(argv); >>> >>> + startup_info->original_cwd = xgetcwd(); >>> + >> >> I see this initial assignment in cmd_main()... > > It looks like you accidentally responded to v2 when there's a v3 > (something I occasionally do too). v3 changes this to put it in > common-main instead of here, as suggested by Ævar, but to answer the > question...
Yes, sorry about that. My inbox was delayed in showing me that a v3 existed until I was halfway through reviewing v2. (It then only showed me half of the patches from v3, so something was causing a delay.)
Show 30 quoted lines
>>> +static void setup_original_cwd(void)
>>> +{
>>> + struct strbuf tmp = STRBUF_INIT;
>>> + const char *worktree = NULL;
>>> + int offset = -1;
>>> +
>>> + /*
>>> + * startup_info->original_cwd wass set early on in cmd_main(), unless
>>> + * we're an auxiliary tool like git-remote-http or test-tool.
>>> + */
>>> + if (!startup_info->original_cwd)
>>> + return;
>>
>> ...which is assumed to be run before this method was called...
>>
>>> @@ -1330,6 +1378,7 @@ const char *setup_git_directory_gently(int *nongit_ok)
>>> setenv(GIT_PREFIX_ENVIRONMENT, "", 1);
>>> }
>>>
>>> + setup_original_cwd();
>>
>> ...here in setup_git_directory_gently().
>>
>> Why do we need that assignment in cmd_main()? Could we instead
>> let setup_original_cwd() do the initial assignment? Or is it
>> possible that a chdir has happened already before this point?
>
> In v1, I made that mistake. Then I realized that when users pass the
> -C option to git, there is a chdir() call immediately upon parsing of
> the -C option. So I had to move the strbuf_getcwd() call earlier.Ok. I wonder if we could setup_original_cwd() earlier than that parsing, but I'm sure you've already explored that option.
Thanks, -Stolee