#!/bin/sh

# ensure that the admin is not sneaking in src/ and hooks/ :)
GIT_WORK_TREE=$GL_ADMINDIR git ls-tree --name-only master |
    perl -lne 'exit 1 if /^(src|hooks)$/' || {
        echo "*** ERROR ***" >&2
        echo "no files/dirs called 'src' or 'hooks' are allowed, sorry" >&2
        echo "until those files are deleted, the post-update hook will not run" >&2
        exit 1
    }

# checkout the master branch to $GL_ADMINDIR
# (the GL_ADMINDIR env var would have been set by gl-auth-command)
GIT_WORK_TREE=$GL_ADMINDIR git checkout -f master

od=$PWD
cd $GL_ADMINDIR
$GL_BINDIR/gl-compile-conf

cd $od

ADMIN_POST_UPDATE_CHAINS_TO=` cd $HOME;perl -e 'do ".gitolite.rc"; print $ADMIN_POST_UPDATE_CHAINS_TO'`
[ -n "$ADMIN_POST_UPDATE_CHAINS_TO" ] || ADMIN_POST_UPDATE_CHAINS_TO=hooks/post-update.secondary

if [ -f $ADMIN_POST_UPDATE_CHAINS_TO ] || [ -L $ADMIN_POST_UPDATE_CHAINS_TO ]
then
    exec $ADMIN_POST_UPDATE_CHAINS_TO "$@"
fi