Merge branch 'jc/ignore-sigpipe-while-running-hooks'
pre- and post-receive hooks are no longer required to read all their inputs. * jc/ignore-sigpipe-while-running-hooks: receive-pack: allow hooks to ignore its standard input stream
This commit is contained in:
commit
bdab1bca53
@ -15,6 +15,7 @@
|
||||
#include "connected.h"
|
||||
#include "argv-array.h"
|
||||
#include "version.h"
|
||||
#include "sigchain.h"
|
||||
|
||||
static const char receive_pack_usage[] = "git receive-pack <git-dir>";
|
||||
|
||||
@ -287,6 +288,8 @@ static int run_and_feed_hook(const char *hook_name, feed_fn feed, void *feed_sta
|
||||
return code;
|
||||
}
|
||||
|
||||
sigchain_push(SIGPIPE, SIG_IGN);
|
||||
|
||||
while (1) {
|
||||
const char *buf;
|
||||
size_t n;
|
||||
@ -298,6 +301,9 @@ static int run_and_feed_hook(const char *hook_name, feed_fn feed, void *feed_sta
|
||||
close(proc.in);
|
||||
if (use_sideband)
|
||||
finish_async(&muxer);
|
||||
|
||||
sigchain_pop(SIGPIPE);
|
||||
|
||||
return finish_command(&proc);
|
||||
}
|
||||
|
||||
|
@ -135,4 +135,17 @@ test_expect_success 'send-pack stderr contains hook messages' '
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'pre-receive hook that forgets to read its input' '
|
||||
write_script victim.git/hooks/pre-receive <<-\EOF &&
|
||||
exit 0
|
||||
EOF
|
||||
rm -f victim.git/hooks/update victim.git/hooks/post-update &&
|
||||
|
||||
for v in $(test_seq 100 999)
|
||||
do
|
||||
git branch branch_$v master || return
|
||||
done &&
|
||||
git push ./victim.git "+refs/heads/*:refs/heads/*"
|
||||
'
|
||||
|
||||
test_done
|
||||
|
Loading…
Reference in New Issue
Block a user