path: root/color.c
diff options
authorMark Lodato <>2010-02-17 04:55:58 (GMT)
committerJunio C Hamano <>2010-02-19 01:21:40 (GMT)
commit73e9da019655261e456ed862340880de365111f0 (patch)
tree3668881735169164f975f4db0983241cf3d631ba /color.c
parente923eaeb901ff056421b9007adcbbce271caa7b6 (diff)
Add an optional argument for --color options
Make git-branch, git-show-branch, git-grep, and all the diff-based programs accept an optional argument <when> for --color. The argument is a colorbool: "always", "never", or "auto". If no argument is given, "always" is used; --no-color is an alias for --color=never. This makes the command-line interface consistent with other GNU tools, such as `ls' and `grep', and with the git-config color options. Note that, without an argument, --color and --no-color work exactly as before. To implement this, two internal changes were made: 1. Allow the first argument of git_config_colorbool() to be NULL, in which case it returns -1 if the argument isn't "always", "never", or "auto". 2. Add OPT_COLOR_FLAG(), OPT__COLOR(), and parse_opt_color_flag_cb() to the option parsing library. The callback uses git_config_colorbool(), so color.h is now a dependency of parse-options.c. Signed-off-by: Mark Lodato <> Signed-off-by: Junio C Hamano <>
Diffstat (limited to 'color.c')
1 files changed, 3 insertions, 0 deletions
diff --git a/color.c b/color.c
index 62977f4..8f07fc9 100644
--- a/color.c
+++ b/color.c
@@ -138,6 +138,9 @@ int git_config_colorbool(const char *var, const char *value, int stdout_is_tty)
goto auto_color;
+ if (!var)
+ return -1;
/* Missing or explicit false to turn off colorization */
if (!git_config_bool(var, value))
return 0;