(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:USAGE)
          op: Equal
          rhs: {(SQ <'<start> <url> [<end>]'>)}
          spids: [16]
        )
      ]
      spids: [16]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:LONG_USAGE)
          op: Equal
          rhs: 
            {
              (SQ <'Summarizes the changes between two commits to the standard output,\n'> 
                <'and includes the given URL in the generated summary.'>
              )
            }
          spids: [21]
        )
      ]
      spids: [21]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:SUBDIRECTORY_OK) op:Equal rhs:{(SQ <Yes>)} spids:[27])]
      spids: [27]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:OPTIONS_KEEPDASHDASH) op:Equal rhs:{(SQ )} spids:[32])]
      spids: [32]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:OPTIONS_STUCKLONG) op:Equal rhs:{(SQ )} spids:[34])]
      spids: [34]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:OPTIONS_SPEC)
          op: Equal
          rhs: 
            {
              (SQ <'git request-pull [options] start url [end]\n'> <'--\n'> 
                <'p    show patch text as well\n'>
              )
            }
          spids: [36]
        )
      ]
      spids: [36]
    )
    (C {(.)} {(git-sh-setup)})
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:GIT_PAGER) op:Equal rhs:{(SQ )} spids:[49])]
      spids: [49]
    )
    (C {(export)} {(GIT_PAGER)})
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:patch) op:Equal rhs:{(SQ )} spids:[56])]
      spids: [56]
    )
    (While
      cond: [
        (Case
          to_match: {(DQ ($ VSub_Pound '$#'))}
          arms: [
            (case_arm
              pat_list: [{(0)}]
              action: [(ControlFlow token:<ControlFlow_Break break>)]
              spids: [68 69 73 -1]
            )
          ]
          spids: [60 66 75]
        )
      ]
      body: 
        (DoGroup
          children: [
            (Case
              to_match: {(DQ ($ VSub_Number '$1'))}
              arms: [
                (case_arm
                  pat_list: [{(-p)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [(assign_pair lhs:(LhsName name:patch) op:Equal rhs:{(-p)} spids:[93])]
                      spids: [93]
                    )
                  ]
                  spids: [89 90 96 -1]
                )
                (case_arm
                  pat_list: [{(--)}]
                  action: [
                    (Sentence child:(C {(shift)}) terminator:<Op_Semi ';'>)
                    (ControlFlow token:<ControlFlow_Break break>)
                  ]
                  spids: [99 100 108 -1]
                )
                (case_arm
                  pat_list: [{(-) (Lit_Other '*')}]
                  action: [(C {(usage)})]
                  spids: [111 113 118 -1]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [(ControlFlow token:<ControlFlow_Break break>)]
                  spids: [121 122 127 -1]
                )
              ]
              spids: [80 86 130]
            )
            (C {(shift)})
          ]
          spids: [77 135]
        )
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair lhs:(LhsName name:base) op:Equal rhs:{($ VSub_Number '$1')} spids:[138])
        (assign_pair lhs:(LhsName name:url) op:Equal rhs:{($ VSub_Number '$2')} spids:[141])
        (assign_pair lhs:(LhsName name:status) op:Equal rhs:{(0)} spids:[144])
      ]
      spids: [138]
    )
    (AndOr
      children: [
        (C {(test)} {(-n)} {(DQ ($ VSub_Name '$base'))})
        (AndOr
          children: [(C {(test)} {(-n)} {(DQ ($ VSub_Name '$url'))}) (C {(usage)})]
          op_id: Op_DPipe
        )
      ]
      op_id: Op_DAmp
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:baserev)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (C {(git)} {(rev-parse)} {(--verify)} {(--quiet)} 
                        {(DQ ($ VSub_Name '$base')) (Lit_Other '^') (0)}
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [172 186]
              )
            }
          spids: [171]
        )
      ]
      spids: [171]
    )
    (If
      arms: [
        (if_arm
          cond: [(C {(test)} {(-z)} {(DQ ($ VSub_Name '$baserev'))})]
          action: [(C {(die)} {(DQ ('fatal: Not a valid revision: ') ($ VSub_Name '$base'))})]
          spids: [-1 198]
        )
      ]
      spids: [-1 208]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:local)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Number 3>
                suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(':*')})
                spids: [227 231]
              )
            }
          spids: [226]
        )
      ]
      spids: [226]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:local)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name local>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(HEAD)})
                spids: [234 238]
              )
            }
          spids: [233]
        )
      ]
      spids: [233]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:remote)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Number 3>
                suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{('*:')})
                spids: [241 245]
              )
            }
          spids: [240]
        )
      ]
      spids: [240]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:pretty_remote)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name remote>
                suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{(refs) (Lit_Slash /)})
                spids: [248 253]
              )
            }
          spids: [247]
        )
      ]
      spids: [247]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:pretty_remote)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name pretty_remote>
                suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{(heads) (Lit_Slash /)})
                spids: [256 261]
              )
            }
          spids: [255]
        )
      ]
      spids: [255]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:head)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [(C {(git)} {(symbolic-ref)} {(-q)} {(DQ ($ VSub_Name '$local'))})]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [264 274]
              )
            }
          spids: [263]
        )
      ]
      spids: [263]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:head)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name head>
                suffix_op: 
                  (StringUnary
                    op_id: VTest_ColonHyphen
                    arg_word: 
                      {
                        (CommandSubPart
                          command_list: 
                            (CommandList
                              children: [
                                (Pipeline
                                  children: [
                                    (C {(git)} {(show-ref)} {(--heads)} {(--tags)} 
                                      {(DQ ($ VSub_Name '$local'))}
                                    )
                                    (C {(cut)} {(-d) (SQ <' '>)} {(-f2)})
                                  ]
                                  negated: False
                                )
                              ]
                            )
                          left_token: <Left_CommandSub '$('>
                          spids: [280 303]
                        )
                      }
                  )
                spids: [277 304]
              )
            }
          spids: [276]
        )
      ]
      spids: [276]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:head)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name head>
                suffix_op: 
                  (StringUnary
                    op_id: VTest_ColonHyphen
                    arg_word: 
                      {
                        (CommandSubPart
                          command_list: 
                            (CommandList
                              children: [
                                (C {(git)} {(rev-parse)} {(--quiet)} {(--verify)} 
                                  {(DQ ($ VSub_Name '$local'))}
                                )
                              ]
                            )
                          left_token: <Left_CommandSub '$('>
                          spids: [310 322]
                        )
                      }
                  )
                spids: [307 323]
              )
            }
          spids: [306]
        )
      ]
      spids: [306]
    )
    (AndOr
      children: [
        (C {(test)} {(-z)} {(DQ ($ VSub_Name '$head'))})
        (C {(die)} {(DQ ('fatal: Not a valid revision: ') ($ VSub_Name '$local'))})
      ]
      op_id: Op_DAmp
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:headrev)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (C {(git)} {(rev-parse)} {(--verify)} {(--quiet)} 
                        {(DQ ($ VSub_Name '$head')) (Lit_Other '^') (0)}
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [354 368]
              )
            }
          spids: [353]
        )
      ]
      spids: [353]
    )
    (AndOr
      children: [
        (C {(test)} {(-z)} {(DQ ($ VSub_Name '$headrev'))})
        (C {(die)} {(DQ ('fatal: Ambiguous revision: ') ($ VSub_Name '$local'))})
      ]
      op_id: Op_DAmp
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:branch_name)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name head>
                suffix_op: 
                  (StringUnary
                    op_id: VOp1_Pound
                    arg_word: {(refs) (Lit_Slash /) (heads) (Lit_Slash /)}
                  )
                spids: [392 399]
              )
            }
          spids: [391]
        )
      ]
      spids: [391]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (AndOr
              children: [
                (C {(test)} {(DQ (z) ($ VSub_Name '$branch_name'))} {(Lit_Other '=')} 
                  {(DQ (z) ($ VSub_Name '$headref'))}
                )
                (Pipeline
                  children: [
                    (SimpleCommand
                      words: [
                        {(git)}
                        {(config)}
                        {(DQ (branch.) ($ VSub_Name '$branch_name') (.description))}
                      ]
                      redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[432])]
                    )
                  ]
                  negated: True
                )
              ]
              op_id: Op_DPipe
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:branch_name) op:Equal rhs:{(SQ )} spids:[438])]
              spids: [438]
            )
          ]
          spids: [-1 435]
        )
      ]
      spids: [-1 440]
    )
    (AndOr
      children: [
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:merge_base)
              op: Equal
              rhs: 
                {
                  (CommandSubPart
                    command_list: 
                      (CommandList
                        children: [
                          (C {(git)} {(merge-base)} {($ VSub_Name '$baserev')} {($ VSub_Name '$headrev')})
                        ]
                      )
                    left_token: <Left_CommandSub '$('>
                    spids: [444 452]
                  )
                }
              spids: [443]
            )
          ]
          spids: [443]
        )
        (C {(die)} 
          {
            (DQ ('fatal: No commits in common between ') ($ VSub_Name '$base') (' and ') 
              ($ VSub_Name '$head')
            )
          }
        )
      ]
      op_id: Op_DPipe
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:find_matching_ref)
          op: Equal
          rhs: 
            {
              (SQ <'\n'> <'\tmy ($head,$headrev) = (@ARGV);\n'> <'\tmy ($found);\n'> <'\n'> 
                <'\twhile (<STDIN>) {\n'> <'\t\tchomp;\n'> <'\t\tmy ($sha1, $ref, $deref) = /^(\\S+)\\s+([^^]+)(\\S*)$/;\n'> 
                <'\t\tmy ($pattern);\n'> <'\t\tnext unless ($sha1 eq $headrev);\n'> <'\n'> <'\t\t$pattern="/$head\\$";\n'> 
                <'\t\tif ($ref eq $head) {\n'> <'\t\t\t$found = $ref;\n'> <'\t\t}\n'> <'\t\tif ($ref =~ /$pattern/) {\n'> <'\t\t\t$found = $ref;\n'> 
                <'\t\t}\n'> <'\t\tif ($sha1 eq $head) {\n'> <'\t\t\t$found = $sha1;\n'> <'\t\t}\n'> <'\t}\n'> <'\tif ($found) {\n'> 
                <'\t\tprint "$found\\n";\n'> <'\t}\n'>
              )
            }
          spids: [481]
        )
      ]
      spids: [481]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ref)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (Pipeline
                        children: [
                          (C {(git)} {(ls-remote)} {(DQ ($ VSub_Name '$url'))})
                          (C {(Lit_Other '@') (Lit_Other '@') (PERL) (Lit_Other '@') (Lit_Other '@')} 
                            {(-e)} {(DQ ($ VSub_Name '$find_matching_ref'))} 
                            {
                              (DQ 
                                (BracedVarSub
                                  token: <VSub_Name remote>
                                  suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(HEAD)})
                                  spids: [535 539]
                                )
                              )
                            } {(DQ ($ VSub_Name '$headrev'))}
                          )
                        ]
                        negated: False
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [511 545]
              )
            }
          spids: [510]
        )
      ]
      spids: [510]
    )
    (If
      arms: [
        (if_arm
          cond: [(C {(test)} {(-z)} {(DQ ($ VSub_Name '$ref'))})]
          action: [
            (SimpleCommand
              words: [
                {(echo)}
                {
                  (DQ ('warn: No match for commit ') ($ VSub_Name '$headrev') (' found at ') 
                    ($ VSub_Name '$url')
                  )
                }
              ]
              redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[570])]
            )
            (SimpleCommand
              words: [
                {(echo)}
                {
                  (DQ ("warn: Are you sure you pushed '") 
                    (BracedVarSub
                      token: <VSub_Name remote>
                      suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(HEAD)})
                      spids: [578 582]
                    ) ("' there?")
                  )
                }
              ]
              redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[586])]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:status) op:Equal rhs:{(1)} spids:[590])]
              spids: [590]
            )
          ]
          spids: [-1 558]
        )
      ]
      spids: [-1 593]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (C {(test)} {(DQ ($ VSub_Name '$ref'))} {(Lit_Other '=')} 
              {(DQ (refs/tags/) ($ VSub_Name '$pretty_remote'))}
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:pretty_remote)
                  op: Equal
                  rhs: {(tags/) ($ VSub_Name '$pretty_remote')}
                  spids: [617]
                )
              ]
              spids: [617]
            )
          ]
          spids: [-1 614]
        )
      ]
      spids: [-1 621]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:url)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [(C {(git)} {(ls-remote)} {(--get-url)} {(DQ ($ VSub_Name '$url'))})]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [625 635]
              )
            }
          spids: [624]
        )
      ]
      spids: [624]
    )
    (AndOr
      children: [
        (C {(git)} {(show)} {(-s)} 
          {(--format) (Lit_Other '=') 
            (SQ <'The following changes since commit %H:\n'> <'\n'> <'  %s (%ci)\n'> <'\n'> 
              <'are available in the git repository at:\n'>
            )
          } {($ VSub_Name '$merge_base')}
        )
        (AndOr
          children: [
            (C {(echo)} {(DQ ('  ') ($ VSub_Name '$url') (' ') ($ VSub_Name '$pretty_remote'))})
            (AndOr
              children: [
                (C {(git)} {(show)} {(-s)} 
                  {(--format) (Lit_Other '=') 
                    (SQ <'\n'> <'for you to fetch changes up to %H:\n'> <'\n'> <'  %s (%ci)\n'> <'\n'> 
                      <---------------------------------------------------------------->
                    )
                  } {($ VSub_Name '$headrev')}
                )
                (AndOr
                  children: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (C {(test)} 
                              {
                                (CommandSubPart
                                  command_list: 
                                    (CommandList
                                      children: [
                                        (C {(git)} {(cat-file)} {(-t)} {(DQ ($ VSub_Name '$head'))})
                                      ]
                                    )
                                  left_token: <Left_CommandSub '$('>
                                  spids: [695 705]
                                )
                              } {(Lit_Other '=')} {(tag)}
                            )
                          ]
                          action: [
                            (Pipeline
                              children: [
                                (C {(git)} {(cat-file)} {(tag)} {(DQ ($ VSub_Name '$head'))})
                                (C {(sed)} {(-n)} {(-e)} {(SQ <'1,/^$/d'>)} {(-e)} 
                                  {(SQ <'/^-----BEGIN PGP /q'>)} {(-e)} {(p)}
                                )
                              ]
                              negated: False
                            )
                            (C {(echo)})
                            (C {(echo)} 
                              {
                                (DQ 
                                  (
----------------------------------------------------------------
                                  )
                                )
                              }
                            )
                          ]
                          spids: [-1 711]
                        )
                      ]
                      spids: [-1 757]
                    )
                    (AndOr
                      children: [
                        (If
                          arms: [
                            (if_arm
                              cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name '$branch_name'))})]
                              action: [
                                (C {(echo)} 
                                  {
                                    (DQ ('(from the branch description for ') 
                                      ($ VSub_Name '$branch_name') (' local branch)')
                                    )
                                  }
                                )
                                (C {(echo)})
                                (C {(git)} {(config)} 
                                  {(DQ (branch.) ($ VSub_Name '$branch_name') (.description))}
                                )
                                (C {(echo)} 
                                  {
                                    (DQ 
                                      (
----------------------------------------------------------------
                                      )
                                    )
                                  }
                                )
                              ]
                              spids: [-1 772]
                            )
                          ]
                          spids: [-1 804]
                        )
                        (AndOr
                          children: [
                            (C {(git)} {(shortlog)} {(Lit_Other '^') ($ VSub_Name '$baserev')} 
                              {($ VSub_Name '$headrev')}
                            )
                            (AndOr
                              children: [
                                (C {(git)} {(diff)} {(-M)} {(--stat)} {(--summary)} 
                                  {($ VSub_Name '$patch')} {($ VSub_Name '$merge_base') (..) ($ VSub_Name '$headrev')}
                                )
                                (Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (LhsName name:status)
                                      op: Equal
                                      rhs: {(1)}
                                      spids: [838]
                                    )
                                  ]
                                  spids: [838]
                                )
                              ]
                              op_id: Op_DPipe
                            )
                          ]
                          op_id: Op_DAmp
                        )
                      ]
                      op_id: Op_DAmp
                    )
                  ]
                  op_id: Op_DAmp
                )
              ]
              op_id: Op_DAmp
            )
          ]
          op_id: Op_DAmp
        )
      ]
      op_id: Op_DAmp
    )
    (C {(exit)} {($ VSub_Name '$status')})
  ]
)