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

2 messages, 2 authors, 2016-06-15 · open the first message on its own page

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

From: Junio C Hamano <hidden>
Date: 2016-06-15 23:02:38

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.

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

From: Tanay Abhra <hidden>
Date: 2016-06-15 23:02:38

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.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help