#!/bin/bash

# */30 * * * * ~/bin/gitpull &>/dev/null

## custom values in gitweb.conf:
#
# our $projectroot = "/home/gitweb/repos/";
# $projects_list = "/home/gitweb/repos/projects.list";
# our $site_name = "Frugalware Linux Gitweb";

server="rsync://rsync.frugalware.org/pub/other/homepage-ng/git/repos/"

cd `dirname $0`/../repos
: > projects.list.new
for i in `rsync $server|sed 's/.* \([^ ]\)/\1/;1 d'`
do
	giturl=`python -c "import os; sock = os.popen('rsync -l $server/$i'); buf = sock.read(); sock.close(); print 'http://frugalware.org/git' + os.path.abspath('$server/$i/../'[len('rsync://rsync.frugalware.org'):] + buf.split(' -> ')[1].strip())"`
	if [ -d $i.git ]; then
		cd $i.git
		git fetch -q origin
		git remote prune origin
	else
		mkdir $i.git
		cd $i.git
		git --bare init
		git remote add -f --mirror origin $giturl
	fi
	cd ..
	rsync $server/$i/.git/owner $i.git/
	rsync $server/$i/.git/description $i.git/
	echo "$giturl" > $i.git/cloneurl
	if [ -f $i.git/owner ]; then
		owner=$(python -c "from urllib import urlencode; owner='$(cat $i.git/owner)'; print urlencode({'':owner.strip()})[1:]")
	else
		owner="Unknown"
	fi
	echo "$i.git $owner" >> projects.list.new
done
mv -f projects.list.new projects.list
