Re: [PATCH] grep --no-index: allow use of "git grep" outside a git repository
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jan 18, 2010, 03:35 UTC
- Message-ID
- <7v8wbwultw.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <20100118015140.GB6831@coredump.intra.peff.net>
Jeff King <peff@peff.net> writes:
> Agreed. That is the most common log grep pattern for me (author + grep), > and I always want all-match. I see from later in the thread, though, > that implementing it is not as straightforward as we might hope.
I haven't looked at the codepath for quite some time but I have a feeling that it probably won't be too bad.
It just won't be as simple as flipping the all_match bit with a one-liner.
Before calling compile_grep_patterns() in revision.c::setup_revisions(), we probably would want to massage revs->grep_filter to result in the desired grep expression parse tree, i.e. from
GREP_PATTERN_HEAD("^author .*davvid")
GREP_PATTERN_HEAD("^committer .*gitster")
GREP_PATTERN_BODY("difftool")
GREP_PATTERN_BODY("mergetool")to
GREP_PATTERN_HEAD("^author .*davvid")
GREP_PATTERN_HEAD("^committer .*gitster")
GREP_NODE_OR(
GREP_PATTERN_BODY("difftool")
GREP_PATTERN_BODY("mergetool")
)