# vim: syn=sh:
# this is the specific example in commit 32056e0
for bc in 0 1
do
    cd $TESTDIR
    $TESTDIR/rollback || die "rollback failed"
    editrc GL_WILDREPOS 1
    editrc GL_BIG_CONFIG $bc

    name "INTERNAL"
    echo "
        @private-owners = u1 u2
        @experienced-private-owners = u3 u4
    
        repo CREATOR/.*
          C   = @private-owners @experienced-private-owners
          RWD = CREATOR
          RW  = WRITERS
          R   = READERS
          -   = @private-owners
          RW+D = CREATOR
    " | ugc
    name "nothing set yet"
    expect_push_ok "master -> master"

    cd ~/td
    runlocal git clone u1:u1/r1
    expect "Initialized empty Git repository in $TEST_BASE_FULL/u1/r1.git/"
    cd r1
    mdc r1file1
    runlocal git push origin master
    runlocal git checkout -b br1
    mdc r1file2
    mdc r1file3

    name "u1 create branch"
    runlocal git push origin br1
    expect "\* \[new branch\]      br1 -> br1"
    expect_push_ok "br1 -> br1"

    name "u1 rewind branch"
    runlocal git reset --hard HEAD^
    mdc r1file4
    runlocal git push origin +br1
    expect "remote: + refs/heads/br1 u1/r1 u1 DENIED by refs/"
    expect "remote: error: hook declined to update refs/heads/br1"

    name "u1 delete branch"
    runlocal git push origin :br1
    expect "\[deleted\]         br1"

    cd ~/td
    rm -rf r1
    runlocal git clone u3:u3/r1
    expect "Initialized empty Git repository in $TEST_BASE_FULL/u3/r1.git/"
    cd r1
    mdc r1file1
    runlocal git push origin master
    runlocal git checkout -b br1
    mdc r1file2
    mdc r1file3

    name "u3 create branch"
    runlocal git push origin br1
    expect "\* \[new branch\]      br1 -> br1"
    expect_push_ok "br1 -> br1"

    name "u3 rewind branch"
    runlocal git reset --hard HEAD^
    mdc r1file4
    runlocal git push origin +br1
    expect "To u3:u3/r1"
    expect "+ .......\.\.\........ br1 -> br1 (forced update)"

    name "u3 delete branch"
    runlocal git push origin :br1
    expect "\[deleted\]         br1"

    name "INTERNAL"

done
