I execute unit tests on post-receive but don't want the user to wait for it.
I tried the suggestions from the git-user mailing list ("just &
it") but this is not working: https://groups.google.com/forum/#!topic/git-users/CFshrDgYYzE
git seems to wait for the bash script to exit even if I just put this in hooks/post-receive:
exec-unit-tests.sh &
This worked for me. &
and the stdout & stderr pipe must be closed:
long-running-command >&- 2>&- &
In order to put the command in the background, both stdout
AND stderr
must be closed. If either of them is left open the process won't be in the background, and the commit operation won't complete until the hook script is finished.
A lazy alternative approach is to simply redirect stdout
and stderr
to /dev/null
:
long-running-command >/dev/null 2>&1 &
This is a bit less clean, but perhaps easier to understand and remember, and it has the same effect.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With