X-Git-Url: https://git.hcoop.net/hcoop/zz_old/misc/scripts.git/blobdiff_plain/863f93ee88d0173e3da0e6380b541cc3c70f7033..294904cca616839be4752a7405c0651837e68cba:/hcoop-git-maint diff --git a/hcoop-git-maint b/hcoop-git-maint index 05e3f37..bf4b278 100755 --- a/hcoop-git-maint +++ b/hcoop-git-maint @@ -4,8 +4,24 @@ # 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