How to create a Subversion post-commit hook that runs in the background —12 February 2012
Recently I needed to do something in a post-commit Subversion hook that can take a long time, and unless the hook runs in the background, the repository would be unavailable until the hook completes.
The solution:
- Create a separate script to perform the time-consuming task, the way you always create a script. The hook script (
hooks/post-commit) will be like a wrapper, calling the main script. - In 
hooks/post-commit, start the main script in the background, and redirect all its output to/dev/null 
For example hooks/post-commit will look like this:
./time-consuming-script.sh $* >/dev/null 2>/dev/null &
The catch here was redirecting error output (2>/dev/null). Without that, the process was not fully in the background.
By the another (small) catch is that the post-commit template file (hooks/post-commit.tmpl) should not exist, or have size 0, otherwise the real hook script is ignored.