(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: {(SQ (Token id:Id.Lit_Chars val:'git init' span_id:6))}
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (command.ShFunction
      name: check_config
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.AndOr
                      ops: [Id.Op_DAmp Id.Op_DAmp]
                      children: [
                        (C {(test)} {(-d)} {(DQ ($ Id.VSub_Number '$1'))})
                        (C {(test)} {(-f)} {(DQ ($ Id.VSub_Number '$1') (/config))})
                        (C {(test)} {(-d)} {(DQ ($ Id.VSub_Number '$1') (/refs))})
                      ]
                    )
                  ]
                  action: [(C {(Id.Lit_Other ':')} {(happy)})]
                  spids: [23 56]
                )
              ]
              else_action: [
                (C {(echo)} 
                  {
                    (DQ ('expected a directory ') ($ Id.VSub_Number '$1') (', a file ') 
                      ($ Id.VSub_Number '$1') ('/config and ') ($ Id.VSub_Number '$1') (/refs)
                    )
                  }
                )
                (command.ControlFlow
                  token: (Token id:Id.ControlFlow_Return val:return span_id:80)
                  arg_word: {(1)}
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {(test_have_prereq)} {(POSIXPERM)})
                        (C {(test)} {(-x)} {(DQ ($ Id.VSub_Number '$1') (/config))})
                      ]
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ($ Id.VSub_Number '$1') ('/config is executable?'))})
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:118)
                      arg_word: {(1)}
                    )
                  ]
                  spids: [89 107]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:bare)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:128)
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.AndOr
                                ops: [Id.Op_DAmp]
                                children: [
                                  (C {(cd)} {(DQ ($ Id.VSub_Number '$1'))})
                                  (C {(git)} {(config)} {(--bool)} {(core.bare)})
                                ]
                              )
                            ]
                          )
                      )
                    }
                  spids: [127]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:worktree)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:148)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (command.AndOr
                                    ops: [Id.Op_DAmp]
                                    children: [
                                      (C {(cd)} {(DQ ($ Id.VSub_Number '$1'))})
                                      (C {(git)} {(config)} {(core.worktree)})
                                    ]
                                  )
                                ]
                              )
                          )
                        }
                      spids: [147]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:worktree)
                      op: assign_op.Equal
                      rhs: {(unset)}
                      spids: [167]
                    )
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DPipe]
              children: [
                (C {(test)} {(DQ ($ Id.VSub_DollarName '$bare'))} {(Id.Lit_Equals '=')} 
                  {(DQ ($ Id.VSub_Number '$2'))}
                )
                (C {(test)} {(DQ ($ Id.VSub_DollarName '$worktree'))} {(Id.Lit_Equals '=')} 
                  {(DQ ($ Id.VSub_Number '$3'))}
                )
                (command.BraceGroup
                  children: [
                    (C {(echo)} 
                      {
                        (DQ ('expected bare=') ($ Id.VSub_Number '$2') (' worktree=') 
                          ($ Id.VSub_Number '$3')
                        )
                      }
                    )
                    (C {(echo)} 
                      {
                        (DQ ('     got bare=') ($ Id.VSub_DollarName '$bare') (' worktree=') 
                          ($ Id.VSub_DollarName '$worktree')
                        )
                      }
                    )
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:223)
                      arg_word: {(1)}
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:plain span_id:236))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:240) 
          (Token id:Id.Lit_Chars val:'\tgit init plain &&\n' span_id:241) (Token id:Id.Lit_Chars val:'\tcheck_config plain/.git false unset\n' span_id:242)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'plain nested in bare' span_id:249))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:253) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:254) (Token id:Id.Lit_Chars val:'\t\tgit init --bare bare-ancestor.git &&\n' span_id:255) 
          (Token id:Id.Lit_Chars val:'\t\tcd bare-ancestor.git &&\n' span_id:256) (Token id:Id.Lit_Chars val:'\t\tmkdir plain-nested &&\n' span_id:257) 
          (Token id:Id.Lit_Chars val:'\t\tcd plain-nested &&\n' span_id:258) (Token id:Id.Lit_Chars val:'\t\tgit init\n' span_id:259) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:260) 
          (Token
            id: Id.Lit_Chars
            val: '\tcheck_config bare-ancestor.git/plain-nested/.git false unset\n'
            span_id: 261
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'plain through aliased command, outside any git repo'
            span_id: 268
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:272) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:273) (Token id:Id.Lit_Chars val:'\t\tHOME=$(pwd)/alias-config &&\n' span_id:274) 
          (Token id:Id.Lit_Chars val:'\t\texport HOME &&\n' span_id:275) (Token id:Id.Lit_Chars val:'\t\tmkdir alias-config &&\n' span_id:276) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo "[alias] aliasedinit = init" >alias-config/.gitconfig &&\n'
            span_id: 277
          ) (Token id:Id.Lit_Chars val:'\n' span_id:278) 
          (Token id:Id.Lit_Chars val:'\t\tGIT_CEILING_DIRECTORIES=$(pwd) &&\n' span_id:279) (Token id:Id.Lit_Chars val:'\t\texport GIT_CEILING_DIRECTORIES &&\n' span_id:280) 
          (Token id:Id.Lit_Chars val:'\n' span_id:281) (Token id:Id.Lit_Chars val:'\t\tmkdir plain-aliased &&\n' span_id:282) 
          (Token id:Id.Lit_Chars val:'\t\tcd plain-aliased &&\n' span_id:283) (Token id:Id.Lit_Chars val:'\t\tgit aliasedinit\n' span_id:284) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:285) (Token id:Id.Lit_Chars val:'\tcheck_config plain-aliased/.git false unset\n' span_id:286)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'plain nested through aliased command' span_id:293))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:297) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:298) (Token id:Id.Lit_Chars val:'\t\tgit init plain-ancestor-aliased &&\n' span_id:299) 
          (Token id:Id.Lit_Chars val:'\t\tcd plain-ancestor-aliased &&\n' span_id:300) (Token id:Id.Lit_Chars val:'\t\techo "[alias] aliasedinit = init" >>.git/config &&\n' span_id:301) 
          (Token id:Id.Lit_Chars val:'\t\tmkdir plain-nested &&\n' span_id:302) (Token id:Id.Lit_Chars val:'\t\tcd plain-nested &&\n' span_id:303) 
          (Token id:Id.Lit_Chars val:'\t\tgit aliasedinit\n' span_id:304) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:305) 
          (Token
            id: Id.Lit_Chars
            val: '\tcheck_config plain-ancestor-aliased/plain-nested/.git false unset\n'
            span_id: 306
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'plain nested in bare through aliased command' span_id:313))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:317) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:318) (Token id:Id.Lit_Chars val:'\t\tgit init --bare bare-ancestor-aliased.git &&\n' span_id:319) 
          (Token id:Id.Lit_Chars val:'\t\tcd bare-ancestor-aliased.git &&\n' span_id:320) (Token id:Id.Lit_Chars val:'\t\techo "[alias] aliasedinit = init" >>config &&\n' span_id:321) 
          (Token id:Id.Lit_Chars val:'\t\tmkdir plain-nested &&\n' span_id:322) (Token id:Id.Lit_Chars val:'\t\tcd plain-nested &&\n' span_id:323) 
          (Token id:Id.Lit_Chars val:'\t\tgit aliasedinit\n' span_id:324) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:325) 
          (Token
            id: Id.Lit_Chars
            val: '\tcheck_config bare-ancestor-aliased.git/plain-nested/.git false unset\n'
            span_id: 326
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'No extra GIT_* on alias scripts' span_id:333))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:337) 
          (Token id:Id.Lit_Chars val:'\twrite_script script <<-\\EOF &&\n' span_id:338) (Token id:Id.Lit_Chars val:'\tenv |\n' span_id:339) 
          (Token id:Id.Lit_Chars val:'\t\tsed -n \\\n' span_id:340) (Token id:Id.Lit_Chars val:'\t\t\t-e "/^GIT_PREFIX=/d" \\\n' span_id:341) 
          (Token id:Id.Lit_Chars val:'\t\t\t-e "/^GIT_TEXTDOMAINDIR=/d" \\\n' span_id:342) (Token id:Id.Lit_Chars val:'\t\t\t-e "/^GIT_/s/=.*//p" |\n' span_id:343) 
          (Token id:Id.Lit_Chars val:'\t\tsort\n' span_id:344) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:345) 
          (Token id:Id.Lit_Chars val:'\t./script >expected &&\n' span_id:346) (Token id:Id.Lit_Chars val:'\tgit config alias.script \\!./script &&\n' span_id:347) 
          (Token
            id: Id.Lit_Chars
            val: '\t( mkdir sub && cd sub && git script >../actual ) &&\n'
            span_id: 348
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:349)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'plain with GIT_WORK_TREE' span_id:356))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:360) 
          (Token id:Id.Lit_Chars val:'\tmkdir plain-wt &&\n' span_id:361) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail env GIT_WORK_TREE="$(pwd)/plain-wt" git init plain-wt\n'
            span_id: 362
          )
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'plain bare' span_id:369))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:373) 
          (Token id:Id.Lit_Chars val:'\tgit --bare init plain-bare-1 &&\n' span_id:374) (Token id:Id.Lit_Chars val:'\tcheck_config plain-bare-1 true unset\n' span_id:375)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'plain bare with GIT_WORK_TREE' span_id:382))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:386) 
          (Token id:Id.Lit_Chars val:'\tmkdir plain-bare-2 &&\n' span_id:387) (Token id:Id.Lit_Chars val:'\ttest_must_fail \\\n' span_id:388) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tenv GIT_WORK_TREE="$(pwd)/plain-bare-2" \\\n'
            span_id: 389
          ) (Token id:Id.Lit_Chars val:'\t\tgit --bare init plain-bare-2\n' span_id:390)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'GIT_DIR bare' span_id:397))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:401) 
          (Token id:Id.Lit_Chars val:'\tmkdir git-dir-bare.git &&\n' span_id:402) (Token id:Id.Lit_Chars val:'\tGIT_DIR=git-dir-bare.git git init &&\n' span_id:403) 
          (Token
            id: Id.Lit_Chars
            val: '\tcheck_config git-dir-bare.git true unset\n'
            span_id: 404
          )
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'init --bare' span_id:411))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:415) 
          (Token id:Id.Lit_Chars val:'\tgit init --bare init-bare.git &&\n' span_id:416) (Token id:Id.Lit_Chars val:'\tcheck_config init-bare.git true unset\n' span_id:417)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'GIT_DIR non-bare' span_id:424))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:428) (Token id:Id.Lit_Chars val:'\n' span_id:429) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:430) (Token id:Id.Lit_Chars val:'\t\tmkdir non-bare &&\n' span_id:431) 
          (Token id:Id.Lit_Chars val:'\t\tcd non-bare &&\n' span_id:432) (Token id:Id.Lit_Chars val:'\t\tGIT_DIR=.git git init\n' span_id:433) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:434) (Token id:Id.Lit_Chars val:'\tcheck_config non-bare/.git false unset\n' span_id:435)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'GIT_DIR & GIT_WORK_TREE (1)' span_id:442))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:446) (Token id:Id.Lit_Chars val:'\n' span_id:447) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:448) (Token id:Id.Lit_Chars val:'\t\tmkdir git-dir-wt-1.git &&\n' span_id:449) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tGIT_WORK_TREE=$(pwd) GIT_DIR=git-dir-wt-1.git git init\n'
            span_id: 450
          ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:451) 
          (Token
            id: Id.Lit_Chars
            val: '\tcheck_config git-dir-wt-1.git false "$(pwd)"\n'
            span_id: 452
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'GIT_DIR & GIT_WORK_TREE (2)' span_id:459))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:463) 
          (Token id:Id.Lit_Chars val:'\tmkdir git-dir-wt-2.git &&\n' span_id:464) (Token id:Id.Lit_Chars val:'\ttest_must_fail env \\\n' span_id:465) 
          (Token id:Id.Lit_Chars val:'\t\tGIT_WORK_TREE="$(pwd)" \\\n' span_id:466) (Token id:Id.Lit_Chars val:'\t\tGIT_DIR=git-dir-wt-2.git \\\n' span_id:467) 
          (Token id:Id.Lit_Chars val:'\t\tgit --bare init\n' span_id:468)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:reinit span_id:475))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:479) (Token id:Id.Lit_Chars val:'\n' span_id:480) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:481) (Token id:Id.Lit_Chars val:'\t\tmkdir again &&\n' span_id:482) 
          (Token id:Id.Lit_Chars val:'\t\tcd again &&\n' span_id:483) (Token id:Id.Lit_Chars val:'\t\tgit init >out1 2>err1 &&\n' span_id:484) 
          (Token id:Id.Lit_Chars val:'\t\tgit init >out2 2>err2\n' span_id:485) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:486) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_i18ngrep "Initialized empty" again/out1 &&\n'
            span_id: 487
          ) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep "Reinitialized existing" again/out2 &&\n' span_id:488) 
          (Token id:Id.Lit_Chars val:'\t>again/empty &&\n' span_id:489) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp again/empty again/err1 &&\n' span_id:490) 
          (Token id:Id.Lit_Chars val:'\ttest_i18ncmp again/empty again/err2\n' span_id:491)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'init with --template' span_id:498))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:502) 
          (Token id:Id.Lit_Chars val:'\tmkdir template-source &&\n' span_id:503) (Token id:Id.Lit_Chars val:'\techo content >template-source/file &&\n' span_id:504) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit init --template=../template-source template-custom &&\n'
            span_id: 505
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp template-source/file template-custom/.git/file\n' span_id:506)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'init with --template (blank)' span_id:513))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:517) 
          (Token id:Id.Lit_Chars val:'\tgit init template-plain &&\n' span_id:518) (Token id:Id.Lit_Chars val:'\ttest_path_is_file template-plain/.git/info/exclude &&\n' span_id:519) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit init --template= template-blank &&\n'
            span_id: 520
          ) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing template-blank/.git/info/exclude\n' span_id:521)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'init with init.templatedir set' span_id:528))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:532) 
          (Token id:Id.Lit_Chars val:'\tmkdir templatedir-source &&\n' span_id:533) (Token id:Id.Lit_Chars val:'\techo Content >templatedir-source/file &&\n' span_id:534) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_config_global init.templatedir "${HOME}/templatedir-source" &&\n'
            span_id: 535
          ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:536) 
          (Token id:Id.Lit_Chars val:'\t\tmkdir templatedir-set &&\n' span_id:537) (Token id:Id.Lit_Chars val:'\t\tcd templatedir-set &&\n' span_id:538) 
          (Token id:Id.Lit_Chars val:'\t\tsane_unset GIT_TEMPLATE_DIR &&\n' span_id:539) (Token id:Id.Lit_Chars val:'\t\tNO_SET_GIT_TEMPLATE_DIR=t &&\n' span_id:540) 
          (Token id:Id.Lit_Chars val:'\t\texport NO_SET_GIT_TEMPLATE_DIR &&\n' span_id:541) (Token id:Id.Lit_Chars val:'\t\tgit init\n' span_id:542) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:543) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp templatedir-source/file templatedir-set/.git/file\n'
            span_id: 544
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'init --bare/--shared overrides system/global config'
            span_id: 551
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:555) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_config_global core.bare false &&\n'
            span_id: 556
          ) (Token id:Id.Lit_Chars val:'\ttest_config_global core.sharedRepository 0640 &&\n' span_id:557) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit init --bare --shared=0666 init-bare-shared-override &&\n'
            span_id: 558
          ) (Token id:Id.Lit_Chars val:'\tcheck_config init-bare-shared-override true unset &&\n' span_id:559) 
          (Token id:Id.Lit_Chars val:'\ttest x0666 = \\\n' span_id:560) 
          (Token
            id: Id.Lit_Chars
            val: '\tx$(git config -f init-bare-shared-override/config core.sharedRepository)\n'
            span_id: 561
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'init honors global core.sharedRepository' span_id:568))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:572) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_config_global core.sharedRepository 0666 &&\n'
            span_id: 573
          ) (Token id:Id.Lit_Chars val:'\tgit init shared-honor-global &&\n' span_id:574) 
          (Token id:Id.Lit_Chars val:'\ttest x0666 = \\\n' span_id:575) 
          (Token
            id: Id.Lit_Chars
            val: '\tx$(git config -f shared-honor-global/.git/config core.sharedRepository)\n'
            span_id: 576
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'init allows insanely long --template' span_id:583))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:587) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit init --template=$(printf "x%09999dx" 1) test\n'
            span_id: 588
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'init creates a new directory' span_id:595))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:599) 
          (Token id:Id.Lit_Chars val:'\trm -fr newdir &&\n' span_id:600) (Token id:Id.Lit_Chars val:'\tgit init newdir &&\n' span_id:601) 
          (Token id:Id.Lit_Chars val:'\ttest_path_is_dir newdir/.git/refs\n' span_id:602)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'init creates a new bare directory' span_id:609))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:613) 
          (Token id:Id.Lit_Chars val:'\trm -fr newdir &&\n' span_id:614) (Token id:Id.Lit_Chars val:'\tgit init --bare newdir &&\n' span_id:615) 
          (Token id:Id.Lit_Chars val:'\ttest_path_is_dir newdir/refs\n' span_id:616)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'init recreates a directory' span_id:623))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:627) 
          (Token id:Id.Lit_Chars val:'\trm -fr newdir &&\n' span_id:628) (Token id:Id.Lit_Chars val:'\tmkdir newdir &&\n' span_id:629) 
          (Token id:Id.Lit_Chars val:'\tgit init newdir &&\n' span_id:630) (Token id:Id.Lit_Chars val:'\ttest_path_is_dir newdir/.git/refs\n' span_id:631)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'init recreates a new bare directory' span_id:638))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:642) 
          (Token id:Id.Lit_Chars val:'\trm -fr newdir &&\n' span_id:643) (Token id:Id.Lit_Chars val:'\tmkdir newdir &&\n' span_id:644) 
          (Token id:Id.Lit_Chars val:'\tgit init --bare newdir &&\n' span_id:645) (Token id:Id.Lit_Chars val:'\ttest_path_is_dir newdir/refs\n' span_id:646)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'init creates a new deep directory' span_id:653))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:657) 
          (Token id:Id.Lit_Chars val:'\trm -fr newdir &&\n' span_id:658) (Token id:Id.Lit_Chars val:'\tgit init newdir/a/b/c &&\n' span_id:659) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_path_is_dir newdir/a/b/c/.git/refs\n'
            span_id: 660
          )
        )
      }
    )
    (C {(test_expect_success)} {(POSIXPERM)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'init creates a new deep directory (umask vs. shared)'
            span_id: 669
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:673) 
          (Token id:Id.Lit_Chars val:'\trm -fr newdir &&\n' span_id:674) (Token id:Id.Lit_Chars val:'\t(\n' span_id:675) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t# Leading directories should honor umask while\n'
            span_id: 676
          ) (Token id:Id.Lit_Chars val:'\t\t# the repository itself should follow "shared"\n' span_id:677) 
          (Token id:Id.Lit_Chars val:'\t\tumask 002 &&\n' span_id:678) (Token id:Id.Lit_Chars val:'\t\tgit init --bare --shared=0660 newdir/a/b/c &&\n' span_id:679) 
          (Token
            id: Id.Lit_Chars
            val: '\t\ttest_path_is_dir newdir/a/b/c/refs &&\n'
            span_id: 680
          ) (Token id:Id.Lit_Chars val:'\t\tls -ld newdir/a newdir/a/b > lsab.out &&\n' span_id:681) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t! grep -v "^drwxrw[sx]r-x" lsab.out &&\n'
            span_id: 682
          ) (Token id:Id.Lit_Chars val:'\t\tls -ld newdir/a/b/c > lsc.out &&\n' span_id:683) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t! grep -v "^drwxrw[sx]---" lsc.out\n'
            span_id: 684
          ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:685)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'init notices EEXIST (1)' span_id:692))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:696) 
          (Token id:Id.Lit_Chars val:'\trm -fr newdir &&\n' span_id:697) (Token id:Id.Lit_Chars val:'\t>newdir &&\n' span_id:698) 
          (Token id:Id.Lit_Chars val:'\ttest_must_fail git init newdir &&\n' span_id:699) (Token id:Id.Lit_Chars val:'\ttest_path_is_file newdir\n' span_id:700)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'init notices EEXIST (2)' span_id:707))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:711) 
          (Token id:Id.Lit_Chars val:'\trm -fr newdir &&\n' span_id:712) (Token id:Id.Lit_Chars val:'\tmkdir newdir &&\n' span_id:713) 
          (Token id:Id.Lit_Chars val:'\t>newdir/a &&\n' span_id:714) (Token id:Id.Lit_Chars val:'\ttest_must_fail git init newdir/a/b &&\n' span_id:715) 
          (Token id:Id.Lit_Chars val:'\ttest_path_is_file newdir/a\n' span_id:716)
        )
      }
    )
    (C {(test_expect_success)} {(POSIXPERM) (Id.Lit_Comma ',') (SANITY)} 
      {(SQ (Token id:Id.Lit_Chars val:'init notices EPERM' span_id:727))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:731) 
          (Token id:Id.Lit_Chars val:'\trm -fr newdir &&\n' span_id:732) (Token id:Id.Lit_Chars val:'\tmkdir newdir &&\n' span_id:733) 
          (Token id:Id.Lit_Chars val:'\tchmod -w newdir &&\n' span_id:734) (Token id:Id.Lit_Chars val:'\ttest_must_fail git init newdir/a/b\n' span_id:735)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'init creates a new bare directory with global --bare'
            span_id: 742
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:746) 
          (Token id:Id.Lit_Chars val:'\trm -rf newdir &&\n' span_id:747) (Token id:Id.Lit_Chars val:'\tgit --bare init newdir &&\n' span_id:748) 
          (Token id:Id.Lit_Chars val:'\ttest_path_is_dir newdir/refs\n' span_id:749)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'init prefers command line to GIT_DIR' span_id:756))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:760) 
          (Token id:Id.Lit_Chars val:'\trm -rf newdir &&\n' span_id:761) (Token id:Id.Lit_Chars val:'\tmkdir otherdir &&\n' span_id:762) 
          (Token
            id: Id.Lit_Chars
            val: '\tGIT_DIR=otherdir git --bare init newdir &&\n'
            span_id: 763
          ) (Token id:Id.Lit_Chars val:'\ttest_path_is_dir newdir/refs &&\n' span_id:764) 
          (Token id:Id.Lit_Chars val:'\ttest_path_is_missing otherdir/refs\n' span_id:765)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'init with separate gitdir' span_id:772))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:776) 
          (Token id:Id.Lit_Chars val:'\trm -rf newdir &&\n' span_id:777) (Token id:Id.Lit_Chars val:'\tgit init --separate-git-dir realgitdir newdir &&\n' span_id:778) 
          (Token
            id: Id.Lit_Chars
            val: '\techo "gitdir: $(pwd)/realgitdir" >expected &&\n'
            span_id: 779
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected newdir/.git &&\n' span_id:780) 
          (Token id:Id.Lit_Chars val:'\ttest_path_is_dir realgitdir/refs\n' span_id:781)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'re-init on .git file' span_id:788))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:792) 
          (Token id:Id.Lit_Chars val:'\t( cd newdir && git init )\n' span_id:793)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'re-init to update git link' span_id:800))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:804) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:805) (Token id:Id.Lit_Chars val:'\tcd newdir &&\n' span_id:806) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit init --separate-git-dir ../surrealgitdir\n'
            span_id: 807
          ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:808) 
          (Token
            id: Id.Lit_Chars
            val: '\techo "gitdir: $(pwd)/surrealgitdir" >expected &&\n'
            span_id: 809
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected newdir/.git &&\n' span_id:810) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_path_is_dir surrealgitdir/refs &&\n'
            span_id: 811
          ) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing realgitdir/refs\n' span_id:812)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'re-init to move gitdir' span_id:819))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:823) 
          (Token
            id: Id.Lit_Chars
            val: '\trm -rf newdir realgitdir surrealgitdir &&\n'
            span_id: 824
          ) (Token id:Id.Lit_Chars val:'\tgit init newdir &&\n' span_id:825) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:826) (Token id:Id.Lit_Chars val:'\tcd newdir &&\n' span_id:827) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit init --separate-git-dir ../realgitdir\n'
            span_id: 828
          ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:829) 
          (Token
            id: Id.Lit_Chars
            val: '\techo "gitdir: $(pwd)/realgitdir" >expected &&\n'
            span_id: 830
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected newdir/.git &&\n' span_id:831) 
          (Token id:Id.Lit_Chars val:'\ttest_path_is_dir realgitdir/refs\n' span_id:832)
        )
      }
    )
    (C {(test_expect_success)} {(SYMLINKS)} 
      {(SQ (Token id:Id.Lit_Chars val:'re-init to move gitdir symlink' span_id:841))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:845) 
          (Token id:Id.Lit_Chars val:'\trm -rf newdir realgitdir &&\n' span_id:846) (Token id:Id.Lit_Chars val:'\tgit init newdir &&\n' span_id:847) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:848) (Token id:Id.Lit_Chars val:'\tcd newdir &&\n' span_id:849) 
          (Token id:Id.Lit_Chars val:'\tmv .git here &&\n' span_id:850) (Token id:Id.Lit_Chars val:'\tln -s here .git &&\n' span_id:851) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit init --separate-git-dir ../realgitdir\n'
            span_id: 852
          ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:853) 
          (Token
            id: Id.Lit_Chars
            val: '\techo "gitdir: $(pwd)/realgitdir" >expected &&\n'
            span_id: 854
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected newdir/.git &&\n' span_id:855) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected newdir/here &&\n' span_id:856) (Token id:Id.Lit_Chars val:'\ttest_path_is_dir realgitdir/refs\n' span_id:857)
        )
      }
    )
    (command.ShFunction
      name: is_hidden
      body: 
        (command.BraceGroup
          children: [
            (command.Case
              to_match: 
                {
                  (DQ 
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:879)
                      command_list: 
                        (command.CommandList
                          children: [(C {(attrib)} {(DQ ($ Id.VSub_Number '$1'))})]
                        )
                    )
                  )
                }
              arms: [
                (case_arm
                  pat_list: [
                    {(Id.Lit_Star '*') (H) (Id.Lit_Star '*') (Id.Lit_QMark '?') (Id.Lit_Other ':') 
                      (Id.Lit_Star '*')
                    }
                  ]
                  action: [
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:898)
                      arg_word: {(0)}
                    )
                  ]
                  spids: [890 896 901 -1]
                )
              ]
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Return val:return span_id:906)
              arg_word: {(1)}
            )
          ]
        )
    )
    (C {(test_expect_success)} {(MINGW)} {(SQ (Token id:Id.Lit_Chars val:'.git hidden' span_id:918))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:922) 
          (Token id:Id.Lit_Chars val:'\trm -rf newdir &&\n' span_id:923) (Token id:Id.Lit_Chars val:'\t(\n' span_id:924) 
          (Token id:Id.Lit_Chars val:'\t\tunset GIT_DIR GIT_WORK_TREE\n' span_id:925) (Token id:Id.Lit_Chars val:'\t\tmkdir newdir &&\n' span_id:926) 
          (Token id:Id.Lit_Chars val:'\t\tcd newdir &&\n' span_id:927) (Token id:Id.Lit_Chars val:'\t\tgit init &&\n' span_id:928) 
          (Token id:Id.Lit_Chars val:'\t\tis_hidden .git\n' span_id:929) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:930) 
          (Token
            id: Id.Lit_Chars
            val: '\tcheck_config newdir/.git false unset\n'
            span_id: 931
          )
        )
      }
    )
    (C {(test_expect_success)} {(MINGW)} 
      {(SQ (Token id:Id.Lit_Chars val:'bare git dir not hidden' span_id:940))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:944) 
          (Token id:Id.Lit_Chars val:'\trm -rf newdir &&\n' span_id:945) (Token id:Id.Lit_Chars val:'\t(\n' span_id:946) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tunset GIT_DIR GIT_WORK_TREE GIT_CONFIG\n'
            span_id: 947
          ) (Token id:Id.Lit_Chars val:'\t\tmkdir newdir &&\n' span_id:948) 
          (Token id:Id.Lit_Chars val:'\t\tcd newdir &&\n' span_id:949) (Token id:Id.Lit_Chars val:'\t\tgit --bare init\n' span_id:950) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:951) (Token id:Id.Lit_Chars val:'\t! is_hidden newdir\n' span_id:952)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'remote init from does not use config from cwd' span_id:959))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:963) 
          (Token id:Id.Lit_Chars val:'\trm -rf newdir &&\n' span_id:964) (Token id:Id.Lit_Chars val:'\ttest_config core.logallrefupdates true &&\n' span_id:965) 
          (Token id:Id.Lit_Chars val:'\tgit init newdir &&\n' span_id:966) (Token id:Id.Lit_Chars val:'\techo true >expect &&\n' span_id:967) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit -C newdir config --bool core.logallrefupdates >actual &&\n'
            span_id: 968
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:969)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'re-init from a linked worktree' span_id:976))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:980) 
          (Token id:Id.Lit_Chars val:'\tgit init main-worktree &&\n' span_id:981) (Token id:Id.Lit_Chars val:'\t(\n' span_id:982) 
          (Token id:Id.Lit_Chars val:'\t\tcd main-worktree &&\n' span_id:983) (Token id:Id.Lit_Chars val:'\t\ttest_commit first &&\n' span_id:984) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit worktree add ../linked-worktree &&\n'
            span_id: 985
          ) (Token id:Id.Lit_Chars val:'\t\tmv .git/info/exclude expected-exclude &&\n' span_id:986) 
          (Token id:Id.Lit_Chars val:'\t\tcp .git/config expected-config &&\n' span_id:987) (Token id:Id.Lit_Chars val:'\t\tfind .git/worktrees -print | sort >expected &&\n' span_id:988) 
          (Token id:Id.Lit_Chars val:'\t\tgit -C ../linked-worktree init &&\n' span_id:989) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expected-exclude .git/info/exclude &&\n' span_id:990) 
          (Token
            id: Id.Lit_Chars
            val: '\t\ttest_cmp expected-config .git/config &&\n'
            span_id: 991
          ) (Token id:Id.Lit_Chars val:'\t\tfind .git/worktrees -print | sort >actual &&\n' span_id:992) 
          (Token id:Id.Lit_Chars val:'\t\ttest_cmp expected actual\n' span_id:993) (Token id:Id.Lit_Chars val:'\t)\n' span_id:994)
        )
      }
    )
    (C {(test_done)})
  ]
)