(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: {(SQ <'git pack-object --include-tag'>)}
          spids: [4]
        )
      ]
    )
    (C {<.>} {<'./test-lib.sh'>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:TRASH)
          op: assign_op.Equal
          rhs: {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<pwd>}))}
          spids: [14]
        )
      ]
    )
    (C {<test_expect_success>} {<setup>} 
      {
        (SQ <'\n'> <'\techo c >d &&\n'> <'\tgit update-index --add d &&\n'> 
          <'\ttree=$(git write-tree) &&\n'> <'\tcommit=$(git commit-tree $tree </dev/null) &&\n'> <'\techo "object $commit" >sig &&\n'> 
          <'\techo "type commit" >>sig &&\n'> <'\techo "tag mytag" >>sig &&\n'> <'\techo "tagger $(git var GIT_COMMITTER_IDENT)" >>sig &&\n'> 
          <'\techo >>sig &&\n'> <'\techo "our test tag" >>sig &&\n'> <'\ttag=$(git mktag <sig) &&\n'> <'\trm d sig &&\n'> 
          <'\tgit update-ref refs/tags/mytag $tag && {\n'> <'\t\techo $tree &&\n'> <'\t\techo $commit &&\n'> 
          <'\t\tgit ls-tree $tree | sed -e "s/.* \\\\([0-9a-f]*\\\\)\t.*/\\\\1/"\n'> <'\t} >obj-list\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'pack without --include-tag'>)} 
      {
        (SQ <'\n'> <'\tpackname=$(git pack-objects \\\n'> <'\t\t--window=0 \\\n'> 
          <'\t\ttest-no-include <obj-list)\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'unpack objects'>)} 
      {
        (SQ <'\n'> <'\trm -rf clone.git &&\n'> <'\tgit init clone.git &&\n'> 
          <'\tgit -C clone.git unpack-objects <test-no-include-${packname}.pack\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'check unpacked result (have commit, no tag)'>)} 
      {
        (SQ <'\n'> <'\tgit rev-list --objects $commit >list.expect &&\n'> 
          <'\ttest_must_fail git -C clone.git cat-file -e $tag &&\n'> <'\tgit -C clone.git rev-list --objects $commit >list.actual &&\n'> 
          <'\ttest_cmp list.expect list.actual\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'pack with --include-tag'>)} 
      {
        (SQ <'\n'> <'\tpackname=$(git pack-objects \\\n'> <'\t\t--window=0 \\\n'> 
          <'\t\t--include-tag \\\n'> <'\t\ttest-include <obj-list)\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'unpack objects'>)} 
      {
        (SQ <'\n'> <'\trm -rf clone.git &&\n'> <'\tgit init clone.git &&\n'> 
          <'\tgit -C clone.git unpack-objects <test-include-${packname}.pack\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'check unpacked result (have commit, have tag)'>)} 
      {
        (SQ <'\n'> <'\tgit rev-list --objects mytag >list.expect &&\n'> 
          <'\tgit -C clone.git rev-list --objects $tag >list.actual &&\n'> <'\ttest_cmp list.expect list.actual\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'create hidden inner tag'>)} 
      {
        (SQ <'\n'> <'\ttest_commit commit &&\n'> <'\tgit tag -m inner inner HEAD &&\n'> 
          <'\tgit tag -m outer outer inner &&\n'> <'\tgit tag -d inner\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'pack explicit outer tag'>)} 
      {
        (SQ <'\n'> <'\tpackname=$(\n'> <'\t\t{\n'> <'\t\t\techo HEAD &&\n'> <'\t\t\techo outer\n'> 
          <'\t\t} |\n'> <'\t\tgit pack-objects --revs test-hidden-explicit\n'> <'\t)\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'unpack objects'>)} 
      {
        (SQ <'\n'> <'\trm -rf clone.git &&\n'> <'\tgit init clone.git &&\n'> 
          <'\tgit -C clone.git unpack-objects <test-hidden-explicit-${packname}.pack\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'check unpacked result (have all objects)'>)} 
      {(SQ <'\n'> <'\tgit -C clone.git rev-list --objects $(git rev-parse outer HEAD)\n'>)}
    )
    (C {<test_expect_success>} {(SQ <'pack implied outer tag'>)} 
      {
        (SQ <'\n'> <'\tpackname=$(\n'> <'\t\techo HEAD |\n'> 
          <'\t\tgit pack-objects --revs --include-tag test-hidden-implied\n'> <'\t)\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'unpack objects'>)} 
      {
        (SQ <'\n'> <'\trm -rf clone.git &&\n'> <'\tgit init clone.git &&\n'> 
          <'\tgit -C clone.git unpack-objects <test-hidden-implied-${packname}.pack\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'check unpacked result (have all objects)'>)} 
      {(SQ <'\n'> <'\tgit -C clone.git rev-list --objects $(git rev-parse outer HEAD)\n'>)}
    )
    (C {<test_expect_success>} {(SQ <'single-branch clone can transfer tag'>)} 
      {
        (SQ <'\n'> <'\trm -rf clone.git &&\n'> 
          <'\tgit clone --no-local --single-branch -b master . clone.git &&\n'> <'\tgit -C clone.git fsck\n'>
        )
      }
    )
    (C {<test_done>})
  ]
)