(List (Com {[LIT_OTHER ":"]} {[LIT_CHARS included]} {[LIT_CHARS from]} {[LIT_CHARS 6002]} {[LIT_CHARS and]} {[LIT_CHARS others]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS .git/refs/tags]}) (Com < (FilenameRedirectNode filename={[LIT_CHARS sed.script]} "> 1), > ) (FunctionDef tag [] (List (= scope= flags=0 words=[] bindings=[('_tag', {[VarSub 1]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[DQ [LIT_CHARS .git/refs/tags/][VarSub _tag]]}) (Com {[LIT_CHARS error]} {[DQ [LIT_CHARS "tag: "][\ LIT_ESCAPED_CHAR "\\\""][VarSub _tag][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS " does not exist"]]}) ) (Com {[LIT_CHARS cat]} {[DQ [LIT_CHARS .git/refs/tags/][VarSub _tag]]}) ) ) (FunctionDef unique_commit [] (List (= scope= flags=0 words=[] bindings=[('_text', {[VarSub 1]})]) (= scope= flags=0 words=[] bindings=[('_tree', {[VarSub 2]})]) (Com {[LIT_CHARS shift]} {[LIT_CHARS 2]}) (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub _text]]}) (Com {[LIT_CHARS git]} {[LIT_CHARS commit-tree]} {[ComSub (Com {[LIT_CHARS tag]} {[DQ [VarSub _tree]]})]} {[DQ [VarSub @]]}) ) ) ) (FunctionDef save_tag [] (List (= scope= flags=0 words=[] bindings=[('_tag', {[VarSub 1]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub _tag]]}) (Com {[LIT_CHARS error]} {[DQ [LIT_CHARS "usage: save_tag tag commit-args ..."]]}) ) (Com {[LIT_CHARS shift]} {[LIT_CHARS 1]}) (Com {[DQ [VarSub @]]} < (FilenameRedirectNode filename={[DQ [LIT_CHARS .git/refs/tags/][VarSub _tag]]} "> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS s/][ComSub (Com {[LIT_CHARS tag]} {[VarSub _tag]})][LIT_CHARS /][VarSub _tag][LIT_CHARS /g]]} < (FilenameRedirectNode filename={[LIT_CHARS sed.script.tmp]} "> 1), > ) (Com {[LIT_CHARS cat]} {[LIT_CHARS sed.script]} < (FilenameRedirectNode filename={[LIT_CHARS sed.script.tmp]} >"> 1), > ) (Com {[LIT_CHARS rm]} {[LIT_CHARS sed.script]}) (Com {[LIT_CHARS mv]} {[LIT_CHARS sed.script.tmp]} {[LIT_CHARS sed.script]}) ) ) (FunctionDef entag [] (Com {[LIT_CHARS sed]} {[LIT_CHARS -f]} {[LIT_CHARS sed.script]}) ) (FunctionDef as_author [] (List (= scope= flags=0 words=[] bindings=[('_author', {[VarSub 1]})]) (Com {[LIT_CHARS shift]} {[LIT_CHARS 1]}) (= scope= flags=0 words=[] bindings=[('_save', {[VarSub GIT_AUTHOR_EMAIL]})]) (= scope= flags=0 words=[] bindings=[('GIT_AUTHOR_EMAIL', {[DQ [VarSub _author]]})]) (= scope= flags=1 words=[{[LIT_CHARS GIT_AUTHOR_EMAIL]}] bindings=[]) (Com {[DQ [VarSub @]]}) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub _save]]}) (Com {[LIT_CHARS unset]} {[LIT_CHARS GIT_AUTHOR_EMAIL]}) (ElseTrue) (List (= scope= flags=0 words=[] bindings=[('GIT_AUTHOR_EMAIL', {[DQ [VarSub _save]]})]) (= scope= flags=1 words=[{[LIT_CHARS GIT_AUTHOR_EMAIL]}] bindings=[]) ) ) ) ) (FunctionDef commit_date [] (List (= scope= flags=0 words=[] bindings=[('_commit', {[VarSub 1]})]) (Pipeline (Com {[LIT_CHARS git]} {[LIT_CHARS cat-file]} {[LIT_CHARS commit]} {[VarSub _commit]}) (Com {[LIT_CHARS sed]} {[LIT_CHARS -n]} {[DQ [LIT_CHARS "s/^committer .*> "][\ LIT_ESCAPED_CHAR "\\("][LIT_CHARS "[0-9]*"][\ LIT_ESCAPED_CHAR "\\)"][LIT_CHARS " .*/"][\ LIT_ESCAPED_CHAR "\\1"][LIT_CHARS /p]]}) ) ) ) (FunctionDef assign_fake_date [] (Case to_match={[DQ [VarSub 2]]}, pat_word_list=[[{[LIT_OTHER "?"] [LIT_OTHER "?"] [LIT_OTHER ":"] [LIT_OTHER "?"] [LIT_OTHER "?"] [LIT_OTHER ":"] [LIT_OTHER "?"] [LIT_OTHER "?"]}], [{[LIT_OTHER "?"] [LIT_OTHER "?"] [LIT_OTHER ":"] [LIT_OTHER "?"] [LIT_OTHER "?"]}], [{[LIT_OTHER "?"] [LIT_OTHER "?"]}], [{[LIT_OTHER "*"]}]] (Com {[LIT_CHARS eval]} {[DQ [VarSub 1][LIT_CHARS "='1971-08-16 "][VarSub 2][LIT_CHARS "'"]]}) (Com {[LIT_CHARS eval]} {[DQ [VarSub 1][LIT_CHARS "='1971-08-16 00:"][VarSub 2][LIT_CHARS "'"]]}) (Com {[LIT_CHARS eval]} {[DQ [VarSub 1][LIT_CHARS "='1971-08-16 00:00:"][VarSub 2][LIT_CHARS "'"]]}) (Com {[LIT_CHARS eval]} {[DQ [VarSub 1][LIT_CHARS "='"][VarSub 2][LIT_CHARS "'"]]}) ) ) (FunctionDef on_committer_date [] (List (Com {[LIT_CHARS assign_fake_date]} {[LIT_CHARS GIT_COMMITTER_DATE]} {[DQ [VarSub 1]]}) (= scope= flags=1 words=[{[LIT_CHARS GIT_COMMITTER_DATE]}] bindings=[]) (Com {[LIT_CHARS shift]} {[LIT_CHARS 1]}) (Com {[DQ [VarSub @]]}) ) ) (FunctionDef on_dates [] (List (Com {[LIT_CHARS assign_fake_date]} {[LIT_CHARS GIT_COMMITTER_DATE]} {[DQ [VarSub 1]]}) (Com {[LIT_CHARS assign_fake_date]} {[LIT_CHARS GIT_AUTHOR_DATE]} {[DQ [VarSub 2]]}) (= scope= flags=1 words=[{[LIT_CHARS GIT_COMMITTER_DATE]}, {[LIT_CHARS GIT_AUTHOR_DATE]}] bindings=[]) (Com {[LIT_CHARS shift]} {[LIT_CHARS 2]}) (Com {[DQ [VarSub @]]}) ) ) (FunctionDef hide_error [] (Com {[DQ [VarSub @]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) ) (FunctionDef check_output [] (List (= scope= flags=0 words=[] bindings=[('_name', {[VarSub 1]})]) (Com {[LIT_CHARS shift]} {[LIT_CHARS 1]}) (If (Pipeline (Com {[LIT_CHARS eval]} {[DQ [VarSub *]]}) (Com {[LIT_CHARS entag]} < (FilenameRedirectNode filename={[DQ [VarSub _name][LIT_CHARS .actual]]} "> 1), > ) ) (Com {[LIT_CHARS test_cmp]} {[DQ [VarSub _name][LIT_CHARS .expected]]} {[DQ [VarSub _name][LIT_CHARS .actual]]}) (ElseTrue) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]}) ) ) ) (FunctionDef name_from_description [] (Com {[LIT_CHARS perl]} {[LIT_CHARS -pe]} {[SQ ]}) ) (FunctionDef test_output_expect_success [] (List (= scope= flags=0 words=[] bindings=[('_description', {[VarSub 1]})]) (= scope= flags=0 words=[] bindings=[('_test', {[VarSub 2]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[VarSub #]} {[LIT_CHARS -eq]} {[LIT_CHARS 2]}) (Com {[LIT_CHARS error]} {[DQ [LIT_CHARS "usage: test_output_expect_success description test < flags=0 words=[] bindings=[('_name', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[VarSub _description]}) (Com {[LIT_CHARS name_from_description]}) )]})]) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[DQ [VarSub _name][LIT_CHARS .expected]]} "> 1), > ) (Com {[LIT_CHARS test_expect_success]} {[DQ [VarSub _description]]} {[DQ [LIT_CHARS "check_output "][VarSub _name][LIT_CHARS " "][\ LIT_ESCAPED_CHAR "\\\""][VarSub _test][\ LIT_ESCAPED_CHAR "\\\""]]}) ) ) )