git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] submodules: don't stumble over symbolic links when cloning recursively

From
Jens Lehmann <jens.lehmann@web.de>
Date
Jul 11, 2012, 20:06 UTC
Message-ID
<4FFDDCAD.5080001@web.de>
In-Reply-To
<4FFDCFA4.9060602@kdbg.org>
Am 11.07.2012 21:10, schrieb Johannes Sixt:
Show 20 quoted lines
> Am 11.07.2012 20:11, schrieb Jens Lehmann:
>> Since 69c305178 (submodules: refactor computation of relative gitdir path)
>> cloning a submodule recursively fails for recursive submodules when a
>> symbolic link is part of the path to the work tree of the superproject.
>>
>> This happens when module_clone() tries to find the relative paths between
>> work tree and git dir. When a symbolic link in current $PWD points to a
>> directory in a different level determining the number of "../" needed to
>> traverse to the superprojects work tree leads to a wrong result.
>>
>> As there is no portable way to say "pwd -P" use cd_to_toplevel to remove
>> the link from the pwd, which fixes this problem.
> ...
>> -	a=$(cd "$gitdir" && pwd)/
>> -	b=$(cd "$sm_path" && pwd)/
>> +	a=$(cd_to_toplevel && cd "$gitdir" && pwd)/
>> +	b=$(cd_to_toplevel && cd "$sm_path" && pwd)/
> 
> But if you cd out, how can it be correct not to cd in again if $gitdir
> and/or $sm_path are relative?

I'm not sure what you mean by "cd out", but the two "cd_to_toplevel" make sure that when $gitdir or $sm_path are relative the symbolic link gets removed from the output of pwd. So it's rather "cd into the path where the symlink is resolved".

> And if $gitdir and/or $sm_path are absolute, how can the earlier
> cd_to_toplevel make a difference?

Then it doesn't, but $sm_path is always relative while $gitdir is sometimes (in the superproject it returns ".git"). Just drop either of the "cd_to_toplevel" and run the test ;-)

But it looks like the commit message could use some tuning ...
>> +test_expect_success 'submodule update can handle symbolic links in pwd' '
> 
> Please add a SYMLINKS prerequisite.
Oops. Thanks, will add that.
Will wait some time for other comments before preparing v2.
Previous: Johannes SixtNext: Johannes Sixt
Message 3 of 6 in “submodules: don't stumble over symbolic links when cloning recursively”
  1. submodules: don't stumble over symbolic links when cloning recursivelyJens Lehmann, Jul 11, 2012
  2. Johannes SixtJul 11, 2012
  3. Jens LehmannJul 11, 2012
  4. Johannes SixtJul 11, 2012
  5. Jens LehmannJul 11, 2012
  6. Johannes SixtJul 12, 2012

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.