Junio C Hamano <gitster@xxxxxxxxx> writes: > Junio C Hamano <gitster@xxxxxxxxx> writes: > >> Aaron Schrab <aaron@xxxxxxxxxx> writes: >> >>> Main changes since the initial version: >>> >>> * The first patch converts the existing hook callers to use the new >>> find_hook() function. >>> * Information about what is to be pushed is now sent over a pipe rather >>> than passed as command-line parameters. >>> >>> Aaron Schrab (3): >>> hooks: Add function to check if a hook exists >>> push: Add support for pre-push hooks >>> Add sample pre-push hook script >> >> Getting much nicer. Thanks. > > Hmph, t5571 seems to be flaky in that it sometimes fails but passes > when run again. Something timing dependent is going on??? With this patch applied, repeatedly try to - make sure "foreign" ref does not exist; and - attempt pushing the HEAD:foreign to create the "foreign" ref until it fails, I can get it stop before the output scrolls off of my 114 line terminal. Then when I revert the changes to transport.[ch] and builtin/push.c in this series, the test will keep going. Wait. The sample hook used in the test _is_ fed some input but it exits without reading any. What happens when we fork it, and it completes execution before we even have a chance to feed a single byte? Wont' we get a sigpipe and die? Yup, I think that is what is missing from run_pre_push_hook() implementation. diff --git a/t/t5571-pre-push-hook.sh b/t/t5571-pre-push-hook.sh index d68fed7..050318b 100755 --- a/t/t5571-pre-push-hook.sh +++ b/t/t5571-pre-push-hook.sh @@ -16,8 +16,15 @@ test_expect_success 'setup' ' git init --bare repo1 && git remote add parent1 repo1 && test_commit one && - git push parent1 HEAD:foreign + while : + do + git push parent1 :refs/heads/foreign && + git push parent1 HEAD:foreign || break + done ' + +exit + write_script "$HOOK" <<EOF exit 1 EOF -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html