gitolite/hooks/common/post-receive.mirrorpush

27 lines
1,022 B
Plaintext
Raw Normal View History

2011-10-16 14:02:30 +02:00
#!/bin/sh
# gitolite mirroring
# please see doc/mirroring.mkd for instructions on how to use this
2011-12-02 05:14:57 +01:00
die() { echo post-receive.mirrorpush: "$@" >&2; exit 1; }
# 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
# even slaves have post-receive hooks, but due to the way the push happens, we
# don't have GL_REPO set. So we detect that generic situation and bail...
[ -n "$GL_BYPASS_UPDATE_HOOK" ] && exit 0
# CAUTION: this means that a server-side push (bypassing gitolite) will not be
# mirrored automatically because (a) we don't know GL_REPO (we can deduce it
# but we won't!), and (b) we can't distinguish easily between that and this
# case (the slave receiving a mirror push case)
[ -z "$GL_REPO" ] && die GL_REPO not set
[ -z "$GL_BINDIR" ] && die GL_BINDIR not set
slaves=`git config --get gitolite.mirror.slaves`
[ -z "$slaves" ] && exit 0
$GL_BINDIR/gl-mirror-push $GL_REPO $slaves