git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [RFC] extending pathspec support to submodules

From
Heiko Voigt <hvoigt@hvoigt.net>
Date
Sep 15, 2016, 11:57 UTC
Message-ID
<20160915115752.GA37903@book.hvoigt.net>
In-Reply-To
<1473897473-154528-1-git-send-email-bmwill@google.com>
Hi,
On Wed, Sep 14, 2016 at 04:57:53PM -0700, Brandon Williams wrote:
Show 15 quoted lines
> ---
> I've been trying to think through how we could potentially add pathspec support
> for --recurse-submodule options (for builtins like ls-files or grep down the
> line).  This is something that could be useful if the user supply's a pathspec
> that could match to a file in a submodule.  We could match the submodule to the
> pathspec and then fork the process to recursively run the command on the
> submodule which can be passed a modified pathspec.
> 
> For example with a pathspec 'sub/dir/a', where sub is a submodule in the root
> directory of the supermodule's repo, we could match 'sub' to that spec and then
> recursively call the git command with a pathspec of 'dir/a'.  The child process
> would then have the responsibility of matching 'dir/a' to files in its repo.
> 
> Does this seem like a reasonable feature to add? And if so are how is my
> initial approach at solving the problem?

The problem when you do that is that the child is not aware that it is actually run as a submodule process. E.g.

   git grep --recurse-submodules foobar -- sub/dir/a

would report back matches in 'dir/a' instead of 'sub/dir/a'. From the users perspective this will be confusing since she started the grep in the superproject.

So what I would suggest is that we make the childs aware of the fact that they are called from a superproject by passing a prefix when calling it. E.g. like this

   git grep --submodule-prefix=sub foobar -- sub/dir/a

Whether we pass the full or stripped path is now a matter of taste or ease of implementation, since we could either preprend or strip it in the child. But the important difference is that we have information about the original path.

Another approach could, of course, be to omit passing the prefix and parse the output of the child and try to substitute, paths but that seems quite error prone to me.

Cheers Heiko
Previous: Brandon WilliamsNext: Brandon Williams
Message 2 of 25 in “[RFC] extending pathspec support to submodules”
  1. Brandon WilliamsSep 14, 2016
  2. Heiko VoigtSep 15, 2016
  3. Brandon WilliamsSep 15, 2016
  4. Junio C HamanoSep 15, 2016
  5. Stefan BellerSep 15, 2016
  6. Heiko VoigtSep 16, 2016
  7. Brandon WilliamsSep 16, 2016
  8. ls-files: add pathspec matching for submodulesBrandon Williams, Sep 17, 2016
  9. Junio C HamanoSep 17, 2016
  10. Brandon WilliamsSep 18, 2016
  11. Junio C HamanoSep 19, 2016
  12. Brandon WilliamsSep 19, 2016
  13. Junio C HamanoSep 19, 2016
  14. Brandon WilliamsSep 19, 2016
  15. Junio C HamanoSep 19, 2016
  16. Brandon WilliamsSep 19, 2016
  17. Junio C HamanoSep 19, 2016
  18. Brandon WilliamsSep 19, 2016
  19. ls-files: add pathspec matching for submodulesBrandon Williams, Sep 19, 2016
  20. Junio C HamanoSep 19, 2016
  21. Brandon WilliamsSep 20, 2016
  22. Brandon WilliamsSep 20, 2016
  23. Junio C HamanoSep 21, 2016
  24. Junio C HamanoSep 21, 2016
  25. Junio C HamanoSep 19, 2016

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.