#!/bin/bash # git-push-public # # Push changes from local git repositories marked as public, via the # git-daemon-export-ok flag, to the public server. LOCALBASE=/var/lib/git PUBLICBASE=/var/cache/git PUBLICSERVER=oss.titaniummirror.com echo "Updating remote public repositories" cd $LOCALBASE for path in $(find . -name git-daemon-export-ok); do repo="${path/\/git-daemon-export-ok/}" repo="${repo/.\//}" echo "Repository $repo" if ! ssh $PUBLICSERVER test -d $PUBLICBASE/$repo ; then # Repo does not exist on public server, so create it echo "Creating repository $repo on remote" ssh $PUBLICSERVER git --git-dir=$PUBLICBASE/$repo init --bare ssh $PUBLICSERVER touch $PUBLICBASE/$repo/git-daemon-export-ok scp $repo/description $PUBLICSERVER:$PUBLICBASE/$repo/ ssh $PUBLICSERVER "echo \"git://$PUBLICSERVER/$repo\" \ > $PUBLICBASE/$repo/cloneurl" fi git --git-dir=$repo push --mirror $PUBLICSERVER:$PUBLICBASE/$repo done