Re: [PATCH v2 1/9] built-in add -p: support interactive.diffFilter
From: Johannes Schindelin <hidden>
Date: 2020-01-13 06:47:32
Hi Gábor, On Tue, 7 Jan 2020, SZEDER Gábor wrote:
On Wed, Dec 25, 2019 at 11:56:52AM +0000, Johannes Schindelin via GitGitGadget wrote:quoted
The Perl version supports post-processing the colored diff (that is generated in addition to the uncolored diff, intended to offer a prettier user experience) by a command configured via that config setting, and now the built-in version does that, too.So this patch makes the test 'detect bogus diffFilter output' in 't3701-add-interactive.sh' succeed with the builtin interactive add, but I stumbled upon a test failure caused by SIGPIPE in an experimental Travis CI s390x build: expecting success of 3701.49 'detect bogus diffFilter output': git reset --hard && echo content >test && test_config interactive.diffFilter "echo too-short" && printf y >y && test_must_fail force_color git add -p <y + git reset --hard HEAD is now at 6ee5ee5 test + echo content + test_config interactive.diffFilter echo too-short + printf y + test_must_fail force_color git add -p test_must_fail: died by signal 13: force_color git add -p error: last command exited with $?=1 Turns out it's a general issue, and GIT_TEST_ADD_I_USE_BUILTIN=1 ./t3701-add-interactive.sh -r 39,49 --stress fails within 10 seconds on my Linux box, whereas the scripted 'add -p' managed to survive a couple hundred repetitions.
You're right, of course. And I had let that slip for too long, as I saw it sporadically happen in the Azure Pipeline, too. This took quite a while to figure out, and I won't claim that I understand _all_ the details: I _think_ that `stdin` being so short "breaks the pipe" and interferes with `add -p`'s normal operation, so I needed to explicitly use the `sigchain` feature to ignore `SIGPIPE` during `add -p`'s main loop. Thanks, Dscho