Re: [RFC] extending pathspec support to submodules
- From
Stefan Beller <sbeller@google.com>
- Date
- Sep 15, 2016, 22:28 UTC
- Message-ID
- <CAGZ79kZJUQhY_bEi1G3zMYR2iGq5gosfVsBP_CFoaMydXP6QUw@mail.gmail.com>
- In-Reply-To
- <xmqqr38klst6.fsf@gitster.mtv.corp.google.com>
On Thu, Sep 15, 2016 at 3:08 PM, Junio C Hamano <gitster@pobox.com> wrote:
Show 21 quoted lines
> Brandon Williams <bmwill@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.Show 8 quoted lines
> 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