(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 <'git svn test (option --preserve-empty-dirs)\n'> <'\n'> 
                <'This test uses git to clone a Subversion repository that contains empty\n'> <'directories, and checks that corresponding directories are created in the\n'> 
                <'local Git repository with placeholder files.'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <.>
      more_env: []
      words: [{<.>} {<'./lib-git-svn.sh'>}]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'GIT_REPO='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'GIT_REPO='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GIT_REPO='> name:GIT_REPO)
          op: assign_op.Equal
          rhs: {<git-svn-repo>}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'initialize source svn repo containing empty dirs'>)}
        {
          (SQ <'\n'> <'\tsvn_cmd mkdir -m x "$svnrepo"/trunk &&\n'> 
            <'\tsvn_cmd co "$svnrepo"/trunk "$SVN_TREE" &&\n'> <'\t(\n'> <'\t\tcd "$SVN_TREE" &&\n'> <'\t\tmkdir -p 1 2 3/a 3/b 4 5 6 &&\n'> 
            <'\t\techo "First non-empty file"  > 2/file1.txt &&\n'> <'\t\techo "Second non-empty file" > 2/file2.txt &&\n'> 
            <'\t\techo "Third non-empty file"  > 3/a/file1.txt &&\n'> <'\t\techo "Fourth non-empty file" > 3/b/file1.txt &&\n'> <'\t\tsvn_cmd add 1 2 3 4 5 6 &&\n'> 
            <'\t\tsvn_cmd commit -m "initial commit" &&\n'> <'\n'> <'\t\tmkdir 4/a &&\n'> <'\t\tsvn_cmd add 4/a &&\n'> 
            <'\t\tsvn_cmd commit -m "nested empty directory" &&\n'> <'\t\tmkdir 4/a/b &&\n'> <'\t\tsvn_cmd add 4/a/b &&\n'> 
            <'\t\tsvn_cmd commit -m "deeply nested empty directory" &&\n'> <'\t\tmkdir 4/a/b/c &&\n'> <'\t\tsvn_cmd add 4/a/b/c &&\n'> 
            <'\t\tsvn_cmd commit -m "really deeply nested empty directory" &&\n'> <'\t\techo "Kill the placeholder file" > 4/a/b/c/foo &&\n'> <'\t\tsvn_cmd add 4/a/b/c/foo &&\n'> 
            <'\t\tsvn_cmd commit -m "Regular file to remove placeholder" &&\n'> <'\n'> <'\t\tsvn_cmd del 2/file2.txt &&\n'> <'\t\tsvn_cmd del 3/b &&\n'> 
            <'\t\tsvn_cmd commit -m "delete non-last entry in directory" &&\n'> <'\n'> <'\t\tsvn_cmd del 2/file1.txt &&\n'> <'\t\tsvn_cmd del 3/a &&\n'> 
            <'\t\tsvn_cmd commit -m "delete last entry in directory" &&\n'> <'\n'> <'\t\techo "Conflict file" > 5/.placeholder &&\n'> <'\t\tmkdir 6/.placeholder &&\n'> 
            <'\t\tsvn_cmd add 5/.placeholder 6/.placeholder &&\n'> <'\t\tsvn_cmd commit -m "Placeholder Namespace conflict"\n'> <'\t) &&\n'> <'\trm -rf "$SVN_TREE"\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'clone svn repo with --preserve-empty-dirs'>)}
        {(SQ <'\n'> <'\tgit svn clone "$svnrepo"/trunk --preserve-empty-dirs "$GIT_REPO"\n'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'directory empty from inception'>)}
        {
          (SQ <'\n'> <'\ttest -f "$GIT_REPO"/1/.gitignore &&\n'> 
            <'\ttest $(find "$GIT_REPO"/1 -type f | wc -l) = "1"\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'directory empty from subsequent svn commit'>)}
        {
          (SQ <'\n'> <'\ttest -f "$GIT_REPO"/2/.gitignore &&\n'> 
            <'\ttest $(find "$GIT_REPO"/2 -type f | wc -l) = "1" &&\n'> <'\ttest -f "$GIT_REPO"/3/.gitignore &&\n'> <'\ttest $(find "$GIT_REPO"/3 -type f | wc -l) = "1"\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'add entry to previously empty directory'>)}
        {
          (SQ <'\n'> <'\ttest $(find "$GIT_REPO"/4 -type f | wc -l) = "1" &&\n'> 
            <'\ttest -f "$GIT_REPO"/4/a/b/c/foo\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'remove non-last entry from directory'>)}
        {
          (SQ <'\n'> <'\t(\n'> <'\t\tcd "$GIT_REPO" &&\n'> <'\t\tgit checkout HEAD~2\n'> <'\t) &&\n'> 
            <'\ttest_must_fail test -f "$GIT_REPO"/2/.gitignore &&\n'> <'\ttest_must_fail test -f "$GIT_REPO"/3/.gitignore\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'clone svn repo with --placeholder-file specified'>)}
        {
          (SQ <'\n'> <'\trm -rf "$GIT_REPO" &&\n'> 
            <'\tgit svn clone "$svnrepo"/trunk --preserve-empty-dirs \\\n'> <'\t\t--placeholder-file=.placeholder "$GIT_REPO" &&\n'> 
            <'\tfind "$GIT_REPO" -type f -name ".placeholder" &&\n'> <'\ttest $(find "$GIT_REPO" -type f -name ".placeholder" | wc -l) = "5"\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'placeholder namespace conflict with file'>)}
        {(SQ <'\n'> <'\ttest -s "$GIT_REPO"/5/.placeholder\n'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'placeholder namespace conflict with directory'>)}
        {
          (SQ <'\n'> <'\ttest -d "$GIT_REPO"/6/.placeholder &&\n'> 
            <'\ttest -f "$GIT_REPO"/6/.placeholder/.placeholder &&\n'> <'\ttest $(find "$GIT_REPO"/6 -type f | wc -l) = "1"\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'second set of svn commits and rebase'>)}
        {
          (SQ <'\n'> <'\tsvn_cmd co "$svnrepo"/trunk "$SVN_TREE" &&\n'> <'\t(\n'> 
            <'\t\tcd "$SVN_TREE" &&\n'> <'\t\tmkdir -p 7 &&\n'> <'\t\techo "This should remove placeholder" > 1/file1.txt &&\n'> 
            <'\t\techo "This should not remove placeholder" > 5/file1.txt &&\n'> <'\t\tsvn_cmd add 7 1/file1.txt 5/file1.txt &&\n'> 
            <'\t\tsvn_cmd commit -m "subsequent svn commit for persistence tests"\n'> <'\t) &&\n'> <'\trm -rf "$SVN_TREE" &&\n'> <'\t(\n'> <'\t\tcd "$GIT_REPO" &&\n'> <'\t\tgit svn rebase\n'> 
            <'\t)\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'flag persistence during subsqeuent rebase'>)}
        {
          (SQ <'\n'> <'\ttest -f "$GIT_REPO"/7/.placeholder &&\n'> 
            <'\ttest $(find "$GIT_REPO"/7 -type f | wc -l) = "1"\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'placeholder list persistence during subsqeuent rebase'>)}
        {
          (SQ <'\n'> <'\ttest -f "$GIT_REPO"/1/file1.txt &&\n'> 
            <'\ttest $(find "$GIT_REPO"/1 -type f | wc -l) = "1" &&\n'> <'\n'> <'\ttest -f "$GIT_REPO"/5/file1.txt &&\n'> <'\ttest -f "$GIT_REPO"/5/.placeholder &&\n'> 
            <'\ttest $(find "$GIT_REPO"/5 -type f | wc -l) = "2"\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_done>
      more_env: []
      words: [{<test_done>}]
      redirects: []
      do_fork: T
    )
  ]
)