On Sun, Nov 12, 2017 at 03:00:40PM +0000, Soukaina NAIT HMID wrote:
> diff --git a/builtin/config.c b/builtin/config.c
> index 124a682d50fa8..9df2d9c43bcad 100644
> --- a/builtin/config.c
> +++ b/builtin/config.c
> @@ -30,6 +30,7 @@ static int end_null;
> static int respect_includes_opt = -1;
> static struct config_options config_options;
> static int show_origin;
> +static const char *default_value;
> [...]
> + OPT_STRING(0, "default", &default_value, N_("default-value"), N_("sets
> default for bool/int/path/color when no value is returned from config")),
These hunks make sense. We're adding a new "--default" option that would
kick in when you try to look up a key and it isn't present.
I think we can skip the "bool/int/path/color" thing in the help string.
We would want this to kick in for every type, right? The only
constraint is that we are doing a "get" operation. It wouldn't make any
sense to use "--default" when setting a variable, listing, etc. Should
we catch these cases and return an error?
We'd also want to mention this in Documentation/git-config.txt.
> @@ -47,6 +48,7 @@ static int show_origin;
> #define ACTION_GET_COLOR (1<<13)
> #define ACTION_GET_COLORBOOL (1<<14)
> #define ACTION_GET_URLMATCH (1<<15)
> +#define ACTION_GET_COLORORDEFAULT (1<<16)
I'm not sure I understand this part, though. Providing a default should
be something that goes along with a "get" action, but isn't its own
action.
> +static void get_color_default(const char *var)
> +{
> + get_color(var, default_value);
> +}
> +
And here we're just applying --default to colors, but we'd eventually
want them for everything. I think that's fixed later in the series, so
I'll keep reading. But I'd expect a function like get_value() to be
detecting the case where we got no hits and filling in the default_value
there, as if we had read it from the config file.
-Peff