Thread (6 messages) flat view 6 messages, 2 authors, 2016-06-15

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

From: Johannes Sixt <hidden>
Date: 2016-06-15 22:54:14

Am 11.07.2012 22:06, schrieb Jens Lehmann:
Am 11.07.2012 21:10, schrieb Johannes Sixt:
quoted
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".
At this point we can be in a subdirectory of the worktree. With
cd_to_toplevel we move up in the directory hierarchy ("cd out"). Then a
relative $gitdir or $sm_path now points to the wrong directory. No?

-- Hannes
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help