#!/bin/bash

# gitolite mirroring

# please see doc/mirroring.mkd for instructions on how to use this

# flush STDIN coming from git; we have no use for that info in this hook but
# if you don't do this, git-shell sometimes dies of a signal 13 (SIGPIPE)
[ -t 0 ] || cat >/dev/null

if [ -n "$GL_SLAVES" ]
then
    for mirror in $GL_SLAVES
    do
        if git push --mirror $mirror:$GL_REPO.git
        then
            :
        else
            ssh $mirror mkdir -p $GL_REPO.git
            ssh $mirror git init --bare $GL_REPO.git
            ssh $mirror "cd $GL_REPO.git; git config receive.fsckObjects true"
            git push --mirror $mirror:$GL_REPO.git ||
                echo "WARNING: mirror push to $mirror failed"
        fi
    done
fi >&2