# vim: ft=sh: tsh pwd || die '## tsh not installed?' for wr in 0 1 do for bc in 0 1 do cd $TESTDIR $TESTDIR/rollback || die "rollback failed" editrc GL_WILDREPOS $wr editrc GL_BIG_CONFIG $bc # ---------- name "INTERNAL" echo " repo foo RW+M = u1 RW+ = u2 RWM .= u3 RW = u4 " | ugc cd ~/td name "setup a merged push" tsh " ls -al foo; !ok; /cannot access foo: No such file or directory/ clone u1:foo; ok; /Cloning into/ /You appear to have cloned an empty/ " cd foo tsh " ls -Al; ok; /\.git/ test-commit aa; ok; /1 files changed, 1 insertions/ tag start; ok push-om; ok; /new branch.*master.-..master/ /create.delete ignored.*merge-check/ checkout -b new; ok; /Switched to a new branch 'new'/ test-commit bb cc; ok checkout master; ok; /Switched to branch 'master'/ test-commit dd ee; ok git merge new; ok; /Merge made.*recursive/ test-commit ff; ok tag end; ok " name "push by u4 should fail" tsh " push u4:foo master; /WM refs/heads/master foo u4 DENIED by fallthru/ /To u4:foo/ /remote rejected.*hook declined/ /failed to push some refs/ " name "push by u3 should succeed" tsh " push u3:foo master; ok; /To u3:foo/; /master.-..master/ " name "rewind by u3 should fail" tsh " reset-h start; ok; /HEAD is now at .* aa / push u3:foo +master; !ok; /rejected.*hook declined/ /failed to push some refs/ " name "rewind by u2 should succeed" tsh " push u2:foo +master; ok; /To u2:foo/ /forced update/ " name "push by u2 should fail" tsh " reset-h end; ok; /HEAD is now at .* ff / push u2:foo master; /WM refs/heads/master foo u2 DENIED by fallthru/ /To u2:foo/ /remote rejected.*hook declined/ /failed to push some refs/ " name "push by u1 should succeed" tsh " push u1:foo master; ok; /master.-..master/ " name INTERNAL done done