Your patch is clearly better than mine. I'll let you take over this bug. Thanks for taking a deeper look into this, Albert Yale On Mon, Jan 23, 2012 at 12:52 PM, Thomas Rast <trast@xxxxxxxxxxxxxxx> wrote: > From: Albert Yale <surfingalbert@xxxxxxxxx> > > In threaded mode, git-grep emits file breaks (enabled with context, -W > and --break) into the accumulation buffers even if they are not > required. The output collection thread then uses skip_first_line to > skip the first such line in the output, which would otherwise be at > the very top. > > This is wrong when the user also specified -l/-L/-c, in which case > every line is relevant. While arguably giving these options together > doesn't make any sense, git-grep has always quietly accepted it. So > do not skip anything in these cases. > > Signed-off-by: Albert Yale <surfingalbert@xxxxxxxxx> > Signed-off-by: Thomas Rast <trast@xxxxxxxxxxxxxxx> > --- > >> Reviewed-by: Thomas Rast <trast@xxxxxxxxxxxxxxx> > > Please don't. I didn't actually read the patch or look at the code, > or say so, and you're claiming I did. I was working purely from the > commit message. > >> As for creating a test, I'm unfamiliar with the testing procedure for >> git-core. A "how to" in the "Documentation" folder would be very >> useful in that regard. > > Well, there's t/README. > > > Here's a patch that also does -c and has tests. Placing them was more > finicky than I hoped; the list of files in the repo varies wildly > across the test set. It also exploits knowledge that git-ls-files > order is the same as 'git grep -l' order, which might not be > appropriate. > > > builtin/grep.c | 6 ++++-- > t/t7810-grep.sh | 22 ++++++++++++++++++++++ > 2 files changed, 26 insertions(+), 2 deletions(-) > > diff --git a/builtin/grep.c b/builtin/grep.c > index 9ce064a..1120b9f 100644 > --- a/builtin/grep.c > +++ b/builtin/grep.c > @@ -1034,8 +1034,10 @@ int cmd_grep(int argc, const char **argv, const char *prefix) > > #ifndef NO_PTHREADS > if (use_threads) { > - if (opt.pre_context || opt.post_context || opt.file_break || > - opt.funcbody) > + if (!(opt.name_only || opt.unmatch_name_only || > + opt.count) > + && (opt.pre_context || opt.post_context || > + opt.file_break || opt.funcbody)) > skip_first_line = 1; > start_threads(&opt); > } > diff --git a/t/t7810-grep.sh b/t/t7810-grep.sh > index 7ba5b16..75f4716 100755 > --- a/t/t7810-grep.sh > +++ b/t/t7810-grep.sh > @@ -246,6 +246,28 @@ do > done > > cat >expected <<EOF > +file > +EOF > +test_expect_success 'grep -l -C' ' > + git grep -l -C1 foo >actual && > + test_cmp expected actual > +' > + > +cat >expected <<EOF > +file:5 > +EOF > +test_expect_success 'grep -l -C' ' > + git grep -c -C1 foo >actual && > + test_cmp expected actual > +' > + > +test_expect_success 'grep -L -C' ' > + git ls-files >expected && > + git grep -L -C1 nonexistent_string >actual && > + test_cmp expected actual > +' > + > +cat >expected <<EOF > file:foo mmap bar_mmap > EOF > > -- > 1.7.9.rc2.215.gd9e83 > -- 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