(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <"git-svn svn mergeinfo propagation">)}
          spids: [16]
        )
      ]
      spids: [16]
    )
    (C {(.)} {(./lib-git-svn.sh)})
    (C {(test_expect_success)} {(SQ <"load svn dump">)} 
      {
        (DQ ("\n") ("\tsvnadmin load -q '") ($ VSub_Name "$rawsvnrepo") ("' ") ("\t  < '") 
          ($ VSub_Name "$TEST_DIRECTORY") ("/t9161/branches.dump' &&\n") ("\tgit svn init --minimize-url -R svnmerge ") 
          ("\t  -T trunk -b branches '") ($ VSub_Name "$svnrepo") ("' &&\n") ("\tgit svn fetch --all\n") ("\t")
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"propagate merge information">)} 
      {
        (SQ <"\n"> <"\tgit config svn.pushmergeinfo yes &&\n"> <"\tgit checkout origin/svnb1 &&\n"> 
          <"\tgit merge --no-ff origin/svnb2 &&\n"> <"\tgit svn dcommit\n"> <"\t">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"check svn:mergeinfo">)} 
      {
        (SQ <"\n"> <"\tmergeinfo=$(svn_cmd propget svn:mergeinfo \"$svnrepo\"/branches/svnb1) &&\n"> 
          <"\ttest \"$mergeinfo\" = \"/branches/svnb2:3,8\"\n"> <"\t">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"merge another branch">)} 
      {(SQ <"\n"> <"\tgit merge --no-ff origin/svnb3 &&\n"> <"\tgit svn dcommit\n"> <"\t">)}
    )
    (C {(test_expect_success)} {(SQ <"check primary parent mergeinfo respected">)} 
      {
        (SQ <"\n"> <"\tmergeinfo=$(svn_cmd propget svn:mergeinfo \"$svnrepo\"/branches/svnb1) &&\n"> 
          <"\ttest \"$mergeinfo\" = \"/branches/svnb2:3,8\n"> <"/branches/svnb3:4,9\"\n"> <"\t">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"merge existing merge">)} 
      {(SQ <"\n"> <"\tgit merge --no-ff origin/svnb4 &&\n"> <"\tgit svn dcommit\n"> <"\t">)}
    )
    (C {(test_expect_success)} {(DQ ("check both parents' mergeinfo respected"))} 
      {
        (SQ <"\n"> <"\tmergeinfo=$(svn_cmd propget svn:mergeinfo \"$svnrepo\"/branches/svnb1) &&\n"> 
          <"\ttest \"$mergeinfo\" = \"/branches/svnb2:3,8\n"> <"/branches/svnb3:4,9\n"> <"/branches/svnb4:5-6,10-12\n"> <"/branches/svnb5:6,11\"\n"> <"\t">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"make further commits to branch">)} 
      {
        (SQ <"\n"> <"\tgit checkout origin/svnb2 &&\n"> <"\ttouch newb2file &&\n"> 
          <"\tgit add newb2file &&\n"> <"\tgit commit -m \"later b2 commit\" &&\n"> <"\ttouch newb2file-2 &&\n"> 
          <"\tgit add newb2file-2 &&\n"> <"\tgit commit -m \"later b2 commit 2\" &&\n"> <"\tgit svn dcommit\n"> <"\t">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"second forward merge">)} 
      {
        (SQ <"\n"> <"\tgit checkout origin/svnb1 &&\n"> <"\tgit merge --no-ff origin/svnb2 &&\n"> 
          <"\tgit svn dcommit\n"> <"\t">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"check new mergeinfo added">)} 
      {
        (SQ <"\n"> <"\tmergeinfo=$(svn_cmd propget svn:mergeinfo \"$svnrepo\"/branches/svnb1) &&\n"> 
          <"\ttest \"$mergeinfo\" = \"/branches/svnb2:3,8,16-17\n"> <"/branches/svnb3:4,9\n"> <"/branches/svnb4:5-6,10-12\n"> <"/branches/svnb5:6,11\"\n"> <"\t">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"reintegration merge">)} 
      {
        (SQ <"\n"> <"\tgit checkout origin/svnb4 &&\n"> <"\tgit merge --no-ff origin/svnb1 &&\n"> 
          <"\tgit svn dcommit\n"> <"\t">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"check reintegration mergeinfo">)} 
      {
        (SQ <"\n"> <"\tmergeinfo=$(svn_cmd propget svn:mergeinfo \"$svnrepo\"/branches/svnb4) &&\n"> 
          <"\ttest \"$mergeinfo\" = \"/branches/svnb1:2-4,7-9,13-18\n"> <"/branches/svnb2:3,8,16-17\n"> <"/branches/svnb3:4,9\n"> <"/branches/svnb5:6,11\"\n"> <"\t">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"dcommit a merge at the top of a stack">)} 
      {
        (SQ <"\n"> <"\tgit checkout origin/svnb1 &&\n"> <"\ttouch anotherfile &&\n"> 
          <"\tgit add anotherfile &&\n"> <"\tgit commit -m \"a commit\" &&\n"> <"\tgit merge origin/svnb4 &&\n"> <"\tgit svn dcommit\n"> <"\t">
        )
      }
    )
    (C {(test_done)})
  ]
)