(CommandList
  children: [
    (FuncDef
      name: usage
      body: 
        (BraceGroup
          children: [
            (C {(echo)} {(DQ ('Usage: ') ($ VSub_Number '$0') (' [--spec] <target>'))})
            (C {(exit)} {(2)})
          ]
          spids: [8]
        )
      spids: [4 7]
    )
    (AndOr
      children: [(C {(test)} {(-z)} {(DQ ($ VSub_Number '$1'))}) (C {(usage)})]
      op_id: Op_DAmp
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(DQ ($ VSub_Number '$1'))} {(Lit_Other '=')} {(DQ (--spec))} 
                  {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:spec_format) op:Equal rhs:{(1)} spids:[61])]
              spids: [61]
            )
            (C {(shift)})
            (AndOr
              children: [(C {(test)} {(-z)} {(DQ ($ VSub_Number '$1'))}) (C {(usage)})]
              op_id: Op_DAmp
            )
          ]
          spids: [16777215 58]
        )
      ]
      spids: [16777215 80]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:TARGET) op:Equal rhs:{($ VSub_Number '$1')} spids:[83])]
      spids: [83]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GIT_DIR)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (SimpleCommand
                        words: [{(git)} {(rev-parse)} {(--git-dir)}]
                        redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[95])]
                      )
                    ]
                  )
                left_token: <Left_Backtick '`'>
                spids: [88 97]
              )
            }
          spids: [87]
        )
      ]
      spids: [87]
    )
    (AndOr
      children: [(C {(test)} {(-z)} {(DQ ($ VSub_Name '$GIT_DIR'))}) (C {(usage)})]
      op_id: Op_DAmp
    )
    (C {(export)} {(GIT_DIR)})
    (C {(export)} {(Lit_VarLike 'GIT_PAGER=') (DQ )})
    (C {(export)} {(Lit_VarLike 'PAGER=') (DQ )})
    (FuncDef
      name: mkchlog
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:target)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [139]
                )
              ]
              spids: [139]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:format)
                  op: Equal
                  rhs: {($ VSub_Number '$2')}
                  spids: [143]
                )
              ]
              spids: [143]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:prev_tag) op:Equal rhs:{(DQ )} spids:[148])]
              spids: [148]
            )
            (ForEach
              iter_name: tag
              iter_words: [
                {
                  (CommandSubPart
                    command_list: 
                      (CommandList
                        children: [(C {(git)} {(tag)} {(-l)} {(${ VSub_Name target) (-) (SQ <'*'>)})]
                      )
                    left_token: <Left_Backtick '`'>
                    spids: [160 174]
                  )
                }
              ]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:obj)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (Pipeline
                                        children: [
                                          (C {(git)} {(cat-file)} {(tag)} {($ VSub_Name '$tag')})
                                          (C {(awk)} {(SQ <'/^object /{print $2}'>)})
                                        ]
                                        negated: False
                                      )
                                    ]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [182 198]
                              )
                            }
                          spids: [181]
                        )
                      ]
                      spids: [181]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:base)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(git)} {(merge-base)} {($ VSub_Name '$obj')} {(HEAD)})
                                    ]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [202 210]
                              )
                            }
                          spids: [201]
                        )
                      ]
                      spids: [201]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$base'))} {(-o)} 
                                  {(DQ ($ VSub_Name '$base'))} {(KW_Bang '!') (Lit_Other '=')} {($ VSub_Name '$obj')} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [(ControlFlow token:<ControlFlow_Continue continue>)]
                          spids: [16777215 238]
                        )
                      ]
                      spids: [16777215 244]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:all_vers)
                          op: Equal
                          rhs: 
                            {
                              (DQ ($ VSub_Name '$prev_tag') ($ VSub_Name '$tag') (' ') 
                                ($ VSub_Name '$all_vers')
                              )
                            }
                          spids: [247]
                        )
                      ]
                      spids: [247]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:prev_tag)
                          op: Equal
                          rhs: {($ VSub_Name '$tag') (..)}
                          spids: [256]
                        )
                      ]
                      spids: [256]
                    )
                  ]
                  spids: [178 261]
                )
              spids: [159 176]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$prev_tag'))} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:all_vers)
                          op: Equal
                          rhs: {(HEAD)}
                          spids: [282]
                        )
                      ]
                      spids: [282]
                    )
                  ]
                  spids: [16777215 279]
                )
              ]
              else_action: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:all_vers)
                      op: Equal
                      rhs: {(DQ (${ VSub_Name prev_tag) ('HEAD ') ($ VSub_Name '$all_vers'))}
                      spids: [289]
                    )
                  ]
                  spids: [289]
                )
              ]
              spids: [286 299]
            )
            (ForEach
              iter_name: ver
              iter_words: [{($ VSub_Name '$all_vers')}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:log_out)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(git)} {(log)} {($ VSub_Name '$ver')} {(--)} 
                                        {($ VSub_Name '$target')}
                                      )
                                    ]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [317 327]
                              )
                            }
                          spids: [316]
                        )
                      ]
                      spids: [316]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$log_out'))} 
                                  {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [(ControlFlow token:<ControlFlow_Continue continue>)]
                          spids: [16777215 344]
                        )
                      ]
                      spids: [16777215 350]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:ver_name)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (Pipeline
                                        children: [
                                          (C {(echo)} {($ VSub_Name '$ver')})
                                          (C {(sed)} {(-e)} {(SQ <'s/^.*\\.\\.//'>)})
                                        ]
                                        negated: False
                                      )
                                    ]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [354 368]
                              )
                            }
                          spids: [353]
                        )
                      ]
                      spids: [353]
                    )
                    (C {(echo)} {(DQ )})
                    (C {(echo)} {(DQ ('** Version: ') ($ VSub_Name '$ver_name'))})
                    (C {(echo)} {(DQ )})
                    (C {(git)} {(log)} {(--no-merges)} {(DQ (${ VSub_Name format))} {($ VSub_Name '$ver')} 
                      {(--)} {($ VSub_Name '$target')}
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:prev_t)
                          op: Equal
                          rhs: {($ VSub_Name '$tag') (..)}
                          spids: [410]
                        )
                      ]
                      spids: [410]
                    )
                  ]
                  spids: [313 415]
                )
              spids: [308 311]
            )
          ]
          spids: [136]
        )
      spids: [132 135]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$spec_format'))} {(Lit_Other ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Pipeline
              children: [
                (C {(mkchlog)} {($ VSub_Name '$TARGET')} 
                  {(--pretty) (Lit_Other '=') (format) (Lit_Other ':') (DQ ('%ad %an%n%H%n%n* %s%n'))}
                )
                (C {(sed)} {(-e)} {(SQ <'s/^\\* /\\t* /'>)})
              ]
              negated: False
            )
          ]
          spids: [16777215 435]
        )
      ]
      else_action: [
        (C {(echo)} {(DQ ('%changelog'))})
        (C {(mkchlog)} {($ VSub_Name '$TARGET')} 
          {(--pretty) (Lit_Other '=') (format) (Lit_Other ':') (DQ ('- %ad %an: %s'))}
        )
        (C {(echo)} {(DQ )})
      ]
      spids: [462 490]
    )
  ]
)