allow hooks to ignore their standard input stream

Since ec7dbd145 (receive-pack: allow hooks to ignore its
standard input stream) the pre-receive and post-receive
hooks ignore SIGPIPE. Do the same for the remaining hooks
pre-push and post-rewrite, which read from standard input.
The same arguments for ignoring SIGPIPE apply.

Include test by Jeff King which checks that SIGPIPE does not
cause pre-push hook failure. With the use of git update-ref
--stdin it is fast enough to be enabled by default.

Signed-off-by: Clemens Buchacher <clemens.buchacher@intel.com>
Signed-off-by: Jeff King <peff@peff.net>
This commit is contained in:
Clemens Buchacher
2015-11-16 09:05:58 +01:00
committed by Jeff King
parent af40944bda
commit af65f68cdf
3 changed files with 26 additions and 19 deletions

View File

@ -109,23 +109,20 @@ test_expect_success 'push to URL' '
diff expected actual
'
# Test that filling pipe buffers doesn't cause failure
# Too slow to leave enabled for general use
if false
then
printf 'parent1\nrepo1\n' >expected
nr=1000
while test $nr -lt 2000
do
nr=$(( $nr + 1 ))
git branch b/$nr $COMMIT3
echo "refs/heads/b/$nr $COMMIT3 refs/heads/b/$nr $_z40" >>expected
done
test_expect_success 'set up many-ref tests' '
{
nr=1000
while test $nr -lt 2000
do
nr=$(( $nr + 1 ))
echo "create refs/heads/b/$nr $COMMIT3"
done
} | git update-ref --stdin
'
test_expect_success 'push many refs' '
git push parent1 "refs/heads/b/*:refs/heads/b/*" &&
diff expected actual
'
fi
test_expect_success 'sigpipe does not cause pre-push hook failure' '
echo "exit 0" | write_script "$HOOK" &&
git push parent1 "refs/heads/b/*:refs/heads/b/*"
'
test_done