On 10/3/2014 1:39 AM, Junio C Hamano wrote: > Tanay Abhra <tanayabh@xxxxxxxxx> 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. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html