(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_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]}), ('head', {[VarSub 3 test_op=VS_TEST_HYPHEN {[LIT_CHARS HEAD]}]}), ('status', {[LIT_CHARS 0]}), ('branch_name', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('headref', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS symbolic-ref]} {[LIT_CHARS -q]} {[DQ [VarSub head]]})]})]) (If (Com {[LIT_CHARS git]} {[LIT_CHARS show-ref]} {[LIT_CHARS -q]} {[LIT_CHARS --verify]} {[DQ [VarSub headref]]} ) (List (= scope= flags=0 words=[] bindings=[('branch_name', {[VarSub headref 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_DBRACKET_LIKE "="]} {[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 ]})]) ) ) ) (= scope= flags=0 words=[] bindings=[('tag_name', {[ComSub (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS git]} {[LIT_CHARS describe]} {[LIT_CHARS --exact]} {[DQ [VarSub head][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]} ) ) ) (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('baserev', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[DQ [VarSub base]] [LIT_OTHER "^"] [LIT_CHARS 0]})]})]) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('headrev', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[DQ [VarSub head]] [LIT_OTHER "^"] [LIT_CHARS 0]})]})]) (Com {[LIT_CHARS exit]} ) ) ) (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_CHARS perl]} {[LIT_CHARS -e]} {[DQ [VarSub find_matching_ref]]} {[DQ [VarSub head]]} {[DQ [VarSub headrev]]} {[DQ [VarSub tag_name]]}) )]})]) (= 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_DBRACKET_LIKE "="] [SQ ]} {[VarSub merge_base]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " "][VarSub url][VarSub ref test_op=VS_TEST_PLUS {[LIT_CHARS " "] [VarSub ref]}]]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS show]} {[LIT_CHARS -s]} {[LIT_CHARS --format] [LIT_DBRACKET_LIKE "="] [SQ ]} {[VarSub headrev]} ) (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]]} ) ) ) (AndOr OP_AND_IF (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub tag_name]]} ) (List (If (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub ref]]} ) (Com {[LIT_CHARS test]} {[DQ [VarSub ref]]} {[LIT_NEQUAL "!="]} {[DQ [LIT_CHARS tags/][VarSub tag_name]]} ) ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "warn: You locally have "][VarSub tag_name][LIT_CHARS " but it does not (yet)"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "warn: appear to be at "][VarSub url]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "warn: Do you want to push it there, perhaps?"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) ) ) (Pipeline (Com {[LIT_CHARS git]} {[LIT_CHARS cat-file]} {[LIT_CHARS tag]} {[DQ [VarSub tag_name]]} ) (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]} ) ) ) (AndOr OP_AND_IF (If (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub branch_name]]} ) (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub tag_name]]} ) ) (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]})]) ) ) ) ) ) ) ) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub ref]]} ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "warn: No branch of "][VarSub url][LIT_CHARS " is at:"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS git]} {[LIT_CHARS show]} {[LIT_CHARS -s]} {[LIT_CHARS --format] [LIT_DBRACKET_LIKE "="] [SQ ]} {[VarSub headrev]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "warn: Are you sure you pushed '"][VarSub head][LIT_CHARS "' there?"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (= scope= flags=0 words=[] bindings=[('status', {[LIT_CHARS 1]})]) ) ) (Com {[LIT_CHARS exit]} {[VarSub status]} ) )