Subject: Re: [bug] generic issue with git_config handlers

From: Junio C Hamano <[email-masked]>
Date: Mon, 04 Feb 2008 16:03:34 -0800

Christian Couder <[email-masked]> writes:

> Very unfortunate.
>
> I finally had the following patch that passed all tests (it changed only one 
> test), in case someone wants to suggest that we change git_config_bool, 
> hint, hint!

Sorry, I do not get what you are hinting at.  The fact that you
passed all the tests suggests that we have a gap in the test
coverage for these two, so you are inviting more tests from
others?

> diff --git a/config.c b/config.c
> index 526a3f4..a2c7214 100644
> --- a/config.c
> +++ b/config.c
> @@ -131,7 +131,7 @@ static int get_value(config_fn_t fn, char *name, 
> unsigned in
>         while (c == ' ' || c == '\t')
>                 c = get_next_char();
>
> -       value = NULL;
> +       value = "";
>         if (c != '\n') {
>                 if (c != '=')
>                         return -1;

As long as you have this, I do not think you can avoid breaking
existing repositories that have:

        [core]
                autocrlf
		filemode =

and expect git to say "Ah, core.autocrlf is set to true, and
filemode is not trustable, so I need to do a MS-DOG".

	$ git config --bool core.autocrlf
        true
        $ git config --bool core.filemode
        false

Your "builtin-config.c" patch looks better than before (which
would segfault), but I think

	$ git config --bool --list

could pay attention to the "type" thing set earlier, just like
show_config() does.