X-Git-Url: http://git.hcoop.net/clinton/scripts.git/blobdiff_plain/df1962e3235a88e86e76feac74e8d58b93d7608f..4a28134805dfc5b6bef1843f5716961a1bf9954f:/hcoop-git-maint diff --git a/hcoop-git-maint b/hcoop-git-maint index d148f2a..bf4b278 100755 --- a/hcoop-git-maint +++ b/hcoop-git-maint @@ -4,11 +4,31 @@ # Update symlinks to user git repo locations. find /afs/hcoop.net/user -mindepth 3 -maxdepth 3 -noleaf -exec \ - sh -c "test -e {}/.hcoop-git && \ - ln -s {}/.hcoop-git/ /var/cache/git/\$(basename {}) 2>/dev/null" \; + sh -c "test -e {}/.hcoop-git && { \ + rm -f /var/cache/git/\$(basename {}); \ + ln -sf {}/.hcoop-git /var/cache/git/\$(basename {}); }" \; + +# Remove symlinks for users that have wrong permissions +IFS=$'\n' +for user in $(ls -1 /var/cache/git); do + if ! test -e $(readlink /var/cache/git/$user); then + rm -f /var/cache/git/$user + continue + fi + gitpath=$(readlink /var/cache/git/$user) + find -L $gitpath -noleaf -type d \ + ! -regex '.*/\(refs\|objects\)\(/.*\|$\)' -exec \ + sh -c "! { fs la {} | \ + egrep '^ +system:anyuser .*r' > /dev/null; } && \ + rm -f /var/cache/git/$user 2>/dev/null" \; +done # Update cache of front page. cache=/var/local/lib/gitweb/indexcache.html wget -q -O $cache.tmp 'http://git.hcoop.net/?nocache=y' -chmod a+r $cache.tmp -mv $cache.tmp $cache +if test -s $cache.tmp; then + chmod a+r $cache.tmp + mv $cache.tmp $cache +else + rm -f $cache.tmp +fi