2010-06-12 07:33:53 +02:00
|
|
|
# vim: syn=sh:
|
|
|
|
for wr in 0 1
|
|
|
|
do
|
|
|
|
for bc in 0 1
|
|
|
|
do
|
|
|
|
cd $TESTDIR
|
2010-06-18 18:13:53 +02:00
|
|
|
$TESTDIR/rollback || die "rollback failed"
|
2010-06-12 07:33:53 +02:00
|
|
|
editrc GL_WILDREPOS $wr
|
|
|
|
editrc GL_BIG_CONFIG $bc
|
|
|
|
|
|
|
|
# ----------
|
|
|
|
|
|
|
|
name "INTERNAL"
|
|
|
|
echo "
|
|
|
|
@staff = u1 u2 u3 u4 u5 u6
|
2010-07-24 15:53:31 +02:00
|
|
|
@gfoo = foo
|
|
|
|
repo @gfoo
|
2010-06-12 07:33:53 +02:00
|
|
|
RW+ = u1 u2
|
|
|
|
RW+ personal/USER/ = u3 u4
|
|
|
|
RW temp = u5 u6
|
|
|
|
" | ugc
|
|
|
|
|
|
|
|
cd ~/td
|
|
|
|
runlocal git clone u1:foo
|
|
|
|
|
|
|
|
cd foo
|
|
|
|
mdc; mdc; mdc; mdc; mdc
|
|
|
|
|
|
|
|
name "u1 and u2 can push"
|
|
|
|
runlocal git push origin master
|
|
|
|
expect_push_ok "master -> master"
|
|
|
|
runlocal git push u2:foo master:personal/u1/foo
|
|
|
|
expect_push_ok "master -> personal/u1/foo"
|
|
|
|
runlocal git push origin master:personal/u2/foo
|
|
|
|
expect_push_ok "master -> personal/u2/foo"
|
|
|
|
runlocal git push u1:foo master:personal/u3/foo
|
|
|
|
expect_push_ok "master -> personal/u3/foo"
|
|
|
|
|
|
|
|
mdc;
|
|
|
|
name "u3 cant push u1/u4 personal branches"
|
|
|
|
runlocal git push u3:foo master:personal/u1/foo
|
|
|
|
expect "remote: W refs/heads/personal/u1/foo foo u3 DENIED by fallthru"
|
|
|
|
expect "\[remote rejected\] master -> personal/u1/foo (hook declined)"
|
|
|
|
expect "failed to push"
|
|
|
|
runlocal git push u3:foo master:personal/u4/foo
|
|
|
|
expect "remote: W refs/heads/personal/u4/foo foo u3 DENIED by fallthru"
|
|
|
|
expect "\[remote rejected\] master -> personal/u4/foo (hook declined)"
|
|
|
|
expect "failed to push"
|
|
|
|
name "u4 can push u4 personal branch"
|
|
|
|
runlocal git push u4:foo master:personal/u4/foo
|
|
|
|
expect_push_ok "master -> personal/u4/foo"
|
|
|
|
name "u5 push temp"
|
|
|
|
runlocal git push u5:foo master:temp
|
|
|
|
expect_push_ok "master -> temp"
|
|
|
|
|
|
|
|
runlocal git reset --hard HEAD^^^
|
|
|
|
|
|
|
|
name "u1 and u2 can rewind"
|
|
|
|
runlocal git push -f origin master
|
|
|
|
expect "master -> master (forced update)"
|
|
|
|
runlocal git push -f u2:foo master:personal/u1/foo
|
|
|
|
expect "master -> personal/u1/foo (forced update)"
|
|
|
|
runlocal git push -f origin master:personal/u2/foo
|
|
|
|
expect "master -> personal/u2/foo (forced update)"
|
|
|
|
runlocal git push -f u1:foo master:personal/u3/foo
|
|
|
|
expect "master -> personal/u3/foo (forced update)"
|
|
|
|
|
|
|
|
name "u3 cant rewind u1/u4 personal branches"
|
|
|
|
runlocal git reset --hard HEAD^; mdc
|
|
|
|
runlocal git push -f u3:foo master:personal/u1/foo
|
|
|
|
expect "remote: + refs/heads/personal/u1/foo foo u3 DENIED by fallthru"
|
|
|
|
expect "\[remote rejected\] master -> personal/u1/foo (hook declined)"
|
|
|
|
expect "failed to push"
|
|
|
|
runlocal git push -f u3:foo master:personal/u4/foo
|
|
|
|
expect "remote: + refs/heads/personal/u4/foo foo u3 DENIED by fallthru"
|
|
|
|
expect "\[remote rejected\] master -> personal/u4/foo (hook declined)"
|
|
|
|
expect "failed to push"
|
|
|
|
name "u4 can rewind u4 personal branch"
|
|
|
|
runlocal git push -f u4:foo master:personal/u4/foo
|
|
|
|
expect "master -> personal/u4/foo (forced update)"
|
|
|
|
name "u5 cant rewind temp"
|
|
|
|
runlocal git push -f u5:foo master:temp
|
|
|
|
expect "remote: + refs/heads/temp foo u5 DENIED by fallthru"
|
|
|
|
expect "\[remote rejected\] master -> temp (hook declined)"
|
|
|
|
expect "failed to push"
|
|
|
|
|
|
|
|
name INTERNAL
|
|
|
|
done
|
|
|
|
done
|