(List (Com {[LIT_CHARS set]} {[LIT_CHARS -Ceu]}) (FunctionDef GiveUp [] (List (Com {[LIT_CHARS echo]} {[LIT_CHARS -n]} {[DQ [LIT_CHARS "*** "]]}) (If (DBracket {B1 UNARY_STRING_n {[DQ [VarSub 1]]}}) (Com {[LIT_CHARS echo]} {[LIT_CHARS -n]} {[DQ [VarSub 1][LIT_CHARS ": "]]}) ) (If (DBracket {B1 UNARY_STRING_n {[DQ [VarSub 2]]}}) (Com {[LIT_CHARS echo]} {[LIT_CHARS -n]} {[DQ [VarSub 2][LIT_CHARS " "]]}) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Please update manually! ***"]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 0]}) ) ) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('my_repo', {[DQ [VarSub @]]})]) (If (DBracket {B1 UNARY_STRING_n {[DQ [VarSub my_repo]]}}) (Com {[LIT_CHARS cd]} {[DQ [VarSub my_repo]]}) ) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('status', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS status]} {[LIT_CHARS --branch]} {[LIT_CHARS --short]} {[LIT_CHARS --untracked-files] [LIT_OTHER "="] [LIT_CHARS no]})]})]) (If (DBracket {B2 BINARY_STRING_NOT_EQUAL {[DQ [VarSub status]]} {[DQ [LIT_CHARS "## HEAD (no branch)"]]}}) (List (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('my_branch_ref', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS symbolic-ref]} {[LIT_CHARS HEAD]})]})]) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('my_branch', {[DQ [VarSub my_branch_ref transform_ops=[VS_UNARY_POUND {[LIT_CHARS refs] [LIT_SLASH /] [LIT_CHARS heads] [LIT_SLASH /]}]]]})]) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('my_commit', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[VarSub my_branch_ref]})]})]) ) (ElseTrue) (List (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('my_branch_ref', {[DQ [LIT_CHARS refs/heads/master]]})]) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('my_branch', {[DQ [LIT_CHARS master]]})]) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('my_commit', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[VarSub my_branch_ref]})]})]) (If (DBracket {B1 UNARY_STRING_z {[DQ [VarSub my_commit]]}}) (Com {[LIT_CHARS GiveUp]} {[DQ [VarSub my_repo]]} {[DQ [LIT_CHARS "Failed to pick a branch to change from detached HEAD."]]}) ) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('prev_commit', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS HEAD]})]})]) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('merge_base', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS merge-base]} {[VarSub prev_commit]} {[VarSub my_commit]})]})]) (If (DBracket {B2 BINARY_STRING_NOT_EQUAL {[DQ [VarSub merge_base]]} {[DQ [VarSub prev_commit]]}}) (Com {[LIT_CHARS GiveUp]} {[DQ [VarSub my_repo]]} {[DQ [LIT_CHARS "Failed to pick a branch to change from detached HEAD."]]}) ) (Com {[LIT_CHARS git]} {[LIT_CHARS checkout]} {[DQ [VarSub my_branch]]}) ) ) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('upstream_branch_ref', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS for-each-ref]} {[LIT_CHARS --format] [LIT_OTHER "="] [SQ <LIT_CHARS "%(upstream)">]} {[VarSub my_branch_ref]})]})]) (If (DBracket {B1 UNARY_STRING_z {[DQ [VarSub upstream_branch_ref]]}}) (Com {[LIT_CHARS GiveUp]} {[DQ [VarSub my_repo]]} {[DQ [LIT_CHARS "Failed to determine upstream branch."]]}) ) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('upstream_branch', {[DQ [VarSub upstream_branch_ref transform_ops=[VS_UNARY_POUND {[LIT_CHARS refs] [LIT_SLASH /] [LIT_CHARS remotes] [LIT_SLASH /]}]]]})]) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('upstream_commit', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[VarSub upstream_branch_ref]})]})]) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('merge_base', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS merge-base]} {[VarSub my_commit]} {[VarSub upstream_commit]})]})]) (If (DBracket {B2 BINARY_STRING_EQUAL {[DQ [VarSub merge_base]]} {[DQ [VarSub upstream_commit]]}}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 0]}) ) (If (DBracket {B2 BINARY_STRING_EQUAL {[DQ [VarSub merge_base]]} {[DQ [VarSub my_commit]]}}) (List (Com {[LIT_CHARS git]} {[LIT_CHARS rebase]} {[DQ [VarSub upstream_branch]]} {[DQ [VarSub my_branch]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 0]}) ) ) (Com {[LIT_CHARS GiveUp]} {[DQ [VarSub my_repo]]} {[DQ [LIT_CHARS "Working branch and upstream branch have diverged."]]}) )