Tonight, I played with git hooks. Because I wanted to be able to regenerate the website remotely just by doing a push to a specific branch of the website repo.
By adding on the remote side in the bare git repo in hooks/post-receive (that you have to make executable):
#!/bin/sh read oldrev newrev refname BRANCH="production" if [ $refname = "refs/heads/$BRANCH" ]; then SOURCE_FOLDER=/src DEST_FOLDER=/www echo "Copying the git" GIT_WORK_TREE=$SOURCE_FOLDER git checkout -f $BRANCH echo "Generating the website" hugo -s $SOURCE_FOLDER -d $DEST_FOLDER --cacheDir $SOURCE_FOLDER/.cache fi
Just replace /src with a folder your git user has access to, replace /www by the place your web server will look and production by the branch that contains the production version.
I added the cacheDir option, because I don’t want executable stuff in /tmp so pygments was complaining that it was enforced (complaining with a void error message, I had to strace it).