(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: {(SQ <'git svn commit-diff clobber'>)} spids: [9] ) ] ) (C {<.>} {<'./lib-git-svn.sh'>}) (C {<test_expect_success>} {(SQ <'initialize repo'>)} { (SQ <'\n'> <'\tmkdir import &&\n'> <'\t(\n'> <'\t\tcd import &&\n'> <'\t\techo initial >file &&\n'> <'\t\tsvn_cmd import -m "initial" . "$svnrepo"\n'> <'\t) &&\n'> <'\techo initial > file &&\n'> <'\tgit update-index --add file &&\n'> <'\tgit commit -a -m "initial"\n'> <'\t'> ) } ) (C {<test_expect_success>} {(SQ <'commit change from svn side'>)} { (SQ <'\n'> <'\tsvn_cmd co "$svnrepo" t.svn &&\n'> <'\t(\n'> <'\t\tcd t.svn &&\n'> <'\t\techo second line from svn >>file &&\n'> <'\t\tpoke file &&\n'> <'\t\tsvn_cmd commit -m "second line from svn"\n'> <'\t) &&\n'> <'\trm -rf t.svn\n'> <'\t'> ) } ) (C {<test_expect_success>} {(SQ <'commit conflicting change from git'>)} { (SQ <'\n'> <'\techo second line from git >> file &&\n'> <'\tgit commit -a -m "second line from git" &&\n'> <'\ttest_must_fail git svn commit-diff -r1 HEAD~1 HEAD "$svnrepo"\n'> ) } ) (C {<test_expect_success>} {(SQ <'commit complementing change from git'>)} { (SQ <'\n'> <'\tgit reset --hard HEAD~1 &&\n'> <'\techo second line from svn >> file &&\n'> <'\tgit commit -a -m "second line from svn" &&\n'> <'\techo third line from git >> file &&\n'> <'\tgit commit -a -m "third line from git" &&\n'> <'\tgit svn commit-diff -r2 HEAD~1 HEAD "$svnrepo"\n'> <'\t'> ) } ) (C {<test_expect_success>} {(SQ <'dcommit fails to commit because of conflict'>)} { (SQ <'\n'> <'\tgit svn init "$svnrepo" &&\n'> <'\tgit svn fetch &&\n'> <'\tgit reset --hard refs/remotes/git-svn &&\n'> <'\tsvn_cmd co "$svnrepo" t.svn &&\n'> <'\t(\n'> <'\t\tcd t.svn &&\n'> <'\t\techo fourth line from svn >>file &&\n'> <'\t\tpoke file &&\n'> <'\t\tsvn_cmd commit -m "fourth line from svn"\n'> <'\t) &&\n'> <'\trm -rf t.svn &&\n'> <'\techo "fourth line from git" >> file &&\n'> <'\tgit commit -a -m "fourth line from git" &&\n'> <'\ttest_must_fail git svn dcommit\n'> <'\t'> ) } ) (C {<test_expect_success>} {(SQ <'dcommit does the svn equivalent of an index merge'>)} { (DQ <'\n'> <'\tgit reset --hard refs/remotes/git-svn &&\n'> <'\techo \'index merge\' > file2 &&\n'> <'\tgit update-index --add file2 &&\n'> <'\tgit commit -a -m \'index merge\' &&\n'> <'\techo \'more changes\' >> file2 &&\n'> <'\tgit update-index file2 &&\n'> <'\tgit commit -a -m \'more changes\' &&\n'> <'\tgit svn dcommit\n'> <'\t'> ) } ) (C {<test_expect_success>} {(SQ <'commit another change from svn side'>)} { (SQ <'\n'> <'\tsvn_cmd co "$svnrepo" t.svn &&\n'> <'\t(\n'> <'\t\tcd t.svn &&\n'> <'\t\techo third line from svn >>file &&\n'> <'\t\tpoke file &&\n'> <'\t\tsvn_cmd commit -m "third line from svn"\n'> <'\t) &&\n'> <'\trm -rf t.svn\n'> <'\t'> ) } ) (C {<test_expect_success>} {(SQ <'multiple dcommit from git svn will not clobber svn'>)} { (DQ <'\n'> <'\tgit reset --hard refs/remotes/git-svn &&\n'> <'\techo new file >> new-file &&\n'> <'\tgit update-index --add new-file &&\n'> <'\tgit commit -a -m \'new file\' &&\n'> <'\techo clobber > file &&\n'> <'\tgit commit -a -m \'clobber\' &&\n'> <'\ttest_must_fail git svn dcommit\n'> <'\t'> ) } ) (C {<test_expect_success>} {(SQ <'check that rebase really failed'>)} {(SQ <'\n'> <'\ttest -d .git/rebase-apply\n'>)} ) (C {<test_expect_success>} {(SQ <'resolve, continue the rebase and dcommit'>)} { (DQ <'\n'> <'\techo clobber and I really mean it > file &&\n'> <'\tgit update-index file &&\n'> <'\tgit rebase --continue &&\n'> <'\tgit svn dcommit\n'> <'\t'> ) } ) (C {<test_done>}) ] )