Tanay Abhra [off-list ref] 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.
On 10/3/2014 1:39 AM, Junio C Hamano wrote:
Tanay Abhra [off-list ref] writes:
quoted
+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.