]> git.ipfire.org Git - thirdparty/git.git/commit - builtin/grep.c
grep: enable recurse-submodules to work on <tree> objects
authorBrandon Williams <bmwill@google.com>
Fri, 16 Dec 2016 19:03:21 +0000 (11:03 -0800)
committerJunio C Hamano <gitster@pobox.com>
Thu, 22 Dec 2016 19:47:33 +0000 (11:47 -0800)
commit74ed43711fd1cd7ce155d338f87ebe52cb74d9e2
tree3abc50be55697613432ff802730784d8fee088fd
parent0281e487fd913bd9a32a710f3109ff3002f3e4a9
grep: enable recurse-submodules to work on <tree> objects

Teach grep to recursively search in submodules when provided with a
<tree> object. This allows grep to search a submodule based on the state
of the submodule that is present in a commit of the super project.

When grep is provided with a <tree> object, the name of the object is
prefixed to all output.  In order to provide uniformity of output
between the parent and child processes the option `--parent-basename`
has been added so that the child can preface all of it's output with the
name of the parent's object instead of the name of the commit SHA1 of
the submodule. This changes output from the command
`git grep -e. -l --recurse-submodules HEAD` from:

      HEAD:file
      <commit sha1 of submodule>:sub/file

to:

      HEAD:file
      HEAD:sub/file

Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/git-grep.txt
builtin/grep.c
t/t7814-grep-recurse-submodules.sh
tree-walk.c