]> git.ipfire.org Git - thirdparty/git.git/commitdiff
fetch test: avoid use of "VAR= cmd" with a shell function
authorJonathan Nieder <jrnieder@gmail.com>
Thu, 26 Dec 2019 19:55:10 +0000 (11:55 -0800)
committerJunio C Hamano <gitster@pobox.com>
Wed, 15 Jan 2020 22:02:32 +0000 (14:02 -0800)
Just like assigning a nonempty value, assigning an empty value to a
shell variable when calling a function produces non-portable behavior:
in some shells, the assignment lasts for the duration of the function
invocation, and in others, it persists after the function returns.

Use an explicit subshell with the envvar exported to make the behavior
consistent across shells and crystal clear.

All previous instances of this pattern used "VAR=value" (with nonempty
`value`), which is already diagnosed automatically by "make test-lint"
since a0a630192d (t/check-non-portable-shell: detect "FOO=bar
shell_func", 2018-07-13).

Noticed using an improved "make test-lint".

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t5552-skipping-fetch-negotiator.sh

index f70cbcc9cabf6499de57529cbfa095ed9eff73e3..a452fe32fa33aff0923236992d6091e41c99fdcf 100755 (executable)
@@ -107,7 +107,11 @@ test_expect_success 'use ref advertisement to filter out commits' '
 
        # The ref advertisement itself is filtered when protocol v2 is used, so
        # use v0.
-       GIT_TEST_PROTOCOL_VERSION= trace_fetch client origin to_fetch &&
+       (
+               GIT_TEST_PROTOCOL_VERSION= &&
+               export GIT_TEST_PROTOCOL_VERSION &&
+               trace_fetch client origin to_fetch
+       ) &&
        have_sent c5 c4^ c2side &&
        have_not_sent c4 c4^^ c4^^^
 '