Re: [PATCH] grep: do not do external grep on skip-worktree entries
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jan 11, 2010, 16:22 UTC
- Message-ID
- <7vtyusr4r7.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <alpine.LFD.2.00.1001110748560.13040@localhost.localdomain>
Linus Torvalds <torvalds@linux-foundation.org> writes:
Show 9 quoted lines
> The bad news is that you broke multi-line greps: > > git grep --no-ext-grep -2 qwerty.*as > > results in: > > drivers/char/keyboard.c-unsigned char kbd_sysrq_xlate[KEY_MAX + 1] = > drivers/char/keyboard.c- "\000\0331234567890-=\177\t" /* 0x00 - 0x0f */ > drivers/char/keyboard.c: "qwertyuiop[]\r\000as" /* 0x10 - 0x1f */
Meh. I checked pre-context codepath before sending the patch and was very satisfied that René did the right thing in 49de321 (grep: handle pre context lines on demand, 2009-07-02), but somehow forgot about the post context codepath.
An ObviouslyRightThing fix is this two-liner. We shouldn't lookahead if we want to do something more than just skipping when we see an unmatch for the line we are currently looking at.
grep.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/grep.c b/grep.c index 940e200..ac0ce0b 100644 --- a/grep.c +++ b/grep.c @@ -719,6 +719,8 @@ static int grep_buffer_1(struct grep_opt *opt, const char *name, int hit; if (try_lookahead + && !(last_hit + && lno <= last_hit + opt->post_context) && look_ahead(opt, &left, &lno, &bol)) break; eol = end_of_line(bol, &left);