(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <'subtree merge strategy'>)}
          spids: [4]
        )
      ]
      spids: [4]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(setup)} 
      {
        (SQ <'\n'> <'\n'> <'\ts="1 2 3 4 5 6 7 8" &&\n'> <'\tfor i in $s; do echo $i; done >hello &&\n'> 
          <'\tgit add hello &&\n'> <'\tgit commit -m initial &&\n'> <'\tgit checkout -b side &&\n'> <'\techo >>hello world &&\n'> 
          <'\tgit add hello &&\n'> <'\tgit commit -m second &&\n'> <'\tgit checkout master &&\n'> 
          <'\tfor i in mundo $s; do echo $i; done >hello &&\n'> <'\tgit add hello &&\n'> <'\tgit commit -m master\n'> <'\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'subtree available and works like recursive'>)} 
      {
        (SQ <'\n'> <'\n'> <'\tgit merge -s subtree side &&\n'> 
          <'\tfor i in mundo $s world; do echo $i; done >expect &&\n'> <'\ttest_cmp expect hello\n'> <'\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <setup>)} 
      {
        (SQ <'\n'> <'\tmkdir git-gui &&\n'> <'\tcd git-gui &&\n'> <'\tgit init &&\n'> 
          <'\techo git-gui > git-gui.sh &&\n'> <'\to1=$(git hash-object git-gui.sh) &&\n'> <'\tgit add git-gui.sh &&\n'> 
          <'\tgit commit -m "initial git-gui" &&\n'> <'\tcd .. &&\n'> <'\tmkdir git &&\n'> <'\tcd git &&\n'> <'\tgit init &&\n'> <'\techo git >git.c &&\n'> 
          <'\to2=$(git hash-object git.c) &&\n'> <'\tgit add git.c &&\n'> <'\tgit commit -m "initial git"\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'initial merge'>)} 
      {
        (SQ <'\n'> <'\tgit remote add -f gui ../git-gui &&\n'> 
          <'\tgit merge -s ours --no-commit --allow-unrelated-histories gui/master &&\n'> <'\tgit read-tree --prefix=git-gui/ -u gui/master &&\n'> 
          <'\tgit commit -m "Merge git-gui as our subdirectory" &&\n'> <'\tgit checkout -b work &&\n'> <'\tgit ls-files -s >actual &&\n'> <'\t(\n'> 
          <'\t\techo "100644 $o1 0\tgit-gui/git-gui.sh"\n'> <'\t\techo "100644 $o2 0\tgit.c"\n'> <'\t) >expected &&\n'> <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'merge update'>)} 
      {
        (SQ <'\n'> <'\tcd ../git-gui &&\n'> <'\techo git-gui2 > git-gui.sh &&\n'> 
          <'\to3=$(git hash-object git-gui.sh) &&\n'> <'\tgit add git-gui.sh &&\n'> <'\tgit checkout -b master2 &&\n'> 
          <'\tgit commit -m "update git-gui" &&\n'> <'\tcd ../git &&\n'> <'\tgit pull -s subtree gui master2 &&\n'> <'\tgit ls-files -s >actual &&\n'> 
          <'\t(\n'> <'\t\techo "100644 $o3 0\tgit-gui/git-gui.sh"\n'> <'\t\techo "100644 $o2 0\tgit.c"\n'> 
          <'\t) >expected &&\n'> <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'initial ambiguous subtree'>)} 
      {
        (SQ <'\n'> <'\tcd ../git &&\n'> <'\tgit reset --hard master &&\n'> 
          <'\tgit checkout -b master2 &&\n'> <'\tgit merge -s ours --no-commit gui/master &&\n'> 
          <'\tgit read-tree --prefix=git-gui2/ -u gui/master &&\n'> <'\tgit commit -m "Merge git-gui2 as our subdirectory" &&\n'> <'\tgit checkout -b work2 &&\n'> 
          <'\tgit ls-files -s >actual &&\n'> <'\t(\n'> <'\t\techo "100644 $o1 0\tgit-gui/git-gui.sh"\n'> 
          <'\t\techo "100644 $o1 0\tgit-gui2/git-gui.sh"\n'> <'\t\techo "100644 $o2 0\tgit.c"\n'> <'\t) >expected &&\n'> <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'merge using explicit'>)} 
      {
        (SQ <'\n'> <'\tcd ../git &&\n'> <'\tgit reset --hard master2 &&\n'> 
          <'\tgit pull -Xsubtree=git-gui gui master2 &&\n'> <'\tgit ls-files -s >actual &&\n'> <'\t(\n'> <'\t\techo "100644 $o3 0\tgit-gui/git-gui.sh"\n'> 
          <'\t\techo "100644 $o1 0\tgit-gui2/git-gui.sh"\n'> <'\t\techo "100644 $o2 0\tgit.c"\n'> <'\t) >expected &&\n'> <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'merge2 using explicit'>)} 
      {
        (SQ <'\n'> <'\tcd ../git &&\n'> <'\tgit reset --hard master2 &&\n'> 
          <'\tgit pull -Xsubtree=git-gui2 gui master2 &&\n'> <'\tgit ls-files -s >actual &&\n'> <'\t(\n'> <'\t\techo "100644 $o1 0\tgit-gui/git-gui.sh"\n'> 
          <'\t\techo "100644 $o3 0\tgit-gui2/git-gui.sh"\n'> <'\t\techo "100644 $o2 0\tgit.c"\n'> <'\t) >expected &&\n'> <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (C {(test_done)})
  ]
)