(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:repository)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Number 1>
                suffix_op: (suffix_op.Unary op_id:Id.VTest_QMark arg_word:{<repository>})
              )
            }
          spids: [7]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:destdir)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Number 2>
                suffix_op: (suffix_op.Unary op_id:Id.VTest_QMark arg_word:{<destination>})
              )
            }
          spids: [14]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:head)
          op: assign_op.Equal
          rhs: {<master>}
          spids: [22]
        )
        (assign_pair
          lhs: (sh_lhs_expr.Name name:GIT_DIR)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [25]
        )
      ]
    )
    (command.ForEach
      iter_name: d
      iter_words: [
        {(DQ ($ Id.VSub_DollarName '$repository') </.git>)}
        {(DQ ($ Id.VSub_DollarName '$repository'))}
      ]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Simple
                      words: [{<git>} {<rev-parse>} {<refs/heads/master>}]
                      redirects: [
                        (redir.Redir
                          op: <Id.Redir_Great '>'>
                          fd: -1
                          arg_word: {</dev/null>}
                        )
                        (redir.Redir
                          op: <Id.Redir_GreatAnd '2>&'>
                          fd: 2
                          arg_word: {<1>}
                        )
                      ]
                      more_env: [
                        (env_pair
                          name: GIT_DIR
                          val: {(DQ ($ Id.VSub_DollarName '$d'))}
                          spids: [47]
                        )
                      ]
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:GIT_DIR)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName '$d'))}
                          spids: [68]
                        )
                      ]
                    )
                    (C {<export>} {<GIT_DIR>})
                    (command.ControlFlow token:<Id.ControlFlow_Break break>)
                  ]
                  spids: [45 65]
                )
              ]
            )
          ]
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: [(C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$GIT_DIR'))})]
          action: [
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'Neither '> ($ Id.VSub_DollarName '$repository') <' nor '> 
                    ($ Id.VSub_DollarName '$repository') <'/.git is a repository'>
                  )
                }
              ]
              redirects: [(redir.Redir op:<Id.Redir_GreatAnd '>&'> fd:-1 arg_word:{<2>})]
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [87 97]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:GIT_WORK_TREE)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                command_list: (command.CommandList children:[(C {<pwd>})])
              )
            }
          spids: [121]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:GIT_INDEX_FILE)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                command_list: (command.CommandList children:[(C {<pwd>})])
              ) </.quick-doc.> ($ Id.VSub_Dollar '$$')
            }
          spids: [126]
        )
      ]
    )
    (C {<export>} {<GIT_INDEX_FILE>} {<GIT_WORK_TREE>})
    (C {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName '$GIT_INDEX_FILE'))})
    (C {<trap>} {(SQ <'rm -f "$GIT_INDEX_FILE"'>)} {<0>})
    (C {<git>} {<read-tree>} {($ Id.VSub_DollarName '$head')})
    (C {<git>} {<checkout-index>} {<-a>} {<-f>} 
      {<--prefix> <Id.Lit_Equals '='> (DQ ($ Id.VSub_DollarName '$destdir')) </>}
    )
    (command.If
      arms: [
        (if_arm
          cond: [(C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$GZ'))})]
          action: [
            (command.Pipeline
              children: [
                (C {<git>} {<ls-tree>} {<-r>} {<--name-only>} {($ Id.VSub_DollarName '$head')})
                (C {<xargs>} {<printf>} 
                  {(DQ ($ Id.VSub_DollarName '$destdir') <'/%s'> <Id.Lit_Other '\\'> <n>)}
                )
                (C {<xargs>} {<gzip>} {<-f>})
              ]
              negated: F
            )
          ]
          spids: [178 188]
        )
      ]
    )
    (C {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName '$GIT_INDEX_FILE'))})
  ]
)