#!/bin/sh -e # performs steps to install the grokmirror trigger in gitolite if [ $# -ne 3 ] ; then echo "Usage: $0 " exit 1 fi if test -f $HOME/.gitolite/local/triggers/post-update.grokmirror && \ test -f $HOME/.gitolite/local/triggers/post-create.grokmirror && \ test -f $HOME/.gitolite/local/commands/desc ; then # all exist exit early exit 0 fi repo=$(mktemp -d) git clone $2/gitolite-admin.git $repo cd $repo git config user.email "$USER@localhost" git config user.name "$USER" git config push.default simple mkdir -p local/triggers mkdir -p local/commands if ! test -f $HOME/.gitolite/local/triggers/post-update.grokmirror ; then cat >local/triggers/post-update.grokmirror <&2 } cd \$repos if [ "\$4" = "R" ] ; then # gitolite read operation, no updates needed exit 0 fi log "updating grokmirror" /usr/local/bin/grok-manifest -c -m \$manifest -t \$repos -n \$2.git chmod 655 \$manifest EOF chmod 755 local/triggers/post-update.grokmirror fi if ! test -f $HOME/.gitolite/local/triggers/post-create.grokmirror ; then cat >local/triggers/post-create.grokmirror <&2 } cd \$repos if [ "\$4" != "fork" ] ; then # no a fork, the update trigger will handle this exit 0 fi log "updating grokmirror" # NOTE: gitolite always call internal triggers *after* user-defined triggers. # However, we need the update-git-daemon-access-list to set the # git-daemon-export-ok flag on the new repo. We call it manually here so # that our grokmirror code will know if its safe to export the repo \$GL_BINDIR/triggers/post-compile/update-git-daemon-access-list \$1 \$2 \$3 \$4 \$5 /usr/local/bin/grok-manifest -c -m \$manifest -t \$repos -n \$2.git chmod 655 \$manifest EOF chmod 755 local/triggers/post-create.grokmirror fi if ! test -f $HOME/.gitolite/local/commands/desc ; then cat >local/commands/desc <