(command.CommandList
  children: [
    (command.ShAssignment
      left: <Id.Lit_VarLike 'test_description='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'test_description='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'test_description='> name:test_description)
          op: assign_op.Equal
          rhs: {(SQ <'Merge-recursive merging renames'>)}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <.>
      more_env: []
      words: [{<.>} {<'./test-lib.sh'>}]
      redirects: []
      do_fork: T
    )
    (command.ShFunction
      name_tok: <modify>
      name: modify
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <sed>
                  more_env: []
                  words: [{<sed>} {<-e>} {(DQ ($ Id.VSub_Number 1))}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Less '<'>
                      loc: (redir_loc.Fd fd:0)
                      arg: {(DQ ($ Id.VSub_Number 2))}
                    )
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ ($ Id.VSub_Number 2) <.x>)}
                    )
                  ]
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <mv>
                  more_env: []
                  words: [{<mv>} {(DQ ($ Id.VSub_Number 2) <.x>)} {(DQ ($ Id.VSub_Number 2))}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {<setup>}
        {
          (SQ <'\n'> <'cat >A <<\\EOF &&\n'> <'a aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n'> 
            <'b bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\n'> <'c cccccccccccccccccccccccccccccccccccccccccccccccc\n'> 
            <'d dddddddddddddddddddddddddddddddddddddddddddddddd\n'> <'e eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\n'> 
            <'f ffffffffffffffffffffffffffffffffffffffffffffffff\n'> <'g gggggggggggggggggggggggggggggggggggggggggggggggg\n'> 
            <'h hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh\n'> <'i iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii\n'> 
            <'j jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj\n'> <'k kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk\n'> 
            <'l llllllllllllllllllllllllllllllllllllllllllllllll\n'> <'m mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm\n'> 
            <'n nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn\n'> <'o oooooooooooooooooooooooooooooooooooooooooooooooo\n'> <'EOF\n'> <'\n'> <'cat >M <<\\EOF &&\n'> 
            <'A AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n'> <'B BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB\n'> 
            <'C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\n'> <'D DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD\n'> 
            <'E EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n'> <'F FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\n'> 
            <'G GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG\n'> <'H HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH\n'> 
            <'I IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII\n'> <'J JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ\n'> 
            <'K KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK\n'> <'L LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL\n'> 
            <'M MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM\n'> <'N NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\n'> 
            <'O OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO\n'> <'EOF\n'> <'\n'> <'git add A M &&\n'> <'git commit -m "initial has A and M" &&\n'> 
            <'git branch white &&\n'> <'git branch red &&\n'> <'git branch blue &&\n'> <'git branch yellow &&\n'> <'git branch change &&\n'> 
            <'git branch change+rename &&\n'> <'\n'> <'sed -e "/^g /s/.*/g : master changes a line/" <A >A+ &&\n'> <'mv A+ A &&\n'> 
            <'git commit -a -m "master updates A" &&\n'> <'\n'> <'git checkout yellow &&\n'> <'rm -f M &&\n'> <'git commit -a -m "yellow removes M" &&\n'> <'\n'> 
            <'git checkout white &&\n'> <'sed -e "/^g /s/.*/g : white changes a line/" <A >B &&\n'> 
            <'sed -e "/^G /s/.*/G : colored branch changes a line/" <M >N &&\n'> <'rm -f A M &&\n'> <'git update-index --add --remove A B M N &&\n'> 
            <'git commit -m "white renames A->B, M->N" &&\n'> <'\n'> <'git checkout red &&\n'> <'sed -e "/^g /s/.*/g : red changes a line/" <A >B &&\n'> 
            <'sed -e "/^G /s/.*/G : colored branch changes a line/" <M >N &&\n'> <'rm -f A M &&\n'> <'git update-index --add --remove A B M N &&\n'> 
            <'git commit -m "red renames A->B, M->N" &&\n'> <'\n'> <'git checkout blue &&\n'> <'sed -e "/^g /s/.*/g : blue changes a line/" <A >C &&\n'> 
            <'sed -e "/^G /s/.*/G : colored branch changes a line/" <M >N &&\n'> <'rm -f A M &&\n'> <'git update-index --add --remove A C M N &&\n'> 
            <'git commit -m "blue renames A->C, M->N" &&\n'> <'\n'> <'git checkout change &&\n'> <'sed -e "/^g /s/.*/g : changed line/" <A >A+ &&\n'> 
            <'mv A+ A &&\n'> <'git commit -q -a -m "changed" &&\n'> <'\n'> <'git checkout change+rename &&\n'> 
            <'sed -e "/^g /s/.*/g : changed line/" <A >B &&\n'> <'rm A &&\n'> <'git update-index --add B &&\n'> <'git commit -q -a -m "changed and renamed" &&\n'> 
            <'\n'> <'git checkout master'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'pull renaming branch into unrenaming one'>)}
        {
          (SQ <'\n'> <'\tgit show-branch &&\n'> <'\ttest_expect_code 1 git pull . white &&\n'> 
            <'\tgit ls-files -s &&\n'> <'\tgit ls-files -u B >b.stages &&\n'> <'\ttest_line_count = 3 b.stages &&\n'> 
            <'\tgit ls-files -s N >n.stages &&\n'> <'\ttest_line_count = 1 n.stages &&\n'> <'\tsed -ne "/^g/{\n'> <'\tp\n'> <'\tq\n'> 
            <'\t}" B | grep master &&\n'> <'\tgit diff --exit-code white N\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'pull renaming branch into another renaming one'>)}
        {
          (SQ <'\n'> <'\trm -f B &&\n'> <'\tgit reset --hard &&\n'> <'\tgit checkout red &&\n'> 
            <'\ttest_expect_code 1 git pull . white &&\n'> <'\tgit ls-files -u B >b.stages &&\n'> <'\ttest_line_count = 3 b.stages &&\n'> 
            <'\tgit ls-files -s N >n.stages &&\n'> <'\ttest_line_count = 1 n.stages &&\n'> <'\tsed -ne "/^g/{\n'> <'\tp\n'> <'\tq\n'> 
            <'\t}" B | grep red &&\n'> <'\tgit diff --exit-code white N\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'pull unrenaming branch into renaming one'>)}
        {
          (SQ <'\n'> <'\tgit reset --hard &&\n'> <'\tgit show-branch &&\n'> 
            <'\ttest_expect_code 1 git pull . master &&\n'> <'\tgit ls-files -u B >b.stages &&\n'> <'\ttest_line_count = 3 b.stages &&\n'> 
            <'\tgit ls-files -s N >n.stages &&\n'> <'\ttest_line_count = 1 n.stages &&\n'> <'\tsed -ne "/^g/{\n'> <'\tp\n'> <'\tq\n'> 
            <'\t}" B | grep red &&\n'> <'\tgit diff --exit-code white N\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'pull conflicting renames'>)}
        {
          (SQ <'\n'> <'\tgit reset --hard &&\n'> <'\tgit show-branch &&\n'> 
            <'\ttest_expect_code 1 git pull . blue &&\n'> <'\tgit ls-files -u A >a.stages &&\n'> <'\ttest_line_count = 1 a.stages &&\n'> 
            <'\tgit ls-files -u B >b.stages &&\n'> <'\ttest_line_count = 1 b.stages &&\n'> <'\tgit ls-files -u C >c.stages &&\n'> 
            <'\ttest_line_count = 1 c.stages &&\n'> <'\tgit ls-files -s N >n.stages &&\n'> <'\ttest_line_count = 1 n.stages &&\n'> <'\tsed -ne "/^g/{\n'> 
            <'\tp\n'> <'\tq\n'> <'\t}" B | grep red &&\n'> <'\tgit diff --exit-code white N\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'interference with untracked working tree file'>)}
        {
          (SQ <'\n'> <'\tgit reset --hard &&\n'> <'\tgit show-branch &&\n'> 
            <'\techo >A this file should not matter &&\n'> <'\ttest_expect_code 1 git pull . white &&\n'> <'\ttest_path_is_file A\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'interference with untracked working tree file'>)}
        {
          (SQ <'\n'> <'\tgit reset --hard &&\n'> <'\tgit checkout white &&\n'> 
            <'\tgit show-branch &&\n'> <'\trm -f A &&\n'> <'\techo >A this file should not matter &&\n'> 
            <'\ttest_expect_code 1 git pull . red &&\n'> <'\ttest_path_is_file A\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'interference with untracked working tree file'>)}
        {
          (SQ <'\n'> <'\tgit reset --hard &&\n'> <'\trm -f A M &&\n'> <'\tgit checkout -f master &&\n'> 
            <'\tgit tag -f anchor &&\n'> <'\tgit show-branch &&\n'> <'\tgit pull . yellow &&\n'> <'\ttest_path_is_missing M &&\n'> 
            <'\tgit reset --hard anchor\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'updated working tree file should prevent the merge'>)}
        {
          (SQ <'\n'> <'\tgit reset --hard &&\n'> <'\trm -f A M &&\n'> <'\tgit checkout -f master &&\n'> 
            <'\tgit tag -f anchor &&\n'> <'\tgit show-branch &&\n'> <'\techo >>M one line addition &&\n'> <'\tcat M >M.saved &&\n'> 
            <'\ttest_expect_code 128 git pull . yellow &&\n'> <'\ttest_cmp M M.saved &&\n'> <'\trm -f M.saved\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'updated working tree file should prevent the merge'>)}
        {
          (SQ <'\n'> <'\tgit reset --hard &&\n'> <'\trm -f A M &&\n'> <'\tgit checkout -f master &&\n'> 
            <'\tgit tag -f anchor &&\n'> <'\tgit show-branch &&\n'> <'\techo >>M one line addition &&\n'> <'\tcat M >M.saved &&\n'> 
            <'\tgit update-index M &&\n'> <'\ttest_expect_code 128 git pull . yellow &&\n'> <'\ttest_cmp M M.saved &&\n'> <'\trm -f M.saved\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'interference with untracked working tree file'>)}
        {
          (SQ <'\n'> <'\tgit reset --hard &&\n'> <'\trm -f A M &&\n'> <'\tgit checkout -f yellow &&\n'> 
            <'\tgit tag -f anchor &&\n'> <'\tgit show-branch &&\n'> <'\techo >M this file should not matter &&\n'> <'\tgit pull . master &&\n'> 
            <'\ttest_path_is_file M &&\n'> <'\t! {\n'> <'\t\tgit ls-files -s |\n'> <'\t\tgrep M\n'> <'\t} &&\n'> <'\tgit reset --hard anchor\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'merge of identical changes in a renamed file'>)}
        {
          (SQ <'\n'> <'\trm -f A M N &&\n'> <'\tgit reset --hard &&\n'> 
            <'\tgit checkout change+rename &&\n'> <'\tGIT_MERGE_VERBOSITY=3 git merge change | test_i18ngrep "^Skipped B" &&\n'> 
            <'\tgit reset --hard HEAD^ &&\n'> <'\tgit checkout change &&\n'> 
            <'\tGIT_MERGE_VERBOSITY=3 git merge change+rename | test_i18ngrep "^Skipped B"\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'setup for rename + d/f conflicts'>)}
        {
          (SQ <'\n'> <'\tgit reset --hard &&\n'> <'\tgit checkout --orphan dir-in-way &&\n'> 
            <'\tgit rm -rf . &&\n'> <'\tgit clean -fdqx &&\n'> <'\n'> <'\tmkdir sub &&\n'> <'\tmkdir dir &&\n'> 
            <'\tprintf "1\\n2\\n3\\n4\\n5\\n6\\n7\\n8\\n9\\n10\\n" >sub/file &&\n'> <'\techo foo >dir/file-in-the-way &&\n'> <'\tgit add -A &&\n'> <'\tgit commit -m "Common commit" &&\n'> 
            <'\n'> <'\techo 11 >>sub/file &&\n'> <'\techo more >>dir/file-in-the-way &&\n'> <'\tgit add -u &&\n'> 
            <'\tgit commit -m "Commit to merge, with dir in the way" &&\n'> <'\n'> <'\tgit checkout -b dir-not-in-way &&\n'> <'\tgit reset --soft HEAD^ &&\n'> 
            <'\tgit rm -rf dir &&\n'> <'\tgit commit -m "Commit to merge, with dir removed" -- dir sub/file &&\n'> <'\n'> 
            <'\tgit checkout -b renamed-file-has-no-conflicts dir-in-way~1 &&\n'> <'\tgit rm -rf dir &&\n'> <'\tgit rm sub/file &&\n'> 
            <'\tprintf "1\\n2\\n3\\n4\\n5555\\n6\\n7\\n8\\n9\\n10\\n" >dir &&\n'> <'\tgit add dir &&\n'> <'\tgit commit -m "Independent change" &&\n'> <'\n'> 
            <'\tgit checkout -b renamed-file-has-conflicts dir-in-way~1 &&\n'> <'\tgit rm -rf dir &&\n'> <'\tgit mv sub/file dir &&\n'> <'\techo 12 >>dir &&\n'> <'\tgit add dir &&\n'> 
            <'\tgit commit -m "Conflicting change"\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <printf>
      more_env: []
      words: [
        {<printf>}
        {
          (DQ <1> <Id.Lit_BadBackslash '\\'> <n2> <Id.Lit_BadBackslash '\\'> <n3> 
            <Id.Lit_BadBackslash '\\'> <n4> <Id.Lit_BadBackslash '\\'> <n5555> <Id.Lit_BadBackslash '\\'> <n6> <Id.Lit_BadBackslash '\\'> <n7> 
            <Id.Lit_BadBackslash '\\'> <n8> <Id.Lit_BadBackslash '\\'> <n9> <Id.Lit_BadBackslash '\\'> <n10> <Id.Lit_BadBackslash '\\'> <n11> 
            <Id.Lit_BadBackslash '\\'> <n>
          )
        }
      ]
      redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expected>})]
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'Rename+D/F conflict; renamed file merges + dir not in way'>)}
        {
          (SQ <'\n'> <'\tgit reset --hard &&\n'> 
            <'\tgit checkout -q renamed-file-has-no-conflicts^0 &&\n'> <'\tgit merge --strategy=recursive dir-not-in-way &&\n'> <'\tgit diff --quiet &&\n'> 
            <'\ttest -f dir &&\n'> <'\ttest_cmp expected dir\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'Rename+D/F conflict; renamed file merges but dir in way'>)}
        {
          (SQ <'\n'> <'\tgit reset --hard &&\n'> <'\trm -rf dir~* &&\n'> 
            <'\tgit checkout -q renamed-file-has-no-conflicts^0 &&\n'> <'\ttest_must_fail git merge --strategy=recursive dir-in-way >output &&\n'> <'\n'> 
            <'\ttest_i18ngrep "CONFLICT (modify/delete): dir/file-in-the-way" output &&\n'> <'\ttest_i18ngrep "Auto-merging dir" output &&\n'> 
            <'\ttest_i18ngrep "Adding as dir~HEAD instead" output &&\n'> <'\n'> <'\ttest 3 -eq "$(git ls-files -u | wc -l)" &&\n'> 
            <'\ttest 2 -eq "$(git ls-files -u dir/file-in-the-way | wc -l)" &&\n'> <'\n'> <'\ttest_must_fail git diff --quiet &&\n'> <'\ttest_must_fail git diff --cached --quiet &&\n'> 
            <'\n'> <'\ttest -f dir/file-in-the-way &&\n'> <'\ttest -f dir~HEAD &&\n'> <'\ttest_cmp expected dir~HEAD\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'Same as previous, but merged other way'>)}
        {
          (SQ <'\n'> <'\tgit reset --hard &&\n'> <'\trm -rf dir~* &&\n'> 
            <'\tgit checkout -q dir-in-way^0 &&\n'> 
            <
'\ttest_must_fail git merge --strategy=recursive renamed-file-has-no-conflicts >output 2>errors &&\n'
            > <'\n'> <'\t! grep "error: refusing to lose untracked file at" errors &&\n'> 
            <'\ttest_i18ngrep "CONFLICT (modify/delete): dir/file-in-the-way" output &&\n'> <'\ttest_i18ngrep "Auto-merging dir" output &&\n'> 
            <'\ttest_i18ngrep "Adding as dir~renamed-file-has-no-conflicts instead" output &&\n'> <'\n'> <'\ttest 3 -eq "$(git ls-files -u | wc -l)" &&\n'> 
            <'\ttest 2 -eq "$(git ls-files -u dir/file-in-the-way | wc -l)" &&\n'> <'\n'> <'\ttest_must_fail git diff --quiet &&\n'> <'\ttest_must_fail git diff --cached --quiet &&\n'> 
            <'\n'> <'\ttest -f dir/file-in-the-way &&\n'> <'\ttest -f dir~renamed-file-has-no-conflicts &&\n'> 
            <'\ttest_cmp expected dir~renamed-file-has-no-conflicts\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.AndOr
      children: [
        (command.Simple
          blame_tok: <cat>
          more_env: []
          words: [{<cat>}]
          redirects: [
            (Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expected>})
            (Redir
              op: <Id.Redir_DLess '<<'>
              loc: (redir_loc.Fd fd:0)
              arg: 
                (redir_param.HereDoc
                  here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'> ch:E) <OF>}
                  here_end_tok: <Id.Undefined_Tok ''>
                  stdin_parts: [
                    <'1\n'>
                    <'2\n'>
                    <'3\n'>
                    <'4\n'>
                    <'5\n'>
                    <'6\n'>
                    <'7\n'>
                    <'8\n'>
                    <'9\n'>
                    <'10\n'>
                    <'<<<<<<< HEAD:dir\n'>
                    <'12\n'>
                    <'=======\n'>
                    <'11\n'>
                    <'>>>>>>> dir-not-in-way:sub/file\n'>
                  ]
                )
            )
          ]
          do_fork: T
        )
        (command.Simple
          blame_tok: <test_expect_success>
          more_env: []
          words: [
            {<test_expect_success>}
            {(SQ <'Rename+D/F conflict; renamed file cannot merge, dir not in way'>)}
            {
              (SQ <'\n'> <'\tgit reset --hard &&\n'> <'\trm -rf dir~* &&\n'> 
                <'\tgit checkout -q renamed-file-has-conflicts^0 &&\n'> <'\ttest_must_fail git merge --strategy=recursive dir-not-in-way &&\n'> <'\n'> 
                <'\ttest 3 -eq "$(git ls-files -u | wc -l)" &&\n'> <'\ttest 3 -eq "$(git ls-files -u dir | wc -l)" &&\n'> <'\n'> 
                <'\ttest_must_fail git diff --quiet &&\n'> <'\ttest_must_fail git diff --cached --quiet &&\n'> <'\n'> <'\ttest -f dir &&\n'> 
                <'\ttest_cmp expected dir\n'>
              )
            }
          ]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DAmp _>]
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'Rename+D/F conflict; renamed file cannot merge and dir in the way'>)}
        {
          (SQ <'\n'> <'\tmodify s/dir-not-in-way/dir-in-way/ expected &&\n'> <'\n'> 
            <'\tgit reset --hard &&\n'> <'\trm -rf dir~* &&\n'> <'\tgit checkout -q renamed-file-has-conflicts^0 &&\n'> 
            <'\ttest_must_fail git merge --strategy=recursive dir-in-way &&\n'> <'\n'> <'\ttest 5 -eq "$(git ls-files -u | wc -l)" &&\n'> 
            <'\ttest 3 -eq "$(git ls-files -u dir | grep -v file-in-the-way | wc -l)" &&\n'> <'\ttest 2 -eq "$(git ls-files -u dir/file-in-the-way | wc -l)" &&\n'> <'\n'> 
            <'\ttest_must_fail git diff --quiet &&\n'> <'\ttest_must_fail git diff --cached --quiet &&\n'> <'\n'> <'\ttest -f dir/file-in-the-way &&\n'> 
            <'\ttest -f dir~HEAD &&\n'> <'\ttest_cmp expected dir~HEAD\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.AndOr
      children: [
        (command.Simple
          blame_tok: <cat>
          more_env: []
          words: [{<cat>}]
          redirects: [
            (Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expected>})
            (Redir
              op: <Id.Redir_DLess '<<'>
              loc: (redir_loc.Fd fd:0)
              arg: 
                (redir_param.HereDoc
                  here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'> ch:E) <OF>}
                  here_end_tok: <Id.Undefined_Tok ''>
                  stdin_parts: [
                    <'1\n'>
                    <'2\n'>
                    <'3\n'>
                    <'4\n'>
                    <'5\n'>
                    <'6\n'>
                    <'7\n'>
                    <'8\n'>
                    <'9\n'>
                    <'10\n'>
                    <'<<<<<<< HEAD:sub/file\n'>
                    <'11\n'>
                    <'=======\n'>
                    <'12\n'>
                    <'>>>>>>> renamed-file-has-conflicts:dir\n'>
                  ]
                )
            )
          ]
          do_fork: T
        )
        (command.Simple
          blame_tok: <test_expect_success>
          more_env: []
          words: [
            {<test_expect_success>}
            {(SQ <'Same as previous, but merged other way'>)}
            {
              (SQ <'\n'> <'\tgit reset --hard &&\n'> <'\trm -rf dir~* &&\n'> 
                <'\tgit checkout -q dir-in-way^0 &&\n'> <'\ttest_must_fail git merge --strategy=recursive renamed-file-has-conflicts &&\n'> <'\n'> 
                <'\ttest 5 -eq "$(git ls-files -u | wc -l)" &&\n'> <'\ttest 3 -eq "$(git ls-files -u dir | grep -v file-in-the-way | wc -l)" &&\n'> 
                <'\ttest 2 -eq "$(git ls-files -u dir/file-in-the-way | wc -l)" &&\n'> <'\n'> <'\ttest_must_fail git diff --quiet &&\n'> <'\ttest_must_fail git diff --cached --quiet &&\n'> 
                <'\n'> <'\ttest -f dir/file-in-the-way &&\n'> <'\ttest -f dir~renamed-file-has-conflicts &&\n'> 
                <'\ttest_cmp expected dir~renamed-file-has-conflicts\n'>
              )
            }
          ]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DAmp _>]
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'setup both rename source and destination involved in D/F conflict'>)}
        {
          (SQ <'\n'> <'\tgit reset --hard &&\n'> <'\tgit checkout --orphan rename-dest &&\n'> 
            <'\tgit rm -rf . &&\n'> <'\tgit clean -fdqx &&\n'> <'\n'> <'\tmkdir one &&\n'> <'\techo stuff >one/file &&\n'> 
            <'\tgit add -A &&\n'> <'\tgit commit -m "Common commit" &&\n'> <'\n'> <'\tgit mv one/file destdir &&\n'> 
            <'\tgit commit -m "Renamed to destdir" &&\n'> <'\n'> <'\tgit checkout -b source-conflict HEAD~1 &&\n'> <'\tgit rm -rf one &&\n'> 
            <'\tmkdir destdir &&\n'> <'\ttouch one destdir/foo &&\n'> <'\tgit add -A &&\n'> <'\tgit commit -m "Conflicts in the way"\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'both rename source and destination involved in D/F conflict'>)}
        {
          (SQ <'\n'> <'\tgit reset --hard &&\n'> <'\trm -rf dir~* &&\n'> 
            <'\tgit checkout -q rename-dest^0 &&\n'> <'\ttest_must_fail git merge --strategy=recursive source-conflict &&\n'> <'\n'> 
            <'\ttest 1 -eq "$(git ls-files -u | wc -l)" &&\n'> <'\n'> <'\ttest_must_fail git diff --quiet &&\n'> <'\n'> <'\ttest -f destdir/foo &&\n'> 
            <'\ttest -f one &&\n'> <'\ttest -f destdir~HEAD &&\n'> <'\ttest "stuff" = "$(cat destdir~HEAD)"\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'setup pair rename to parent of other (D/F conflicts)'>)}
        {
          (SQ <'\n'> <'\tgit reset --hard &&\n'> <'\tgit checkout --orphan rename-two &&\n'> 
            <'\tgit rm -rf . &&\n'> <'\tgit clean -fdqx &&\n'> <'\n'> <'\tmkdir one &&\n'> <'\tmkdir two &&\n'> 
            <'\techo stuff >one/file &&\n'> <'\techo other >two/file &&\n'> <'\tgit add -A &&\n'> <'\tgit commit -m "Common commit" &&\n'> <'\n'> 
            <'\tgit rm -rf one &&\n'> <'\tgit mv two/file one &&\n'> <'\tgit commit -m "Rename two/file -> one" &&\n'> <'\n'> 
            <'\tgit checkout -b rename-one HEAD~1 &&\n'> <'\tgit rm -rf two &&\n'> <'\tgit mv one/file two &&\n'> <'\trm -r one &&\n'> 
            <'\tgit commit -m "Rename one/file -> two"\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'pair rename to parent of other (D/F conflicts) w/ untracked dir'>)}
        {
          (SQ <'\n'> <'\tgit checkout -q rename-one^0 &&\n'> <'\tmkdir one &&\n'> 
            <'\ttest_must_fail git merge --strategy=recursive rename-two &&\n'> <'\n'> <'\ttest 2 -eq "$(git ls-files -u | wc -l)" &&\n'> 
            <'\ttest 1 -eq "$(git ls-files -u one | wc -l)" &&\n'> <'\ttest 1 -eq "$(git ls-files -u two | wc -l)" &&\n'> <'\n'> 
            <'\ttest_must_fail git diff --quiet &&\n'> <'\n'> <'\ttest 4 -eq $(find . | grep -v .git | wc -l) &&\n'> <'\n'> <'\ttest -d one &&\n'> 
            <'\ttest -f one~rename-two &&\n'> <'\ttest -f two &&\n'> <'\ttest "other" = $(cat one~rename-two) &&\n'> 
            <'\ttest "stuff" = $(cat two)\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'pair rename to parent of other (D/F conflicts) w/ clean start'>)}
        {
          (SQ <'\n'> <'\tgit reset --hard &&\n'> <'\tgit clean -fdqx &&\n'> 
            <'\ttest_must_fail git merge --strategy=recursive rename-two &&\n'> <'\n'> <'\ttest 2 -eq "$(git ls-files -u | wc -l)" &&\n'> 
            <'\ttest 1 -eq "$(git ls-files -u one | wc -l)" &&\n'> <'\ttest 1 -eq "$(git ls-files -u two | wc -l)" &&\n'> <'\n'> 
            <'\ttest_must_fail git diff --quiet &&\n'> <'\n'> <'\ttest 3 -eq $(find . | grep -v .git | wc -l) &&\n'> <'\n'> <'\ttest -f one &&\n'> 
            <'\ttest -f two &&\n'> <'\ttest "other" = $(cat one) &&\n'> <'\ttest "stuff" = $(cat two)\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'setup rename of one file to two, with directories in the way'>)}
        {
          (SQ <'\n'> <'\tgit reset --hard &&\n'> <'\tgit checkout --orphan first-rename &&\n'> 
            <'\tgit rm -rf . &&\n'> <'\tgit clean -fdqx &&\n'> <'\n'> <'\techo stuff >original &&\n'> <'\tgit add -A &&\n'> 
            <'\tgit commit -m "Common commit" &&\n'> <'\n'> <'\tmkdir two &&\n'> <'\t>two/file &&\n'> <'\tgit add two/file &&\n'> 
            <'\tgit mv original one &&\n'> <'\tgit commit -m "Put two/file in the way, rename to one" &&\n'> <'\n'> 
            <'\tgit checkout -b second-rename HEAD~1 &&\n'> <'\tmkdir one &&\n'> <'\t>one/file &&\n'> <'\tgit add one/file &&\n'> <'\tgit mv original two &&\n'> 
            <'\tgit commit -m "Put one/file in the way, rename to two"\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'check handling of differently renamed file with D/F conflicts'>)}
        {
          (SQ <'\n'> <'\tgit checkout -q first-rename^0 &&\n'> 
            <'\ttest_must_fail git merge --strategy=recursive second-rename &&\n'> <'\n'> <'\ttest 5 -eq "$(git ls-files -s | wc -l)" &&\n'> 
            <'\ttest 3 -eq "$(git ls-files -u | wc -l)" &&\n'> <'\ttest 1 -eq "$(git ls-files -u one | wc -l)" &&\n'> 
            <'\ttest 1 -eq "$(git ls-files -u two | wc -l)" &&\n'> <'\ttest 1 -eq "$(git ls-files -u original | wc -l)" &&\n'> 
            <'\ttest 2 -eq "$(git ls-files -o | wc -l)" &&\n'> <'\n'> <'\ttest -f one/file &&\n'> <'\ttest -f two/file &&\n'> <'\ttest -f one~HEAD &&\n'> 
            <'\ttest -f two~second-rename &&\n'> <'\t! test -f original\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'setup rename one file to two; directories moving out of the way'>)}
        {
          (SQ <'\n'> <'\tgit reset --hard &&\n'> <'\tgit checkout --orphan first-rename-redo &&\n'> 
            <'\tgit rm -rf . &&\n'> <'\tgit clean -fdqx &&\n'> <'\n'> <'\techo stuff >original &&\n'> <'\tmkdir one two &&\n'> 
            <'\ttouch one/file two/file &&\n'> <'\tgit add -A &&\n'> <'\tgit commit -m "Common commit" &&\n'> <'\n'> <'\tgit rm -rf one &&\n'> 
            <'\tgit mv original one &&\n'> <'\tgit commit -m "Rename to one" &&\n'> <'\n'> <'\tgit checkout -b second-rename-redo HEAD~1 &&\n'> 
            <'\tgit rm -rf two &&\n'> <'\tgit mv original two &&\n'> <'\tgit commit -m "Rename to two"\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'check handling of differently renamed file with D/F conflicts'>)}
        {
          (SQ <'\n'> <'\tgit checkout -q first-rename-redo^0 &&\n'> 
            <'\ttest_must_fail git merge --strategy=recursive second-rename-redo &&\n'> <'\n'> <'\ttest 3 -eq "$(git ls-files -u | wc -l)" &&\n'> 
            <'\ttest 1 -eq "$(git ls-files -u one | wc -l)" &&\n'> <'\ttest 1 -eq "$(git ls-files -u two | wc -l)" &&\n'> 
            <'\ttest 1 -eq "$(git ls-files -u original | wc -l)" &&\n'> <'\ttest 0 -eq "$(git ls-files -o | wc -l)" &&\n'> <'\n'> <'\ttest -f one &&\n'> <'\ttest -f two &&\n'> 
            <'\t! test -f original\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'setup avoid unnecessary update, normal rename'>)}
        {
          (SQ <'\n'> <'\tgit reset --hard &&\n'> 
            <'\tgit checkout --orphan avoid-unnecessary-update-1 &&\n'> <'\tgit rm -rf . &&\n'> <'\tgit clean -fdqx &&\n'> <'\n'> 
            <'\tprintf "1\\n2\\n3\\n4\\n5\\n6\\n7\\n8\\n9\\n10\\n" >original &&\n'> <'\tgit add -A &&\n'> <'\tgit commit -m "Common commit" &&\n'> <'\n'> <'\tgit mv original rename &&\n'> 
            <'\techo 11 >>rename &&\n'> <'\tgit add -u &&\n'> <'\tgit commit -m "Renamed and modified" &&\n'> <'\n'> 
            <'\tgit checkout -b merge-branch-1 HEAD~1 &&\n'> <'\techo "random content" >random-file &&\n'> <'\tgit add -A &&\n'> 
            <'\tgit commit -m "Random, unrelated changes"\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'avoid unnecessary update, normal rename'>)}
        {
          (SQ <'\n'> <'\tgit checkout -q avoid-unnecessary-update-1^0 &&\n'> 
            <'\ttest-chmtime =1000000000 rename &&\n'> <'\ttest-chmtime -v +0 rename >expect &&\n'> <'\tgit merge merge-branch-1 &&\n'> 
            <'\ttest-chmtime -v +0 rename >actual &&\n'> <'\ttest_cmp expect actual # "rename" should have stayed intact\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'setup to test avoiding unnecessary update, with D/F conflict'>)}
        {
          (SQ <'\n'> <'\tgit reset --hard &&\n'> 
            <'\tgit checkout --orphan avoid-unnecessary-update-2 &&\n'> <'\tgit rm -rf . &&\n'> <'\tgit clean -fdqx &&\n'> <'\n'> <'\tmkdir df &&\n'> 
            <'\tprintf "1\\n2\\n3\\n4\\n5\\n6\\n7\\n8\\n9\\n10\\n" >df/file &&\n'> <'\tgit add -A &&\n'> <'\tgit commit -m "Common commit" &&\n'> <'\n'> <'\tgit mv df/file temp &&\n'> 
            <'\trm -rf df &&\n'> <'\tgit mv temp df &&\n'> <'\techo 11 >>df &&\n'> <'\tgit add -u &&\n'> 
            <'\tgit commit -m "Renamed and modified" &&\n'> <'\n'> <'\tgit checkout -b merge-branch-2 HEAD~1 &&\n'> <'\t>unrelated-change &&\n'> 
            <'\tgit add unrelated-change &&\n'> <'\tgit commit -m "Only unrelated changes"\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'avoid unnecessary update, with D/F conflict'>)}
        {
          (SQ <'\n'> <'\tgit checkout -q avoid-unnecessary-update-2^0 &&\n'> 
            <'\ttest-chmtime =1000000000 df &&\n'> <'\ttest-chmtime -v +0 df >expect &&\n'> <'\tgit merge merge-branch-2 &&\n'> 
            <'\ttest-chmtime -v +0 df >actual &&\n'> <'\ttest_cmp expect actual # "df" should have stayed intact\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'setup avoid unnecessary update, dir->(file,nothing)'>)}
        {
          (SQ <'\n'> <'\tgit rm -rf . &&\n'> <'\tgit clean -fdqx &&\n'> <'\trm -rf .git &&\n'> 
            <'\tgit init &&\n'> <'\n'> <'\t>irrelevant &&\n'> <'\tmkdir df &&\n'> <'\t>df/file &&\n'> <'\tgit add -A &&\n'> 
            <'\tgit commit -mA &&\n'> <'\n'> <'\tgit checkout -b side &&\n'> <'\tgit rm -rf df &&\n'> <'\tgit commit -mB &&\n'> <'\n'> 
            <'\tgit checkout master &&\n'> <'\tgit rm -rf df &&\n'> <'\techo bla >df &&\n'> <'\tgit add -A &&\n'> 
            <'\tgit commit -m "Add a newfile"\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'avoid unnecessary update, dir->(file,nothing)'>)}
        {
          (SQ <'\n'> <'\tgit checkout -q master^0 &&\n'> <'\ttest-chmtime =1000000000 df &&\n'> 
            <'\ttest-chmtime -v +0 df >expect &&\n'> <'\tgit merge side &&\n'> <'\ttest-chmtime -v +0 df >actual &&\n'> 
            <'\ttest_cmp expect actual # "df" should have stayed intact\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'setup avoid unnecessary update, modify/delete'>)}
        {
          (SQ <'\n'> <'\tgit rm -rf . &&\n'> <'\tgit clean -fdqx &&\n'> <'\trm -rf .git &&\n'> 
            <'\tgit init &&\n'> <'\n'> <'\t>irrelevant &&\n'> <'\t>file &&\n'> <'\tgit add -A &&\n'> <'\tgit commit -mA &&\n'> <'\n'> 
            <'\tgit checkout -b side &&\n'> <'\tgit rm -f file &&\n'> <'\tgit commit -m "Delete file" &&\n'> <'\n'> <'\tgit checkout master &&\n'> 
            <'\techo bla >file &&\n'> <'\tgit add -A &&\n'> <'\tgit commit -m "Modify file"\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'avoid unnecessary update, modify/delete'>)}
        {
          (SQ <'\n'> <'\tgit checkout -q master^0 &&\n'> <'\ttest-chmtime =1000000000 file &&\n'> 
            <'\ttest-chmtime -v +0 file >expect &&\n'> <'\ttest_must_fail git merge side &&\n'> <'\ttest-chmtime -v +0 file >actual &&\n'> 
            <'\ttest_cmp expect actual # "file" should have stayed intact\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'setup avoid unnecessary update, rename/add-dest'>)}
        {
          (SQ <'\n'> <'\tgit rm -rf . &&\n'> <'\tgit clean -fdqx &&\n'> <'\trm -rf .git &&\n'> 
            <'\tgit init &&\n'> <'\n'> <'\tprintf "1\\n2\\n3\\n4\\n5\\n6\\n7\\n8\\n" >file &&\n'> <'\tgit add -A &&\n'> 
            <'\tgit commit -mA &&\n'> <'\n'> <'\tgit checkout -b side &&\n'> <'\tcp file newfile &&\n'> <'\tgit add -A &&\n'> 
            <'\tgit commit -m "Add file copy" &&\n'> <'\n'> <'\tgit checkout master &&\n'> <'\tgit mv file newfile &&\n'> <'\tgit commit -m "Rename file"\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'avoid unnecessary update, rename/add-dest'>)}
        {
          (SQ <'\n'> <'\tgit checkout -q master^0 &&\n'> <'\ttest-chmtime =1000000000 newfile &&\n'> 
            <'\ttest-chmtime -v +0 newfile >expect &&\n'> <'\tgit merge side &&\n'> <'\ttest-chmtime -v +0 newfile >actual &&\n'> 
            <'\ttest_cmp expect actual # "file" should have stayed intact\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'setup merge of rename + small change'>)}
        {
          (SQ <'\n'> <'\tgit reset --hard &&\n'> 
            <'\tgit checkout --orphan rename-plus-small-change &&\n'> <'\tgit rm -rf . &&\n'> <'\tgit clean -fdqx &&\n'> <'\n'> <'\techo ORIGINAL >file &&\n'> 
            <'\tgit add file &&\n'> <'\n'> <'\ttest_tick &&\n'> <'\tgit commit -m Initial &&\n'> <'\tgit checkout -b rename_branch &&\n'> 
            <'\tgit mv file renamed_file &&\n'> <'\tgit commit -m Rename &&\n'> <'\tgit checkout rename-plus-small-change &&\n'> 
            <'\techo NEW-VERSION >file &&\n'> <'\tgit commit -a -m Reformat\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'merge rename + small change'>)}
        {
          (SQ <'\n'> <'\tgit merge rename_branch &&\n'> <'\n'> 
            <'\ttest 1 -eq $(git ls-files -s | wc -l) &&\n'> <'\ttest 0 -eq $(git ls-files -o | wc -l) &&\n'> 
            <'\ttest $(git rev-parse HEAD:renamed_file) = $(git rev-parse HEAD~1:file)\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'setup for use of extended merge markers'>)}
        {
          (SQ <'\n'> <'\tgit rm -rf . &&\n'> <'\tgit clean -fdqx &&\n'> <'\trm -rf .git &&\n'> 
            <'\tgit init &&\n'> <'\n'> <'\tprintf "1\\n2\\n3\\n4\\n5\\n6\\n7\\n8\\n" >original_file &&\n'> 
            <'\tgit add original_file &&\n'> <'\tgit commit -mA &&\n'> <'\n'> <'\tgit checkout -b rename &&\n'> <'\techo 9 >>original_file &&\n'> 
            <'\tgit add original_file &&\n'> <'\tgit mv original_file renamed_file &&\n'> <'\tgit commit -mB &&\n'> <'\n'> 
            <'\tgit checkout master &&\n'> <'\techo 8.5 >>original_file &&\n'> <'\tgit add original_file &&\n'> <'\tgit commit -mC\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.AndOr
      children: [
        (command.Simple
          blame_tok: <cat>
          more_env: []
          words: [{<cat>}]
          redirects: [
            (Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expected>})
            (Redir
              op: <Id.Redir_DLess '<<'>
              loc: (redir_loc.Fd fd:0)
              arg: 
                (redir_param.HereDoc
                  here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'> ch:E) <OF>}
                  here_end_tok: <Id.Undefined_Tok ''>
                  stdin_parts: [
                    <'1\n'>
                    <'2\n'>
                    <'3\n'>
                    <'4\n'>
                    <'5\n'>
                    <'6\n'>
                    <'7\n'>
                    <'8\n'>
                    <'<<<<<<< HEAD:renamed_file\n'>
                    <'9\n'>
                    <'=======\n'>
                    <'8.5\n'>
                    <'>>>>>>> master^0:original_file\n'>
                  ]
                )
            )
          ]
          do_fork: T
        )
        (command.Simple
          blame_tok: <test_expect_success>
          more_env: []
          words: [
            {<test_expect_success>}
            {(SQ <'merge master into rename has correct extended markers'>)}
            {
              (SQ <'\n'> <'\tgit checkout rename^0 &&\n'> 
                <'\ttest_must_fail git merge -s recursive master^0 &&\n'> <'\ttest_cmp expected renamed_file\n'>
              )
            }
          ]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DAmp _>]
    )
    (command.AndOr
      children: [
        (command.Simple
          blame_tok: <cat>
          more_env: []
          words: [{<cat>}]
          redirects: [
            (Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expected>})
            (Redir
              op: <Id.Redir_DLess '<<'>
              loc: (redir_loc.Fd fd:0)
              arg: 
                (redir_param.HereDoc
                  here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'> ch:E) <OF>}
                  here_end_tok: <Id.Undefined_Tok ''>
                  stdin_parts: [
                    <'1\n'>
                    <'2\n'>
                    <'3\n'>
                    <'4\n'>
                    <'5\n'>
                    <'6\n'>
                    <'7\n'>
                    <'8\n'>
                    <'<<<<<<< HEAD:original_file\n'>
                    <'8.5\n'>
                    <'=======\n'>
                    <'9\n'>
                    <'>>>>>>> rename^0:renamed_file\n'>
                  ]
                )
            )
          ]
          do_fork: T
        )
        (command.Simple
          blame_tok: <test_expect_success>
          more_env: []
          words: [
            {<test_expect_success>}
            {(SQ <'merge rename into master has correct extended markers'>)}
            {
              (SQ <'\n'> <'\tgit reset --hard &&\n'> <'\tgit checkout master^0 &&\n'> 
                <'\ttest_must_fail git merge -s recursive rename^0 &&\n'> <'\ttest_cmp expected renamed_file\n'>
              )
            }
          ]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DAmp _>]
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'setup spurious "refusing to lose untracked" message'>)}
        {
          (SQ <'\n'> <'\tgit rm -rf . &&\n'> <'\tgit clean -fdqx &&\n'> <'\trm -rf .git &&\n'> 
            <'\tgit init &&\n'> <'\n'> <'\t> irrelevant_file &&\n'> <'\tprintf "1\\n2\\n3\\n4\\n5\\n6\\n7\\n8\\n" >original_file &&\n'> 
            <'\tgit add irrelevant_file original_file &&\n'> <'\tgit commit -mA &&\n'> <'\n'> <'\tgit checkout -b rename &&\n'> 
            <'\tgit mv original_file renamed_file &&\n'> <'\tgit commit -mB &&\n'> <'\n'> <'\tgit checkout master &&\n'> <'\tgit rm original_file &&\n'> 
            <'\tgit commit -mC\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'no spurious "refusing to lose untracked" message'>)}
        {
          (SQ <'\n'> <'\tgit checkout master^0 &&\n'> 
            <'\ttest_must_fail git merge rename^0 2>errors.txt &&\n'> <'\t! grep "refusing to lose untracked file" errors.txt\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'do not follow renames for empty files'>)}
        {
          (SQ <'\n'> <'\tgit checkout -f -b empty-base &&\n'> <'\t>empty1 &&\n'> 
            <'\tgit add empty1 &&\n'> <'\tgit commit -m base &&\n'> <'\techo content >empty1 &&\n'> <'\tgit add empty1 &&\n'> 
            <'\tgit commit -m fill &&\n'> <'\tgit checkout -b empty-topic HEAD^ &&\n'> <'\tgit mv empty1 empty2 &&\n'> 
            <'\tgit commit -m rename &&\n'> <'\ttest_must_fail git merge empty-base &&\n'> <'\t>expect &&\n'> <'\ttest_cmp expect empty2\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_done>
      more_env: []
      words: [{<test_done>}]
      redirects: []
      do_fork: T
    )
  ]
)