threads / bug / 41874

[BUG] `git submodule update --init --recursive` stores gitdir in full path into `.git` of nested submodules

Subject: [BUG] `git submodule update --init --recursive` stores gitdir in full path into `.git` of nested submodules

## tl;dr

4 messages between Mar 30, 2016 and Mar 30, 2016.

replies: 3people: 3as markdown or json

Norio Nomura· Mar 30, 2016, 09:03 UTC · lore
Hi,

`git submodule update --init --recursive` stores `gitdir` in full path into `.git` of nested submodules. So, working directory is not portable to another directory.

On following example, `Carthage/Checkouts/Quick/Externals/Nimble/` is nested submodule and `Carthage/Checkouts/Quick/Externals/Nimble/.git` contains full path. https://gist.github.com/norio-nomura/17ce4bdf0151185e77d9b1fcfb5a469d

Thanks, -- Norio Nomura @norio_nomura

Stefan Beller· Mar 30, 2016, 16:05 UTC · re: Norio Nomura · lore

Re: [BUG] `git submodule update --init --recursive` stores gitdir in full path into `.git` of nested submodules

On Wed, Mar 30, 2016 at 2:03 AM, Norio Nomura <norio.nomura@gmail.com> wrote:
> Hi,
>
> `git submodule update --init --recursive` stores `gitdir` in full path into `.git` of nested submodules.
> So, working directory is not portable to another directory.

Are you reporting a regression bug? (Is that a new thing or has it always been that way and you just discover that it is unfortunate?) Which versions did you test with?

Show 12 quoted lines
>
> On following example, `Carthage/Checkouts/Quick/Externals/Nimble/` is nested submodule and `Carthage/Checkouts/Quick/Externals/Nimble/.git` contains full path.
> https://gist.github.com/norio-nomura/17ce4bdf0151185e77d9b1fcfb5a469d
>
> Thanks,
> --
> Norio Nomura @norio_nomura
>
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
Stefan Beller· Mar 30, 2016, 17:24 UTC · re: Stefan Beller · lore

Re: [BUG] `git submodule update --init --recursive` stores gitdir in full path into `.git` of nested submodules

On Wed, Mar 30, 2016 at 9:05 AM, Stefan Beller <sbeller@google.com> wrote:
Show 9 quoted lines
> On Wed, Mar 30, 2016 at 2:03 AM, Norio Nomura <norio.nomura@gmail.com> wrote:
>> Hi,
>>
>> `git submodule update --init --recursive` stores `gitdir` in full path into `.git` of nested submodules.
>> So, working directory is not portable to another directory.
>
> Are you reporting a regression bug? (Is that a new thing or has it
> always been that way and you just discover that it is unfortunate?)
> Which versions did you test with?

➜ 15:34:32 git:(master) git --version git version 2.8.0

at the end of your gist. The same happens when using 2.7.4, it doesn't happen when using 2.6.6 though.

It turns out ee8838d (2015-09-08, submodule: rewrite `module_clone` shell function in C) broke it.

I'll look into fixing it.

Thanks, Stefan

Show 13 quoted lines
>
>>
>> On following example, `Carthage/Checkouts/Quick/Externals/Nimble/` is nested submodule and `Carthage/Checkouts/Quick/Externals/Nimble/.git` contains full path.
>> https://gist.github.com/norio-nomura/17ce4bdf0151185e77d9b1fcfb5a469d
>>
>> Thanks,
>> --
>> Norio Nomura @norio_nomura
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe git" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
Junio C Hamano· Mar 30, 2016, 20:54 UTC · re: Stefan Beller · lore

Re: [BUG] `git submodule update --init --recursive` stores gitdir in full path into `.git` of nested submodules

Stefan Beller <sbeller@google.com> writes:
Show 22 quoted lines
> On Wed, Mar 30, 2016 at 9:05 AM, Stefan Beller <sbeller@google.com> wrote:
>> On Wed, Mar 30, 2016 at 2:03 AM, Norio Nomura <norio.nomura@gmail.com> wrote:
>>> Hi,
>>>
>>> `git submodule update --init --recursive` stores `gitdir` in full path into `.git` of nested submodules.
>>> So, working directory is not portable to another directory.
>>
>> Are you reporting a regression bug? (Is that a new thing or has it
>> always been that way and you just discover that it is unfortunate?)
>> Which versions did you test with?
>
> ➜  15:34:32 git:(master) git --version
> git version 2.8.0
>
> at the end of your gist.
> The same happens when using 2.7.4, it doesn't happen when using 2.6.6 though.
>
> It turns out ee8838d (2015-09-08, submodule: rewrite `module_clone`
> shell function in C)
> broke it.
>
> I'll look into fixing it.
Thanks.

This may be an unrelated tangent, but somewhere in "submodule init" codepath seem to turn paths into absolute too aggressively. Merging your recent "path related fix" to 'pu' seems to break some test by showing absolute paths when the test expects to see relative ones.

← back to recent threads