Re: [PATCH] submodules: don't stumble over symbolic links when cloning recursively
From: Jens Lehmann <hidden>
Date: 2016-06-15 22:54:14
Am 11.07.2012 21:10, schrieb Johannes Sixt:
Am 11.07.2012 20:11, schrieb Jens Lehmann:quoted
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....quoted
- 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 ...
quoted
+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.