format_commit_message: honor `color=auto` for `%C(auto)`
commitb15a3e005af07843116c73205742adfbab3d2e82
authorEdward Thomson <ethomson@edwardthomson.com>
Fri, 27 May 2016 03:46:10 +0000 (26 22:46 -0500)
committerJunio C Hamano <gitster@pobox.com>
Fri, 27 May 2016 18:24:54 +0000 (27 11:24 -0700)
treeac340c93c4cc06bf6ba73d0220f140d2f9f31240
parent0f8e831356d4f1a34baf46bb1a6b2d4c89ec9cb8
format_commit_message: honor `color=auto` for `%C(auto)`

git-log(1) documents that when specifying the `%C(auto)` format
placeholder will "turn on auto coloring on the next %placeholders
until the color is switched again."

However, when `%C(auto)` is used, the present implementation will turn
colors on unconditionally (even if the color configuration is turned off
for the current context - for example, `--no-color` was specified or the
color is `auto` and the output is not a tty).

Update `format_commit_one` to examine the current context when a format
string of `%C(auto)` is specified, which ensures that we will not
unconditionally write colors.  This brings that behavior in line with
the behavior of `%C(auto,<colorname>)`, and allows the user the ability
to specify that color should be displayed only when the output is a
tty.

Additionally, add a test for `%C(auto)` and update the existing tests
for `%C(auto,...)` as they were misidentified as being applicable to
`%C(auto)`.

Tests from Jeff King.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Edward Thomson <ethomson@edwardthomson.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
pretty.c
t/t6006-rev-list-format.sh