]> git.ipfire.org Git - thirdparty/git.git/commit - builtin/grep.c
grep: fix "--quiet" overwriting current output
authorWilhelm Schuermann <wimschuermann@googlemail.com>
Wed, 18 Mar 2015 18:00:13 +0000 (19:00 +0100)
committerJunio C Hamano <gitster@pobox.com>
Thu, 19 Mar 2015 18:54:03 +0000 (11:54 -0700)
commitc2048f0b394fc5d5644956481b39f3d099cbe51c
tree372ff4bcf147f2797dea4b22b2e5fa4827df1c17
parent282616c72d1d08a77ca4fe1186cb708c38408d87
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>
builtin/grep.c