#!/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 'git://git.frugalware.org' + 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