On Thu, Sep 15, 2016 at 3:08 PM, Junio C Hamano <gits...@pobox.com> wrote:
> Brandon Williams <bmw...@google.com> writes:
>
>> 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

Reply via email to