--- /dev/null
+#!/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/
+ fi
+ git --git-dir=$repo push --mirror $PUBLICSERVER:$PUBLICBASE/$repo
+done