Skip to content

Commit

Permalink
Merge branch 'jk/ui-color-always-to-auto-maint' into jk/ui-color-alwa…
Browse files Browse the repository at this point in the history
…ys-to-auto

* jk/ui-color-always-to-auto-maint:
  color: make "always" the same as "auto" in config
  provide --color option for all ref-filter users
  t3205: use --color instead of color.branch=always
  t3203: drop "always" color test
  t6006: drop "always" color config tests
  t7502: use diff.noprefix for --verbose test
  t7508: use test_terminal for color output
  t3701: use test-terminal to collect color output
  t4015: prefer --color to -c color.diff=always
  test-terminal: set TERM=vt100
  • Loading branch information
gitster committed Oct 4, 2017
2 parents 3c788e7 + 6be4595 commit aebd235
Show file tree
Hide file tree
Showing 19 changed files with 101 additions and 99 deletions.
35 changes: 17 additions & 18 deletions Documentation/config.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1058,10 +1058,10 @@ clean.requireForce::

color.branch::
A boolean to enable/disable color in the output of
linkgit:git-branch[1]. May be set to `always`,
`false` (or `never`) or `auto` (or `true`), in which case colors are used
only when the output is to a terminal. If unset, then the
value of `color.ui` is used (`auto` by default).
linkgit:git-branch[1]. May be set to `false` (or `never`) to
disable color entirely, `auto` (or `true` or `always`) in which
case colors are used only when the output is to a terminal. If
unset, then the value of `color.ui` is used (`auto` by default).

color.branch.<slot>::
Use customized color for branch coloration. `<slot>` is one of
Expand All @@ -1072,12 +1072,11 @@ color.branch.<slot>::

color.diff::
Whether to use ANSI escape sequences to add color to patches.
If this is set to `always`, linkgit:git-diff[1],
If this is set to `true` or `auto`, linkgit:git-diff[1],
linkgit:git-log[1], and linkgit:git-show[1] will use color
for all patches. If it is set to `true` or `auto`, those
commands will only use color when output is to the terminal.
If unset, then the value of `color.ui` is used (`auto` by
default).
when output is to the terminal. The value `always` is a
historical synonym for `auto`. If unset, then the value of
`color.ui` is used (`auto` by default).
+
This does not affect linkgit:git-format-patch[1] or the
'git-diff-{asterisk}' plumbing commands. Can be overridden on the
Expand Down Expand Up @@ -1141,12 +1140,12 @@ color.grep.<slot>::
--

color.interactive::
When set to `always`, always use colors for interactive prompts
When set to `true` or `auto`, use colors for interactive prompts
and displays (such as those used by "git-add --interactive" and
"git-clean --interactive"). When false (or `never`), never.
When set to `true` or `auto`, use colors only when the output is
to the terminal. If unset, then the value of `color.ui` is
used (`auto` by default).
"git-clean --interactive") when the output is to the terminal.
When false (or `never`), never show colors. The value `always`
is a historical synonym for `auto`. If unset, then the value of
`color.ui` is used (`auto` by default).

color.interactive.<slot>::
Use customized color for 'git add --interactive' and 'git clean
Expand Down Expand Up @@ -1193,10 +1192,10 @@ color.ui::
configuration to set a default for the `--color` option. Set it
to `false` or `never` if you prefer Git commands not to use
color unless enabled explicitly with some other configuration
or the `--color` option. Set it to `always` if you want all
output not intended for machine consumption to use color, to
`true` or `auto` (this is the default since Git 1.8.4) if you
want such output to use color when written to the terminal.
or the `--color` option. Set it to `true` or `auto` to enable
color when output is written to the terminal (this is also the
default since Git 1.8.4). The value `always` is a historical
synonym for `auto`.

column.ui::
Specify whether supported commands should output in columns.
Expand Down
5 changes: 5 additions & 0 deletions Documentation/git-for-each-ref.txt
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,11 @@ OPTIONS
`xx`; for example `%00` interpolates to `\0` (NUL),
`%09` to `\t` (TAB) and `%0a` to `\n` (LF).

--color[=<when>]:
Respect any colors specified in the `--format` option. The
`<when>` field must be one of `always`, `never`, or `auto` (if
`<when>` is absent, behave as if `always` was given).

--shell::
--perl::
--python::
Expand Down
5 changes: 5 additions & 0 deletions Documentation/git-tag.txt
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,11 @@ options for details.
variable if it exists, or lexicographic order otherwise. See
linkgit:git-config[1].

--color[=<when>]:
Respect any colors specified in the `--format` option. The
`<when>` field must be one of `always`, `never`, or `auto` (if
`<when>` is absent, behave as if `always` was given).

-i::
--ignore-case::
Sorting and filtering tags are case insensitive.
Expand Down
1 change: 1 addition & 0 deletions builtin/for-each-ref.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ int cmd_for_each_ref(int argc, const char **argv, const char *prefix)
OPT_GROUP(""),
OPT_INTEGER( 0 , "count", &maxcount, N_("show only <n> matched refs")),
OPT_STRING( 0 , "format", &format.format, N_("format"), N_("format to use for the output")),
OPT__COLOR(&format.use_color, N_("respect format colors")),
OPT_CALLBACK(0 , "sort", sorting_tail, N_("key"),
N_("field name to sort on"), &parse_opt_ref_sorting),
OPT_CALLBACK(0, "points-at", &filter.points_at,
Expand Down
1 change: 1 addition & 0 deletions builtin/tag.c
Original file line number Diff line number Diff line change
Expand Up @@ -411,6 +411,7 @@ int cmd_tag(int argc, const char **argv, const char *prefix)
},
OPT_STRING( 0 , "format", &format.format, N_("format"),
N_("format to use for the output")),
OPT__COLOR(&format.use_color, N_("respect format colors")),
OPT_BOOL('i', "ignore-case", &icase, N_("sorting and filtering are case insensitive")),
OPT_END()
};
Expand Down
2 changes: 1 addition & 1 deletion color.c
Original file line number Diff line number Diff line change
Expand Up @@ -308,7 +308,7 @@ int git_config_colorbool(const char *var, const char *value)
if (!strcasecmp(value, "never"))
return 0;
if (!strcasecmp(value, "always"))
return 1;
return var ? GIT_COLOR_AUTO : 1;
if (!strcasecmp(value, "auto"))
return GIT_COLOR_AUTO;
}
Expand Down
8 changes: 1 addition & 7 deletions t/t3203-branch-output.sh
Original file line number Diff line number Diff line change
Expand Up @@ -253,13 +253,7 @@ test_expect_success '%(color) omitted without tty' '
'

test_expect_success TTY '%(color) present with tty' '
test_terminal env TERM=vt100 git branch $color_args >actual.raw &&
test_decode_color <actual.raw >actual &&
test_cmp expect.color actual
'

test_expect_success 'color.branch=always overrides auto-color' '
git -c color.branch=always branch $color_args >actual.raw &&
test_terminal git branch $color_args >actual.raw &&
test_decode_color <actual.raw >actual &&
test_cmp expect.color actual
'
Expand Down
5 changes: 2 additions & 3 deletions t/t3205-branch-color.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ test_expect_success 'set up some sample branches' '
# choose non-default colors to make sure config
# is taking effect
test_expect_success 'set up some color config' '
git config color.branch always &&
git config color.branch.local blue &&
git config color.branch.remote yellow &&
git config color.branch.current cyan
Expand All @@ -24,7 +23,7 @@ test_expect_success 'regular output shows colors' '
<BLUE>other<RESET>
<YELLOW>remotes/origin/master<RESET>
EOF
git branch -a >actual.raw &&
git branch --color -a >actual.raw &&
test_decode_color <actual.raw >actual &&
test_cmp expect actual
'
Expand All @@ -36,7 +35,7 @@ test_expect_success 'verbose output shows colors' '
<BLUE>other <RESET> $oid foo
<YELLOW>remotes/origin/master<RESET> $oid foo
EOF
git branch -v -a >actual.raw &&
git branch --color -v -a >actual.raw &&
test_decode_color <actual.raw >actual &&
test_cmp expect actual
'
Expand Down
18 changes: 13 additions & 5 deletions t/t3701-add-interactive.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

test_description='add -i basic tests'
. ./test-lib.sh
. "$TEST_DIRECTORY"/lib-terminal.sh

if ! test_have_prereq PERL
then
Expand Down Expand Up @@ -380,14 +381,11 @@ test_expect_success 'patch mode ignores unmerged entries' '
test_cmp expected diff
'

test_expect_success 'diffs can be colorized' '
test_expect_success TTY 'diffs can be colorized' '
git reset --hard &&
# force color even though the test script has no terminal
test_config color.ui always &&
echo content >test &&
printf y | git add -p >output 2>&1 &&
printf y | test_terminal git add -p >output 2>&1 &&
# We do not want to depend on the exact coloring scheme
# git uses for diffs, so just check that we saw some kind of color.
Expand Down Expand Up @@ -485,4 +483,14 @@ test_expect_success 'hunk-editing handles custom comment char' '
git diff --exit-code
'

test_expect_success 'add -p works even with color.ui=always' '
git reset --hard &&
echo change >>file &&
test_config color.ui always &&
echo y | git add -p &&
echo file >expect &&
git diff --cached --name-only >actual &&
test_cmp expect actual
'

test_done
28 changes: 14 additions & 14 deletions t/t4015-diff-whitespace.sh
Original file line number Diff line number Diff line change
Expand Up @@ -820,7 +820,7 @@ test_expect_success 'diff that introduces a line with only tabs' '
echo "test" >x &&
git commit -m "initial" x &&
echo "{NTN}" | tr "NT" "\n\t" >>x &&
git -c color.diff=always diff | test_decode_color >current &&
git diff --color | test_decode_color >current &&
cat >expected <<-\EOF &&
<BOLD>diff --git a/x b/x<RESET>
Expand Down Expand Up @@ -850,7 +850,7 @@ test_expect_success 'diff that introduces and removes ws breakages' '
echo "2. and a new line "
} >x &&
git -c color.diff=always diff |
git diff --color |
test_decode_color >current &&
cat >expected <<-\EOF &&
Expand Down Expand Up @@ -922,50 +922,50 @@ test_expect_success 'ws-error-highlight test setup' '

test_expect_success 'test --ws-error-highlight option' '
git -c color.diff=always diff --ws-error-highlight=default,old |
git diff --color --ws-error-highlight=default,old |
test_decode_color >current &&
test_cmp expect.default-old current &&
git -c color.diff=always diff --ws-error-highlight=all |
git diff --color --ws-error-highlight=all |
test_decode_color >current &&
test_cmp expect.all current &&
git -c color.diff=always diff --ws-error-highlight=none |
git diff --color --ws-error-highlight=none |
test_decode_color >current &&
test_cmp expect.none current
'

test_expect_success 'test diff.wsErrorHighlight config' '
git -c color.diff=always -c diff.wsErrorHighlight=default,old diff |
git -c diff.wsErrorHighlight=default,old diff --color |
test_decode_color >current &&
test_cmp expect.default-old current &&
git -c color.diff=always -c diff.wsErrorHighlight=all diff |
git -c diff.wsErrorHighlight=all diff --color |
test_decode_color >current &&
test_cmp expect.all current &&
git -c color.diff=always -c diff.wsErrorHighlight=none diff |
git -c diff.wsErrorHighlight=none diff --color |
test_decode_color >current &&
test_cmp expect.none current
'

test_expect_success 'option overrides diff.wsErrorHighlight' '
git -c color.diff=always -c diff.wsErrorHighlight=none \
diff --ws-error-highlight=default,old |
git -c diff.wsErrorHighlight=none \
diff --color --ws-error-highlight=default,old |
test_decode_color >current &&
test_cmp expect.default-old current &&
git -c color.diff=always -c diff.wsErrorHighlight=default \
diff --ws-error-highlight=all |
git -c diff.wsErrorHighlight=default \
diff --color --ws-error-highlight=all |
test_decode_color >current &&
test_cmp expect.all current &&
git -c color.diff=always -c diff.wsErrorHighlight=all \
diff --ws-error-highlight=none |
git -c diff.wsErrorHighlight=all \
diff --color --ws-error-highlight=none |
test_decode_color >current &&
test_cmp expect.none current
Expand Down
2 changes: 1 addition & 1 deletion t/t4202-log.sh
Original file line number Diff line number Diff line change
Expand Up @@ -750,7 +750,7 @@ test_expect_success 'log.decorate config parsing' '
'

test_expect_success TTY 'log output on a TTY' '
git log --oneline --decorate >expect.short &&
git log --color --oneline --decorate >expect.short &&
test_terminal git log --oneline >actual &&
test_cmp expect.short actual
Expand Down
23 changes: 6 additions & 17 deletions t/t6006-rev-list-format.sh
Original file line number Diff line number Diff line change
Expand Up @@ -208,29 +208,13 @@ do
has_no_color actual
'

test_expect_success "$desc enables colors for color.diff" '
git -c color.diff=always log --format=$color -1 >actual &&
has_color actual
'

test_expect_success "$desc enables colors for color.ui" '
git -c color.ui=always log --format=$color -1 >actual &&
has_color actual
'

test_expect_success "$desc respects --color" '
git log --format=$color -1 --color >actual &&
has_color actual
'

test_expect_success "$desc respects --no-color" '
git -c color.ui=always log --format=$color -1 --no-color >actual &&
has_no_color actual
'

test_expect_success TTY "$desc respects --color=auto (stdout is tty)" '
test_terminal env TERM=vt100 \
git log --format=$color -1 --color=auto >actual &&
test_terminal git log --format=$color -1 --color=auto >actual &&
has_color actual
'

Expand All @@ -241,6 +225,11 @@ do
has_no_color actual
)
'

test_expect_success TTY "$desc respects --no-color" '
test_terminal git log --format=$color -1 --no-color >actual &&
has_no_color actual
'
done

test_expect_success '%C(always,...) enables color even without tty' '
Expand Down
7 changes: 3 additions & 4 deletions t/t6300-for-each-ref.sh
Original file line number Diff line number Diff line change
Expand Up @@ -425,8 +425,7 @@ test_expect_success 'set up color tests' '
'

test_expect_success TTY '%(color) shows color with a tty' '
test_terminal env TERM=vt100 \
git for-each-ref --format="$color_format" >actual.raw &&
test_terminal git for-each-ref --format="$color_format" >actual.raw &&
test_decode_color <actual.raw >actual &&
test_cmp expected.color actual
'
Expand All @@ -436,8 +435,8 @@ test_expect_success '%(color) does not show color without tty' '
test_cmp expected.bare actual
'

test_expect_success 'color.ui=always can override tty check' '
git -c color.ui=always for-each-ref --format="$color_format" >actual.raw &&
test_expect_success '--color can override tty check' '
git for-each-ref --color --format="$color_format" >actual.raw &&
test_decode_color <actual.raw >actual &&
test_cmp expected.color actual
'
Expand Down
6 changes: 3 additions & 3 deletions t/t7004-tag.sh
Original file line number Diff line number Diff line change
Expand Up @@ -1907,13 +1907,13 @@ test_expect_success '%(color) omitted without tty' '
'

test_expect_success TTY '%(color) present with tty' '
test_terminal env TERM=vt100 git tag $color_args >actual.raw &&
test_terminal git tag $color_args >actual.raw &&
test_decode_color <actual.raw >actual &&
test_cmp expect.color actual
'

test_expect_success 'color.ui=always overrides auto-color' '
git -c color.ui=always tag $color_args >actual.raw &&
test_expect_success '--color overrides auto-color' '
git tag --color $color_args >actual.raw &&
test_decode_color <actual.raw >actual &&
test_cmp expect.color actual
'
Expand Down
6 changes: 3 additions & 3 deletions t/t7006-pager.sh
Original file line number Diff line number Diff line change
Expand Up @@ -239,15 +239,15 @@ test_expect_success 'no color when stdout is a regular file' '
test_expect_success TTY 'color when writing to a pager' '
rm -f paginated.out &&
test_config color.ui auto &&
test_terminal env TERM=vt100 git log &&
test_terminal git log &&
colorful paginated.out
'

test_expect_success TTY 'colors are suppressed by color.pager' '
rm -f paginated.out &&
test_config color.ui auto &&
test_config color.pager false &&
test_terminal env TERM=vt100 git log &&
test_terminal git log &&
! colorful paginated.out
'

Expand All @@ -266,7 +266,7 @@ test_expect_success 'color when writing to a file intended for a pager' '
test_expect_success TTY 'colors are sent to pager for external commands' '
test_config alias.externallog "!git log" &&
test_config color.ui auto &&
test_terminal env TERM=vt100 git -p externallog &&
test_terminal git -p externallog &&
colorful paginated.out
'

Expand Down
Loading

0 comments on commit aebd235

Please sign in to comment.