git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Brandon Williams <bmwill@google.com>
To: Heiko Voigt <hvoigt@hvoigt.net>
Cc: git@vger.kernel.org, pclouds@gmail.com,
	Jens Lehmann <jens.lehmann@web.de>,
	Stefan Beller <sbeller@google.com>
Subject: Re: [RFC] extending pathspec support to submodules
Date: Thu, 15 Sep 2016 08:26:22 -0700	[thread overview]
Message-ID: <CAKoko1rtEydwbWoEq9MBW41qqa10Bm+x0d6zS+Bptk51RjMOMA@mail.gmail.com> (raw)
In-Reply-To: <20160915115752.GA37903@book.hvoigt.net>

On Thu, Sep 15, 2016 at 4:57 AM, Heiko Voigt <hvoigt@hvoigt.net> wrote:
>
> 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

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.

-Brandon

  reply	other threads:[~2016-09-15 15:26 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-09-14 23:57 [RFC] extending pathspec support to submodules Brandon Williams
2016-09-15 11:57 ` Heiko Voigt
2016-09-15 15:26   ` Brandon Williams [this message]
2016-09-15 22:08     ` Junio C Hamano
2016-09-15 22:28       ` Stefan Beller
2016-09-16  9:34         ` Heiko Voigt
2016-09-16 18:40           ` Brandon Williams
2016-09-17  0:59             ` [PATCH] ls-files: add pathspec matching for submodules Brandon Williams
2016-09-17  3:46               ` Junio C Hamano
2016-09-18 18:40                 ` Brandon Williams
2016-09-19 17:00                   ` Junio C Hamano
2016-09-19 17:26                     ` Brandon Williams
2016-09-19 18:04                       ` Junio C Hamano
2016-09-19 18:20                         ` Brandon Williams
2016-09-19 18:22                           ` Junio C Hamano
2016-09-19 18:30                             ` Brandon Williams
2016-09-19 18:34                               ` Junio C Hamano
2016-09-19 18:35                                 ` Brandon Williams
2016-09-19 18:52                                   ` [PATCH v2] " Brandon Williams
2016-09-19 23:21                                     ` Junio C Hamano
2016-09-20 16:30                                       ` Brandon Williams
2016-09-20 21:03                                         ` Brandon Williams
2016-09-21 17:12                                           ` Junio C Hamano
2016-09-21 17:49                                             ` Junio C Hamano
2016-09-19 18:18               ` [PATCH] " Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAKoko1rtEydwbWoEq9MBW41qqa10Bm+x0d6zS+Bptk51RjMOMA@mail.gmail.com \
    --to=bmwill@google.com \
    --cc=git@vger.kernel.org \
    --cc=hvoigt@hvoigt.net \
    --cc=jens.lehmann@web.de \
    --cc=pclouds@gmail.com \
    --cc=sbeller@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).