self-describing post-receive hooks