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