Re: [PATCH/RFC 5/5] add tests for checking the behaviour of "unset.variable"
- From
Tanay Abhra <tanayabh@gmail.com>
- Date
- Oct 2, 2014, 20:18 UTC
- Message-ID
- <542DB2FE.609@gmail.com>
- In-Reply-To
- <xmqqr3yqmdxa.fsf@gitster.dls.corp.google.com>
On 10/3/2014 1:39 AM, Junio C Hamano wrote:
Show 19 quoted lines
> Tanay Abhra <tanayabh@gmail.com> 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,
git config foo.bar boz1 && git config --add foo.bar boz2 &&
[foo] bar = boz1 bar = boz2
After git config unset.variable foo.bar,
[foo] bar = boz1 bar = boz2 [unset] variable = foo.bar
Now the tricky part, git config --add foo.bar boz3 append to the existing header,
[foo] bar = boz1 bar = boz2 bar = boz3 [unset] variable = foo.bar
Since unset.variable unsets all previous set values in parsing order, git config --get-all foo.bar gives us nothing in result.