On 03/05/18 01:53, Stefan Beller wrote: > From: Prathamesh Chavan <pc44800@xxxxxxxxx> > > When running 'git submodule foreach --recursive' from a subdirectory of > your repository, nested submodules get a bogus value for $path: > For a submodule 'sub' that contains a nested submodule 'nested', > running 'git -C dir submodule foreach echo $path' from the root of the > superproject would report path='../nested' for the nested submodule. > The first part '../' is derived from the logic computing the relative > path from $pwd to the root of the superproject. The second part is the > submodule path inside the submodule. This value is of little use and is > hard to document. > > There are three different possible solutions that have more value: > (a) The path value is documented as the path from the toplevel of the > superproject to the mount point of the submodule. If 'the' refers to > the superproject holding this submodule ('sub' holding 'nested'), > the path would be expected to be path='nested'. > (b) In case 'the' superproject is referring to the toplevel, which > is the superproject in which the original command was invoked, > then path is expected to be path='sub/nested'. > (c) The documentation explains $path as [...] "relative to the > superproject", following 091a6eb0fe (submodule: drop the > top-level requirement, 2013-06-16), such that the nested submodule > would be expected as path='../sub/nested', when "the" superproject > is the superproject, where the command was run from > (d) or the value of path='nested' is expected if we take the > intermediate superproject into account. [This is the same as > (a); it highlights that the documentation is not clear, but > technically correct if we were to revert 091a6eb0fe.] > > The behavior for (c) was introduced in 091a6eb0fe (submodule: drop the > top-level requirement, 2013-06-16) the intent for $path seemed to be > relative to $cwd to the submodule worktree, but that did not work for > nested submodules, as the intermittent submodules were not included in ----------------------------^^^^^^^^^^^^ intermediate ATB, Ramsay Jones