Re: [RFC PATCH 3/3] grep: add support for grepping in submodules

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Jens Lehmann <Jens.Lehmann@xxxxxx> writes:

> Hm, at a quick glance it might be much easier to copy argc & argv
> in cmd_grep() before parse_options() starts manipulating it.

Yes, I think that is a much saner direction to go.  Otherwise, you would
need to unparse grep boolean expressions as well.

A few more things to think about.

1. What does this mean:

    $ git grep --recursive -e frotz master next

It recurses into the submodule commits recorded in 'master' and 'next'
commits in the superproject, right?

How do the lines output from the above look like?  From the superproject,
we will get lines like these:

    master:t/README:  test_description='xxx test (option --frotz)
    master:t/README:  and tries to run git-ls-files with option --frotz.'

What if we have a submodule at git-gui in the superproject, and its README
has string frotz in it?  Should we label the submodule commit we find in
'master' of superproject as 'master' as well, even if it is not at the tip
of 'master' branch of the submodule?  Or do we get abbreviated hexadecimal
SHA-1 name?  IOW, would we see:

    master:git-gui/README: git-gui also knows frotz

or

    deadbeef:git-gui/README: git-gui also knows frotz

where "deadbeaf...." is what "git rev-parse master:git-gui" would give us
in the superproject?

I tend to think the former is preferable, but then most likely you would
need to pass not just submodule-prefix but the original ref name
(i.e. 'master') you started from down to the recursive one.

2. Now how would this work with pathspecs?

    $ git grep --recursive -e frotz -- dir/

This should look for the string in the named directory in the superproject
and if there are submodules in that directory, recurse into them as well,
right?

What pathspec, if any, will be in effect when we recurse into the
submodule at dir/sub?  Limiting to dir/ feels wrong, no?

3. Corollary.

Is it reasonable to expect that we will look into all shell scripts, both
in the superproject and in submodules, with this:

    $ git grep --recursive -e frotz -- '*.sh'

Oops?  What happened to the "we restrict the recursion using pathspec, and
we do not pass down the pathspec" that was suggested in 2.?

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]