Subject: Re: [PATCH/RFC 5/5] add tests for checking the behaviour of "unset.variable"

From: Junio C Hamano <[email-masked]>
Date: Thu, 02 Oct 2014 13:23:02 -0700

Tanay Abhra <[email-masked]> writes:

> On 10/3/2014 1:39 AM, Junio C Hamano wrote:
>> Tanay Abhra <[email-masked]> writes:
>> 
>>> +test_expect_success 'document how unset.variable will behave in shell scripts' '
>>> +	rm -f .git/config &&
>>> +	cat >expect <<-\EOF &&
>>> +	EOF
>>> +	git config foo.bar boz1 &&
>>> +	git config --add foo.bar boz2 &&
>>> +	git config unset.variable foo.bar &&
>>> +	git config --add foo.bar boz3 &&
>>> +	test_must_fail git config --get-all foo.bar >actual &&
>> 
>> You make foo.bar a multi-valued one, then you unset it, so I would
>> imagine that the value given after that, 'boz3', would be the only
>> value foo.bar has.  Why should --get-all fail?
>>
>> I am having a hard time imagining how this behaviour can make any
>> sense.
>> 
>
> git config -add appends the value to a existing header, after these
> two commands have executed the config file would look like,
> ...

I *know* how it is implemented before the changes of this series.
And if the original implementation of "add" is left as-is, I can
imagine how such a behaviour that is unintuitive to end-users can
arise.

I was and am having a hard time how this behaviour can make any
sense from an end-user's point of view.