# vim: syn=sh: cd $TESTDIR $TESTDIR/rollback || die "rollback failed" editrc GL_BIG_CONFIG $i editrc GL_WILDREPOS 1 # ---------- name "INTERNAL" cd ~/gitolite-admin mkdir -p conf/fragments echo " # group your projects/repos however you want @u1r = r1[ab] @u2r = r2[ab] @u3r = r3[ab] # the admin repo access was probably like this to start with: repo gitolite-admin RW = u1 u2 u3 RW+ NAME/ = tester RW NAME/conf/fragments/u1r = u1 RW NAME/conf/fragments/u2r = u2 RW NAME/conf/fragments/u3r = u3 " | ugc echo " repo r1a r1b C = @all RW+ = CREATOR repo @u1r RW+ = tester " > conf/fragments/u1r.conf echo " repo @u2r C = @all RW+ = CREATOR repo @u2r RW+ = tester " > conf/fragments/u2r.conf echo " repo @u3r C = @all RW+ = CREATOR repo @u3r RW+ = tester " > conf/fragments/u3r.conf ugc < /dev/null runlocal git ls-remote gitolite:r1a runlocal git ls-remote gitolite:r1b runlocal git ls-remote gitolite:r2a runlocal git ls-remote gitolite:r2b runlocal git ls-remote gitolite:r3a runlocal git ls-remote gitolite:r3b runremote ls repositories name "u1 push frag u1r" cd ~/gitolite-admin echo " repo @u1r RW+ = u5 " > conf/fragments/u1r.conf ugc u1 < /dev/null expect "To u1:gitolite-admin" expect "master -> master" name "u2 push main conf fail" cd ~/gitolite-admin echo " repo @u1r RW+ = u6 " | ugc u2 expect "W NAME/conf/gitolite.conf gitolite-admin u2 DENIED by fallthru" expect "To u2:gitolite-admin" expect "\[remote rejected\] master -> master (hook declined)" git reset --hard origin/master &>/dev/null name "u2 push frag u1r fail" cd ~/gitolite-admin echo " repo @u1r RW+ = u6 " > conf/fragments/u1r.conf ugc u2 < /dev/null expect "remote: W NAME/conf/fragments/u1r.conf gitolite-admin u2 DENIED by fallthru" expect "To u2:gitolite-admin" expect "\[remote rejected\] master -> master (hook declined)" git reset --hard origin/master &>/dev/null name "u3 set perms for r2a fail" cd ~/gitolite-admin echo " repo r2a RW+ = u6 " > conf/fragments/u3r.conf ugc u3 < /dev/null expect "u3r.conf attempting to set access for r2a" git reset --hard origin/master &>/dev/null name "u3 add r2b to u3r fail" cd ~/gitolite-admin echo " @u3r = r2b repo @u3r RW+ = u6 " > conf/fragments/u3r.conf ugc u3 < /dev/null [[ $1 == 0 ]] && expect "u3r.conf attempting to set access for r2b" [[ $1 == 1 ]] && expect "u3r.conf attempting to set access for locally modified @u3r" [[ $1 == 1 ]] && notexpect "u3r.conf attempting to set access for r2b" [[ $1 == 0 ]] && notexpect "defining groups is not allowed inside fragments" git reset --hard origin/master &>/dev/null name INTERNAL