Skip to content

Commit 2c1acdf

Browse files
peffgitster
authored andcommitted
Revert "color: make "always" the same as "auto" in config"
This reverts commit 6be4595. That commit weakened the "always" setting of color config so that it acted as "auto". This was meant to solve regressions in v2.14.2 in which setting "color.ui=always" in the on-disk config broke scripts like add--interactive, because the plumbing diff commands began to generate color output. This was due to 136c8c8 (color: check color.ui in git_default_config(), 2017-07-13), which was in turn trying to fix issues caused by 4c7f181 (make color.ui default to 'auto', 2013-06-10). But in weakening "always", we created even more problems, as people expect to be able to use "git -c color.ui=always" to force color (especially because some commands don't have their own --color flag). We can fix that by special-casing the command-line "-c", but now things are getting pretty confusing. Instead of piling hacks upon hacks, let's start peeling off the hacks. The first step is dropping the weakening of "always", which this revert does. Note that we could actually revert the whole series merged in by da15b78. Most of that series consists of preparations to the tests to handle the weakening of "-c color.ui=always". But it's worth keeping for a few reasons: - there are some other preparatory cleanups, like e433749 (test-terminal: set TERM=vt100, 2017-10-03) - it adds "--color" options more consistently in 0c88bf5 (provide --color option for all ref-filter users, 2017-10-03) - some of the cases dropping "-c" end up being more robust and realistic tests, as in 01c94e9 (t7508: use test_terminal for color output, 2017-10-03) - the preferred tool for overriding config is "--color", and we should be modeling that consistently We can individually revert the few commits necessary to restore some useful tests (which will be done on top of this patch). Note that this isn't a pure revert; we'll keep the test added in t3701, but mark it as failure for now. Signed-off-by: Jeff King <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 433d62f commit 2c1acdf

File tree

3 files changed

+20
-19
lines changed

3 files changed

+20
-19
lines changed

Documentation/config.txt

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1052,10 +1052,10 @@ clean.requireForce::
10521052

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

10601060
color.branch.<slot>::
10611061
Use customized color for branch coloration. `<slot>` is one of
@@ -1066,11 +1066,12 @@ color.branch.<slot>::
10661066

10671067
color.diff::
10681068
Whether to use ANSI escape sequences to add color to patches.
1069-
If this is set to `true` or `auto`, linkgit:git-diff[1],
1069+
If this is set to `always`, linkgit:git-diff[1],
10701070
linkgit:git-log[1], and linkgit:git-show[1] will use color
1071-
when output is to the terminal. The value `always` is a
1072-
historical synonym for `auto`. If unset, then the value of
1073-
`color.ui` is used (`auto` by default).
1071+
for all patches. If it is set to `true` or `auto`, those
1072+
commands will only use color when output is to the terminal.
1073+
If unset, then the value of `color.ui` is used (`auto` by
1074+
default).
10741075
+
10751076
This does not affect linkgit:git-format-patch[1] or the
10761077
'git-diff-{asterisk}' plumbing commands. Can be overridden on the
@@ -1123,12 +1124,12 @@ color.grep.<slot>::
11231124
--
11241125

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

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

11831184
column.ui::
11841185
Specify whether supported commands should output in columns.

color.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ int git_config_colorbool(const char *var, const char *value)
308308
if (!strcasecmp(value, "never"))
309309
return 0;
310310
if (!strcasecmp(value, "always"))
311-
return var ? GIT_COLOR_AUTO : 1;
311+
return 1;
312312
if (!strcasecmp(value, "auto"))
313313
return GIT_COLOR_AUTO;
314314
}

t/t3701-add-interactive.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -483,7 +483,7 @@ test_expect_success 'hunk-editing handles custom comment char' '
483483
git diff --exit-code
484484
'
485485

486-
test_expect_success 'add -p works even with color.ui=always' '
486+
test_expect_failure 'add -p works even with color.ui=always' '
487487
git reset --hard &&
488488
echo change >>file &&
489489
test_config color.ui always &&

0 commit comments

Comments
 (0)