(command.CommandList
  children: [
    (C {<Id.Lit_Colon ':'>} 
      {
        (braced_var_sub
          token: <Id.VSub_Name srcdir>
          suffix_op: (suffix_op.Unary op_id:Id.VTest_Equals arg_word:{<.>})
        )
      }
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<.>} {(DQ ($ Id.VSub_DollarName '$srcdir') <'/init.sh'>)})
          terminator: <Id.Op_Semi _>
        )
        (C {<path_prepend_>} {(DQ ($ Id.VSub_DollarName '$abs_aux_dir'))} {<.>})
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:tmpdir)
          op: assign_op.Equal
          rhs: {<vc-git-> ($ Id.VSub_Dollar '$$')}
          spids: [77]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:GIT_DIR)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [81]
                )
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:GIT_WORK_TREE)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [83]
                )
              ]
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<unset>} {<GIT_DIR>} {<GIT_WORK_TREE>})
      ]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:fail) op:assign_op.Equal rhs:{<1>} spids:[93])]
    )
    (command.AndOr
      ops: [
        Id.Op_DAmp
        Id.Op_DAmp
        Id.Op_DAmp
        Id.Op_DAmp
        Id.Op_DAmp
        Id.Op_DAmp
        Id.Op_DAmp
        Id.Op_DAmp
        Id.Op_DAmp
        Id.Op_DAmp
        Id.Op_DAmp
        Id.Op_DAmp
      ]
      children: [
        (C {<mkdir>} {($ Id.VSub_DollarName '$tmpdir')})
        (C {<cd>} {($ Id.VSub_DollarName '$tmpdir')})
        (BraceGroup
          children: [
            (command.Sentence
              child: 
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (command.Subshell
                      child: (C {<git>} {<init>} {<-q>})
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<'/dev/null'>}
                        )
                        (redir
                          op: <Id.Redir_GreatAnd '2>&'>
                          loc: (redir_loc.Fd fd:2)
                          arg: {<1>}
                        )
                      ]
                    )
                    (C {<skip_>} {(DQ <'git not found in PATH'>)})
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
          ]
        )
        (C {<mkdir>} {<d>})
        (C {<touch>} {<'d/a'>} {<b>} {<c>})
        (C {<git>} {<config>} {<user.email>} {(DQ <'you@example.com'>)})
        (C {<git>} {<config>} {<user.name>} {(DQ <'Your Name'>)})
        (command.Simple
          words: [{<git>} {<add>} {<.>}]
          redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
          do_fork: T
        )
        (C {<git>} {<commit>} {<-q>} {<-a>} {<-m>} {<log>})
        (command.Simple
          words: [{<printf>} {(SQ <'%s\\n'>)} {<b>} {<c>} {<'d/a'>}]
          redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expected>})]
          do_fork: T
        )
        (command.Simple
          words: [{<vc-list-files>}]
          redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<actual>})]
          do_fork: T
        )
        (C {<compare>} {<expected>} {<actual>})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<0>}
              spids: [261]
            )
          ]
        )
      ]
    )
    (C {<Exit>} {($ Id.VSub_DollarName '$fail')})
  ]
)