Todd Zullinger <[email protected]> writes:
> In 29ff1f8f74 (t: lib-gpg: flush gpg agent on startup, 2017-07-20), a
> call to gpgconf was added to kill the gpg-agent. The intention was to
> ignore all output from the call, but the order of the redirection needs
> to be switched to ensure that both stdout and stderr are redirected to
> /dev/null. Without this, gpgconf from gnupg-2.0 releases would output
> 'gpgconf: invalid option "--kill"' each time it was called.
>
> Signed-off-by: Todd Zullinger <[email protected]>
> ---
>
> I noticed that gpgconf produced error output for a number of tests on
> CentOS/RHEL. As an example:
>
> *** t5534-push-signed.sh ***
> gpgconf: invalid option "--kill"
>
> Looking at the code in lib-gpg.sh, it appeared the intention was to ignore
> this
> output. Reading through the review of the patch confirmed that feeling[1].
> The
> current code gets caught by the subtleties of output redirection. (Who hasn't
> been burned at some point by the difference between '2>&1 >/dev/null' and
> '>/dev/null 2>&1' ? ;)
**Blush**. I should have caught this during the review. Thanks.
> Lastly, I also noticed that git-rebase.sh uses the same 2>&1 >/dev/null. I
> suspect it's similarly not intentional:
>
> $ git grep -h -C4 '2>&1 >/dev/null' -- git-rebase.sh
> apply_autostash () {
> if test -f "$state_dir/autostash"
> then
> stash_sha1=$(cat "$state_dir/autostash")
> if git stash apply $stash_sha1 2>&1 >/dev/null
> then
> echo "$(gettext 'Applied autostash.')" >&2
> else
> git stash store -m "autostash" -q $stash_sha1 ||
>
> I'll send a separate patch to adjust that code as well.
If it were intentional, the caller of apply_autostash() must be
expecting to see an error message from its standard output and
prepared to do something interesting with it, which I do not see, so
I agree that it is a typo. Thanks.
I wonder if this line in 3320 is doing what it meant to do:
test_must_fail git notes merge z 2>&1 >out &&
test_i18ngrep "Automatic notes merge failed" out &&
grep -v "A notes merge into refs/notes/x is already in-progress in" out