summaryrefslogtreecommitdiff
path: root/color.c
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2011-08-18 05:05:08 (GMT)
committerJunio C Hamano <gitster@pobox.com>2011-08-19 22:51:38 (GMT)
commit3e1dd17a8958cc5fe47a7ca01c9da8f6fae9cb0b (patch)
tree3549f30edb6b8730423b37b29336936a9c8d22de /color.c
parentc659f55b31bb928688afd4ddfd94f8bea978ff1a (diff)
downloadgit-3e1dd17a8958cc5fe47a7ca01c9da8f6fae9cb0b.zip
git-3e1dd17a8958cc5fe47a7ca01c9da8f6fae9cb0b.tar.gz
git-3e1dd17a8958cc5fe47a7ca01c9da8f6fae9cb0b.tar.bz2
diff: don't load color config in plumbing
The diff config callback is split into two functions: one which loads "ui" config, and one which loads "basic" config. The former chains to the latter, as the diff UI config is a superset of the plumbing config. The color.diff variable is only loaded in the UI config. However, the basic config actually chains to git_color_default_config, which loads color.ui. This doesn't actually cause any bugs, because the plumbing diff code does not actually look at the value of color.ui. However, it is somewhat nonsensical, and it makes it difficult to refactor the color code. It probably came about because there is no git_color_config to load only color config, but rather just git_color_default_config, which loads color config and chains to git_default_config. This patch splits out the color-specific portion of git_color_default_config so that the diff UI config can call it directly. This is perhaps better explained by the chaining of callbacks. Before we had: git_diff_ui_config -> git_diff_basic_config -> git_color_default_config -> git_default_config Now we have: git_diff_ui_config -> git_color_config -> git_diff_basic_config -> git_default_config Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'color.c')
-rw-r--r--color.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/color.c b/color.c
index 8586417..ec96fe1 100644
--- a/color.c
+++ b/color.c
@@ -204,13 +204,21 @@ int want_color(int var)
return var > 0;
}
-int git_color_default_config(const char *var, const char *value, void *cb)
+int git_color_config(const char *var, const char *value, void *cb)
{
if (!strcmp(var, "color.ui")) {
git_use_color_default = git_config_colorbool(var, value);
return 0;
}
+ return 0;
+}
+
+int git_color_default_config(const char *var, const char *value, void *cb)
+{
+ if (git_color_config(var, value, cb) < 0)
+ return -1;
+
return git_default_config(var, value, cb);
}