(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 <'test transitive info/alternate entries'>)}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <.>
      more_env: []
      words: [{<.>} {<'./test-lib.sh'>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'preparing first repository'>)}
        {
          (SQ <'\n'> <'\ttest_create_repo A && (\n'> <'\t\tcd A &&\n'> 
            <'\t\techo "Hello World" > file1 &&\n'> <'\t\tgit add file1 &&\n'> <'\t\tgit commit -m "Initial commit" file1 &&\n'> 
            <'\t\tgit repack -a -d &&\n'> <'\t\tgit prune\n'> <'\t)\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'preparing second repository'>)}
        {
          (SQ <'\n'> <'\tgit clone -l -s A B && (\n'> <'\t\tcd B &&\n'> 
            <'\t\techo "foo bar" > file2 &&\n'> <'\t\tgit add file2 &&\n'> <'\t\tgit commit -m "next commit" file2 &&\n'> 
            <'\t\tgit repack -a -d -l &&\n'> <'\t\tgit prune\n'> <'\t)\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'preparing third repository'>)}
        {
          (SQ <'\n'> <'\tgit clone -l -s B C && (\n'> <'\t\tcd C &&\n'> 
            <'\t\techo "Goodbye, cruel world" > file3 &&\n'> <'\t\tgit add file3 &&\n'> <'\t\tgit commit -m "one more" file3 &&\n'> <'\t\tgit repack -a -d -l &&\n'> 
            <'\t\tgit prune\n'> <'\t)\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'count-objects shows the alternates'>)}
        {
          (SQ <'\n'> <'\tcat >expect <<-EOF &&\n'> <'\talternate: $(pwd)/B/.git/objects\n'> 
            <'\talternate: $(pwd)/A/.git/objects\n'> <'\tEOF\n'> <'\tgit -C C count-objects -v >actual &&\n'> 
            <'\tgrep ^alternate: actual >actual.alternates &&\n'> <'\ttest_cmp expect actual.alternates\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'creating too deep nesting'>)}
        {
          (SQ <'\n'> <'\tgit clone -l -s C D &&\n'> <'\tgit clone -l -s D E &&\n'> 
            <'\tgit clone -l -s E F &&\n'> <'\tgit clone -l -s F G &&\n'> <'\tgit clone --bare -l -s G H\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'validity of seventh repository'>)}
        {(SQ <'\n'> <'\tgit -C G fsck\n'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'invalidity of eighth repository'>)}
        {(SQ <'\n'> <'\ttest_must_fail git -C H fsck\n'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'breaking of loops'>)}
        {
          (SQ <'\n'> <'\techo "$(pwd)"/B/.git/objects >>A/.git/objects/info/alternates &&\n'> 
            <'\tgit -C C fsck\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'that info/alternates is necessary'>)}
        {
          (SQ <'\n'> <'\trm -f C/.git/objects/info/alternates &&\n'> 
            <'\ttest_must_fail git -C C fsck\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'that relative alternate is possible for current dir'>)}
        {
          (SQ <'\n'> <'\techo "../../../B/.git/objects" >C/.git/objects/info/alternates &&\n'> 
            <'\tgit fsck\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'that relative alternate is recursive'>)}
        {(SQ <'\n'> <'\tgit -C D fsck\n'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'relative duplicates are eliminated'>)}
        {
          (SQ <'\n'> <'\tmkdir -p deep/subdir &&\n'> 
            <'\tgit init --bare deep/subdir/duplicate.git &&\n'> <'\tcat >deep/subdir/duplicate.git/objects/info/alternates <<-\\EOF &&\n'> 
            <'\t../../../../C/.git/objects\n'> <'\t../../../../A/.git/objects\n'> <'\tEOF\n'> <'\tcat >expect <<-EOF &&\n'> 
            <'\talternate: $(pwd)/C/.git/objects\n'> <'\talternate: $(pwd)/B/.git/objects\n'> <'\talternate: $(pwd)/A/.git/objects\n'> <'\tEOF\n'> 
            <'\tgit -C deep/subdir/duplicate.git count-objects -v >actual &&\n'> <'\tgrep ^alternate: actual >actual.alternates &&\n'> <'\ttest_cmp expect actual.alternates\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {<CASE_INSENSITIVE_FS>}
        {(SQ <'dup finding can be case-insensitive'>)}
        {
          (SQ <'\n'> <'\tgit init --bare insensitive.git &&\n'> 
            <'\t# the previous entry for "A" will have used uppercase\n'> <'\tcat >insensitive.git/objects/info/alternates <<-\\EOF &&\n'> <'\t../../C/.git/objects\n'> 
            <'\t../../a/.git/objects\n'> <'\tEOF\n'> <'\tcat >expect <<-EOF &&\n'> <'\talternate: $(pwd)/C/.git/objects\n'> 
            <'\talternate: $(pwd)/B/.git/objects\n'> <'\talternate: $(pwd)/A/.git/objects\n'> <'\tEOF\n'> 
            <'\tgit -C insensitive.git count-objects -v >actual &&\n'> <'\tgrep ^alternate: actual >actual.alternates &&\n'> <'\ttest_cmp expect actual.alternates\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_done>
      more_env: []
      words: [{<test_done>}]
      redirects: []
      do_fork: T
    )
  ]
)