Re: [PATCH 1/5] submodule foreach: correct '$path' in nested submodules from a subdirectory
- From
- Jonathan Tan <jonathantanmy@google.com>
- Date
- May 4, 2018, 21:03 UTC
- Message-ID
- <20180504140346.f088452c4a73539ef140a1da@google.com>
- In-Reply-To
- <CAGZ79kYq0Qs7tvG0NEYwKHeYxF_tN1-eZA2skdjCiDZ4JkyuRQ@mail.gmail.com>
On Thu, 3 May 2018 11:12:27 -0700 Stefan Beller <sbeller@google.com> wrote:
Show 13 quoted lines
> >> 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'.
> >
> > What is "the", and why is it quoted?
>
> because it is unclear what is emphasizes.
> It could be the intermediate (direct) superproject, or it
> could be the topmost superproject (where the command was run from).
>
> Just having "the", makes it unclear which of both it refers to.Ah, I see - so s/'the'/'the superproject'/
> >> (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'.
And here, s/'the' superproject/'the superproject'/
Show 6 quoted lines
> > Same comment about "the", and I think s/toplevel, which is the > > superproject in which the original command was invoked/outermost > > superproject/. > > The outermost superproject may not be the one you invoke the > command in.
Good point. Maybe "the superproject the original command was run from", but I'm open to a better name. So I would write the beginning as follows:
<your first paragraph starting with "When running">
Also, in git-submodule.txt, $path is documented to be the "name of the submodule directory relative to the superproject", but "the superproject" is ambiguous.
To resolve both these issues, we could:
(a) Change "the superproject" to "its immediate superproject", so
$path would be "nested" instead of "../nested".
(b) Change "the superproject" to "the superproject the original
command was run from", so $path would be "sub/nested" instead of
"../nested".
(c) Change "the superproject" to "the directory the original command
was run from", so $path would be "../sub/nested" instead of
"../nested".Going back to the original patch:
Show 5 quoted lines
> 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 > the path.
The (c) behavior was never really introduced, right? 091a6eb0fe attempted to introduce (c), but it didn't work when --recursive was specified.