(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <'git svn commit-diff clobber'>)} spids: [9] ) ] 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)}) ] )