(List (= scope= flags=0 words=[] bindings=[('USAGE', {[SQ []">]})]) (= scope= flags=0 words=[] bindings=[('LONG_USAGE', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('SUBDIRECTORY_OK', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('OPTIONS_KEEPDASHDASH', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('OPTIONS_STUCKLONG', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('OPTIONS_SPEC', {[SQ ]})]) (Com {[LIT_CHARS .]} {[LIT_CHARS git-sh-setup]}) (= scope= flags=0 words=[] bindings=[('GIT_PAGER', {[SQ ]})]) (= scope= flags=1 words=[{[LIT_CHARS GIT_PAGER]}] bindings=[]) (= scope= flags=0 words=[] bindings=[('patch', {[SQ ]})]) (While (Case to_match={[DQ [VarSub #]]}, pat_word_list=[[{[LIT_CHARS 0]}]] (Com {[LIT_CHARS break]}) ) (List (Case to_match={[DQ [VarSub 1]]}, pat_word_list=[[{[LIT_CHARS -p]}], [{[LIT_CHARS --]}], [{[LIT_CHARS -] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (= scope= flags=0 words=[] bindings=[('patch', {[LIT_CHARS -p]})]) (List (Com {[LIT_CHARS shift]}) (Com {[LIT_CHARS break]}) ) (Com {[LIT_CHARS usage]}) (Com {[LIT_CHARS break]}) ) (Com {[LIT_CHARS shift]}) ) ) (= scope= flags=0 words=[] bindings=[('base', {[VarSub 1]}), ('url', {[VarSub 2]}), ('status', {[LIT_CHARS 0]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub base]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub url]]}) (Com {[LIT_CHARS usage]}) ) ) (= scope= flags=0 words=[] bindings=[('baserev', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[LIT_CHARS --quiet]} {[DQ [VarSub base]] [LIT_OTHER "^"] [LIT_CHARS 0]})]})]) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub baserev]]}) (Com {[LIT_CHARS die]} {[DQ [LIT_CHARS "fatal: Not a valid revision: "][VarSub base]]}) ) (= scope= flags=0 words=[] bindings=[('local', {[VarSub 3 transform_ops=[VS_UNARY_PERCENT {[LIT_CHARS ":*"]}]]})]) (= scope= flags=0 words=[] bindings=[('local', {[VarSub local test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS HEAD]}]})]) (= scope= flags=0 words=[] bindings=[('remote', {[VarSub 3 transform_ops=[VS_UNARY_POUND {[LIT_CHARS "*:"]}]]})]) (= scope= flags=0 words=[] bindings=[('pretty_remote', {[VarSub remote transform_ops=[VS_UNARY_POUND {[LIT_CHARS refs] [LIT_SLASH /]}]]})]) (= scope= flags=0 words=[] bindings=[('pretty_remote', {[VarSub pretty_remote transform_ops=[VS_UNARY_POUND {[LIT_CHARS heads] [LIT_SLASH /]}]]})]) (= scope= flags=0 words=[] bindings=[('head', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS symbolic-ref]} {[LIT_CHARS -q]} {[DQ [VarSub local]]})]})]) (= scope= flags=0 words=[] bindings=[('head', {[VarSub head test_op=VS_TEST_COLON_HYPHEN {[ComSub (Pipeline (Com {[LIT_CHARS git]} {[LIT_CHARS show-ref]} {[LIT_CHARS --heads]} {[LIT_CHARS --tags]} {[DQ [VarSub local]]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -d] [SQ ]} {[LIT_CHARS -f2]}) )]}]})]) (= scope= flags=0 words=[] bindings=[('head', {[VarSub head test_op=VS_TEST_COLON_HYPHEN {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --quiet]} {[LIT_CHARS --verify]} {[DQ [VarSub local]]})]}]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub head]]}) (Com {[LIT_CHARS die]} {[DQ [LIT_CHARS "fatal: Not a valid revision: "][VarSub local]]}) ) (= scope= flags=0 words=[] bindings=[('headrev', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[LIT_CHARS --quiet]} {[DQ [VarSub head]] [LIT_OTHER "^"] [LIT_CHARS 0]})]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub headrev]]}) (Com {[LIT_CHARS die]} {[DQ [LIT_CHARS "fatal: Ambiguous revision: "][VarSub local]]}) ) (= scope= flags=0 words=[] bindings=[('branch_name', {[VarSub head transform_ops=[VS_UNARY_POUND {[LIT_CHARS refs] [LIT_SLASH /] [LIT_CHARS heads] [LIT_SLASH /]}]]})]) (If (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[DQ [LIT_CHARS z][VarSub branch_name]]} {[LIT_OTHER "="]} {[DQ [LIT_CHARS z][VarSub headref]]}) (Pipeline! (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[DQ [LIT_CHARS branch.][VarSub branch_name][LIT_CHARS .description]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) ) ) (= scope= flags=0 words=[] bindings=[('branch_name', {[SQ ]})]) ) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('merge_base', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS merge-base]} {[VarSub baserev]} {[VarSub headrev]})]})]) (Com {[LIT_CHARS die]} {[DQ [LIT_CHARS "fatal: No commits in common between "][VarSub base][LIT_CHARS " and "][VarSub head]]}) ) (= scope= flags=0 words=[] bindings=[('find_matching_ref', {[SQ ) {\n"> ]})]) (= scope= flags=0 words=[] bindings=[('ref', {[ComSub (Pipeline (Com {[LIT_CHARS git]} {[LIT_CHARS ls-remote]} {[DQ [VarSub url]]}) (Com {[LIT_OTHER "@"] [LIT_OTHER "@"] [LIT_CHARS PERL] [LIT_OTHER "@"] [LIT_OTHER "@"]} {[LIT_CHARS -e]} {[DQ [VarSub find_matching_ref]]} {[DQ [VarSub remote test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS HEAD]}]]} {[DQ [VarSub headrev]]}) )]})]) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub ref]]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "warn: No match for commit "][VarSub headrev][LIT_CHARS " found at "][VarSub url]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "warn: Are you sure you pushed '"][VarSub remote test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS HEAD]}][LIT_CHARS "' there?"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (= scope= flags=0 words=[] bindings=[('status', {[LIT_CHARS 1]})]) ) ) (If (Com {[LIT_CHARS test]} {[DQ [VarSub ref]]} {[LIT_OTHER "="]} {[DQ [LIT_CHARS refs/tags/][VarSub pretty_remote]]}) (= scope= flags=0 words=[] bindings=[('pretty_remote', {[LIT_CHARS tags/] [VarSub pretty_remote]})]) ) (= scope= flags=0 words=[] bindings=[('url', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS ls-remote]} {[LIT_CHARS --get-url]} {[DQ [VarSub url]]})]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS show]} {[LIT_CHARS -s]} {[LIT_CHARS --format] [LIT_OTHER "="] [SQ ]} {[VarSub merge_base]}) (AndOr OP_AND_IF (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " "][VarSub url][LIT_CHARS " "][VarSub pretty_remote]]}) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS show]} {[LIT_CHARS -s]} {[LIT_CHARS --format] [LIT_OTHER "="] [SQ ]} {[VarSub headrev]}) (AndOr OP_AND_IF (If (Com {[LIT_CHARS test]} {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS cat-file]} {[LIT_CHARS -t]} {[DQ [VarSub head]]})]} {[LIT_OTHER "="]} {[LIT_CHARS tag]}) (List (Pipeline (Com {[LIT_CHARS git]} {[LIT_CHARS cat-file]} {[LIT_CHARS tag]} {[DQ [VarSub head]]}) (Com {[LIT_CHARS sed]} {[LIT_CHARS -n]} {[LIT_CHARS -e]} {[SQ ]} {[LIT_CHARS -e]} {[SQ ]} {[LIT_CHARS -e]} {[LIT_CHARS p]}) ) (Com {[LIT_CHARS echo]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS ----------------------------------------------------------------]]}) ) ) (AndOr OP_AND_IF (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub branch_name]]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "(from the branch description for "][VarSub branch_name][LIT_CHARS " local branch)"]]}) (Com {[LIT_CHARS echo]}) (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[DQ [LIT_CHARS branch.][VarSub branch_name][LIT_CHARS .description]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS ----------------------------------------------------------------]]}) ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS shortlog]} {[LIT_OTHER "^"] [VarSub baserev]} {[VarSub headrev]}) (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS diff]} {[LIT_CHARS -M]} {[LIT_CHARS --stat]} {[LIT_CHARS --summary]} {[VarSub patch]} {[VarSub merge_base] [LIT_CHARS ..] [VarSub headrev]}) (= scope= flags=0 words=[] bindings=[('status', {[LIT_CHARS 1]})]) ) ) ) ) ) ) ) (Com {[LIT_CHARS exit]} {[VarSub status]}) )