(List (Com {[LIT_CHARS echo]} {[SQ ]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS echo]} {[SQ ]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS sleep]} {[LIT_CHARS 2]}) (= scope= flags=0 words=[] bindings=[('USAGE', {[SQ ">]})]) (Com {[LIT_CHARS .]} {[LIT_CHARS git-sh-setup]}) (FunctionDef dropheads [] (AndOr OP_OR_IF (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[LIT_CHARS --]} {[DQ [VarSub GIT_DIR][LIT_CHARS /MERGE_HEAD]]} {[DQ [VarSub GIT_DIR][LIT_CHARS /LAST_MERGE]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('head', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[DQ [VarSub 1]] [LIT_OTHER "^"] [LIT_CHARS 0]})]})]) (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('merge', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[DQ [VarSub 2]] [LIT_OTHER "^"] [LIT_CHARS 0]})]})]) (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('merge_name', {[DQ [VarSub 2]]})]) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('merge_msg', {[DQ [VarSub 3]]})]) (Com {[LIT_CHARS usage]}) ) ) ) ) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub head]]} {[LIT_CHARS -o]} {[LIT_CHARS -z]} {[DQ [VarSub merge]]} {[LIT_CHARS -o]} {[LIT_CHARS -z]} {[DQ [VarSub merge_msg]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS usage]}) ) (Com {[LIT_CHARS dropheads]}) (Com {[LIT_CHARS echo]} {[VarSub head]} < (FilenameRedirectNode filename={[DQ [VarSub GIT_DIR]] [LIT_CHARS /ORIG_HEAD]} "> 1), > ) (Com {[LIT_CHARS echo]} {[VarSub merge]} < (FilenameRedirectNode filename={[DQ [VarSub GIT_DIR]] [LIT_CHARS /LAST_MERGE]} "> 1), > ) (= scope= flags=0 words=[] bindings=[('common', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS merge-base]} {[VarSub head]} {[VarSub merge]})]})]) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub common]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS die]} {[DQ [LIT_CHARS "Unable to find common commit between"]]} {[VarSub merge]} {[VarSub head]}) ) (Case to_match={[DQ [VarSub common]]}, pat_word_list=[[{[DQ [VarSub merge]]}], [{[DQ [VarSub head]]}]] (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Already up-to-date. Yeeah!"]]}) (Com {[LIT_CHARS dropheads]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 0]}) ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Updating "][ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --short]} {[VarSub head]})][LIT_CHARS ..][ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --short]} {[VarSub merge]})]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS read-tree]} {[LIT_CHARS -u]} {[LIT_CHARS -m]} {[VarSub head]} {[VarSub merge]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) (Com {[LIT_CHARS git]} {[LIT_CHARS update-ref]} {[LIT_CHARS -m]} {[DQ [LIT_CHARS "resolve "][VarSub merge_name][LIT_CHARS ": Fast-forward"]]} {[LIT_CHARS HEAD]} {[DQ [VarSub merge]]} {[DQ [VarSub head]]}) (Pipeline (Com {[LIT_CHARS git]} {[LIT_CHARS diff-tree]} {[LIT_CHARS -p]} {[VarSub head]} {[VarSub merge]}) (Com {[LIT_CHARS git]} {[LIT_CHARS apply]} {[LIT_CHARS --stat]}) ) (Com {[LIT_CHARS dropheads]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 0]}) ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS var]} {[LIT_CHARS GIT_COMMITTER_IDENT]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (Com {[LIT_CHARS exit]}) ) (= scope= flags=0 words=[] bindings=[('LF', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('common', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS merge-base]} {[LIT_CHARS -a]} {[VarSub head]} {[VarSub merge]})]})]) (Case to_match={[DQ [VarSub common]]}, pat_word_list=[[{[LIT_OTHER "?"] [LIT_OTHER "*"] [DQ [VarSub LF]] [LIT_OTHER "?"] [LIT_OTHER "*"]}]] (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Trying to find the optimum merge base."]]}) (= scope= flags=0 words=[] bindings=[('G', {[LIT_CHARS .tmp-index] [VarSub $]})]) (= scope= flags=0 words=[] bindings=[('best', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('best_cnt', {[LIT_CHARS -1]})]) (For c [{[VarSub common]}]) (List (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[VarSub G]}) (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS read-tree]} {[LIT_CHARS -m]} {[VarSub c]} {[VarSub head]} {[VarSub merge]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > more_env=[('GIT_INDEX_FILE', {[VarSub G]})] ) (Com {[LIT_CHARS continue]}) ) (= scope= flags=0 words=[] bindings=[('cnt', {[ComSub (Pipeline (Com more_env=[('GIT_INDEX_FILE', {[VarSub G]})] {[LIT_CHARS git]} {[LIT_CHARS ls-files]} {[LIT_CHARS --unmerged]}) (Com {[LIT_CHARS wc]} {[LIT_CHARS -l]}) )]})]) (If (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[VarSub best_cnt]} {[LIT_CHARS -le]} {[LIT_CHARS 0]}) (Com {[LIT_CHARS test]} {[VarSub cnt]} {[LIT_CHARS -le]} {[VarSub best_cnt]}) ) (List (= scope= flags=0 words=[] bindings=[('best', {[VarSub c]})]) (= scope= flags=0 words=[] bindings=[('best_cnt', {[VarSub cnt]})]) (If (Com {[LIT_CHARS test]} {[DQ [VarSub best_cnt]]} {[LIT_CHARS -eq]} {[LIT_CHARS 0]}) (Com {[LIT_CHARS break]}) ) ) ) ) ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[VarSub G]}) (= scope= flags=0 words=[] bindings=[('common', {[DQ [VarSub best]]})]) ) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Trying to merge "][VarSub merge][LIT_CHARS " into "][VarSub head][LIT_CHARS " using "][VarSub common][LIT_CHARS .]]}) (Com {[LIT_CHARS git]} {[LIT_CHARS update-index]} {[LIT_CHARS --refresh]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS read-tree]} {[LIT_CHARS -u]} {[LIT_CHARS -m]} {[VarSub common]} {[VarSub head]} {[VarSub merge]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) (= scope= flags=0 words=[] bindings=[('result_tree', {[ComSub (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS git]} {[LIT_CHARS write-tree]})]})]) (If (Com {[LIT_OTHER "["]} {[VarSub ?]} {[LIT_CHARS -ne]} {[LIT_CHARS 0]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Simple merge failed, trying Automatic merge"]]}) (Com {[LIT_CHARS git-merge-index]} {[LIT_CHARS -o]} {[LIT_CHARS git-merge-one-file]} {[LIT_CHARS -a]}) (If (Com {[LIT_OTHER "["]} {[VarSub ?]} {[LIT_CHARS -ne]} {[LIT_CHARS 0]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[VarSub merge]} < (FilenameRedirectNode filename={[DQ [VarSub GIT_DIR]] [LIT_CHARS /MERGE_HEAD]} "> 1), > ) (Com {[LIT_CHARS die]} {[DQ [LIT_CHARS "Automatic merge failed, fix up by hand"]]}) ) ) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('result_tree', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS write-tree]})]})]) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) ) (= scope= flags=0 words=[] bindings=[('result_commit', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub merge_msg]]}) (Com {[LIT_CHARS git]} {[LIT_CHARS commit-tree]} {[VarSub result_tree]} {[LIT_CHARS -p]} {[VarSub head]} {[LIT_CHARS -p]} {[VarSub merge]}) )]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Committed merge "][VarSub result_commit]]}) (Com {[LIT_CHARS git]} {[LIT_CHARS update-ref]} {[LIT_CHARS -m]} {[DQ [LIT_CHARS "resolve "][VarSub merge_name][LIT_CHARS ": In-index merge"]]} {[LIT_CHARS HEAD]} {[DQ [VarSub result_commit]]} {[DQ [VarSub head]]}) (Pipeline (Com {[LIT_CHARS git]} {[LIT_CHARS diff-tree]} {[LIT_CHARS -p]} {[VarSub head]} {[VarSub result_commit]}) (Com {[LIT_CHARS git]} {[LIT_CHARS apply]} {[LIT_CHARS --stat]}) ) (Com {[LIT_CHARS dropheads]}) )