(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)})
  ]
)