grep: fix "--quiet" overwriting current output

When grep is called with the --quiet option, the pager is initialized
despite not being used.  When the pager is "less", anything output by
previous commands and not ended with a newline is overwritten:

    $ echo -n aaa; echo bbb
    aaabbb
    $ echo -n aaa; git grep -q foo; echo bbb
    bbb

This can be worked around, for example, by making sure STDOUT is not a
TTY or more directly by setting git's pager to "cat":

    $ echo -n aaa; git grep -q foo > /dev/null; echo bbb
    aaabbb
    $ echo -n aaa; PAGER=cat git grep -q foo; echo bbb
    aaabbb

But prevent calling the pager in the first place, which would also
save an unnecessary fork().

Signed-off-by: Wilhelm Schuermann <wimschuermann@googlemail.com>
Reviewed-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Wilhelm Schuermann 2015-03-18 19:00:13 +01:00 committed by Junio C Hamano
parent 282616c72d
commit c2048f0b39

View file

@ -887,7 +887,7 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
}
}
if (!show_in_pager)
if (!show_in_pager && !opt.status_only)
setup_pager();
if (!use_index && (untracked || cached))