(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")}) ] )