On Thu, Sep 15, 2016 at 3:08 PM, Junio C Hamano [off-list ref] wrote:
Brandon Williams [off-list ref] writes:
quoted
You're right that seems like the best course of action and it already falls
inline with what I did with a first patch to ls-files to support submodules.
In that patch I did exactly as you suggest and pass in the prefix to the
submodule and make the child responsible for prepending the prefix to all of
its output. This way we can simply pass through the whole pathspec (as apposed
to my original idea of stripping the prefix off the pathspec prior to passing
it to the child...which can get complicated with wild characters) to the
childprocess and when checking if a file matches the pathspec we can check if
the prefix + file path matches.
That's brilliant. A few observations.
* With that change to tell the command that is spawned in a
submodule directory where the submodule repository is in the
context of the top-level superproject _and_ require it to take a
pathspec as relative to the top-level superproject, you no longer
worry about having to find where to cut the pathspec given at the
top-level to adjust it for the submodule's context. That may
simplify things.
I wonder how this plays together with the prefix in the superproject, e.g.
cd super/unrelated-path
# when invoking a git command the internal prefix is "unrelated-path/"
git ls-files ../submodule-*
# a submodule in submodule-A would be run in submodule-A
# with a superproject prefix of super/ ? but additionally we nned
to know we're
# not at the root of the superproject.
So we may have to rethink what this option name should be. "You
are running in a repository that is used as a submodule in a
larger context, which has the submodule at this path" is what the
option tells the command; if any existing command already has
such an option, we should use it. If we are inventing one,
perhaps "--submodule-path" (I didn't check if there are existing
options that sound similar to it and mean completely different
things, in which case that name is not usable)?
Would it make sense to add the '--submodule-path' to a more generic
part of the code? It's not just ls-files/grep that have to solve exactly this
problem. Up to now we just did not go for those commands, though.
Thanks