hcoop-git-maint: Improve detection of bad permissions.
[hcoop/zz_old/misc/scripts.git] / hcoop-git-maint
1 #!/bin/bash
2 #
3 # Git maintenance script, run by cron.
4
5 # Update symlinks to user git repo locations.
6 find /afs/hcoop.net/user -mindepth 3 -maxdepth 3 -noleaf -exec \
7 sh -c "test -e {}/.hcoop-git && { \
8 rm -f /var/cache/git/\$(basename {}); \
9 ln -sf {}/.hcoop-git /var/cache/git/\$(basename {}); }" \;
10
11 # Remove symlinks for users that have wrong permissions
12 IFS=$'\n'
13 for user in $(ls -1 /var/cache/git); do
14 if ! test -e $(readlink /var/cache/git/$user); then
15 rm -f /var/cache/git/$user
16 continue
17 fi
18 gitpath=$(readlink /var/cache/git/$user)
19 find -L $gitpath -noleaf -type d \
20 ! -regex '.*/\(refs\|objects\)\(/.*\|$\)' -exec \
21 sh -c "! { fs la {} | \
22 egrep '^ +system:anyuser .*r' > /dev/null; } && \
23 rm -f /var/cache/git/$user 2>/dev/null" \;
24 done
25
26 # Update cache of front page.
27 cache=/var/local/lib/gitweb/indexcache.html
28 wget -q -O $cache.tmp 'http://git.hcoop.net/?nocache=y'
29 if test -s $cache.tmp; then
30 chmod a+r $cache.tmp
31 mv $cache.tmp $cache
32 else
33 rm -f $cache.tmp
34 fi