diff: don't load color config in plumbing
authorJeff King <peff@peff.net>
Thu, 18 Aug 2011 05:05:08 +0000 (22:05 -0700)
committerJunio C Hamano <gitster@pobox.com>
Fri, 19 Aug 2011 22:51:38 +0000 (15:51 -0700)
commit3e1dd17a8958cc5fe47a7ca01c9da8f6fae9cb0b
tree3549f30edb6b8730423b37b29336936a9c8d22de
parentc659f55b31bb928688afd4ddfd94f8bea978ff1a
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>
color.c
color.h
diff.c