diff options
Diffstat (limited to 'lib/gitolite3/hooks/common/post-receive')
-rwxr-xr-x | lib/gitolite3/hooks/common/post-receive | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/lib/gitolite3/hooks/common/post-receive b/lib/gitolite3/hooks/common/post-receive index ab100d9..9c9aed7 100755 --- a/lib/gitolite3/hooks/common/post-receive +++ b/lib/gitolite3/hooks/common/post-receive @@ -2,12 +2,16 @@ # This gitolite3 hook exports content for web publishing. # The following gitolite3 environment variables affect its use: -# WEB_BRANCH tree-ish (hook silently skipped if unset) -# WEB_BASEDIR path writable by gitolite3 (default: /var/www/gitolite3) +# WEB_BRANCH tree-ish (hook silently skipped if unset) +# WEB_BASEDIR path writable by gitolite3 (default: /var/www/gitolite3) +# WEB_EXEC_INIT command executed in exported dir after initial checkout +# WEB_EXEC command executed in exported dir after every checkout set -eu WEB_BRANCH=${GL_OPTION_WEB_BRANCH:-} +WEB_EXEC=${GL_OPTION_WEB_EXEC:-} +WEB_EXEC_INIT=${GL_OPTION_WEB_EXEC_INIT:-} [ -n "$WEB_BRANCH" ] || exit 0 @@ -20,8 +24,19 @@ export GIT_WORK_TREE pwd echo "Checking out content to $GIT_WORK_TREE ..." +init=1 +[ -e "$GIT_WORK_TREE" ] || init= + git checkout -f "$WEB_BRANCH" chmod -R u=rw,go=r,a+X "$GIT_WORK_TREE" +if [ -n "$WEB_EXEC_INIT" ] && [ -n "$init" ]; then + ( cd "$WEB_BASEDIR" && echo "$WEB_EXEC_INIT" | sh - ) +fi + +if [ -n "$WEB_EXEC" ]; then + ( cd "$WEB_BASEDIR" && echo "$WEB_EXEC" | sh - ) +fi + echo "Checkout completed succesfully!" |