(List (Com {[LIT_OTHER ":"]} {[LIT_CHARS included]} {[LIT_CHARS from]} {[LIT_CHARS 6002]} {[LIT_CHARS and]} {[LIT_CHARS others]} ) (AndOr OP_OR_IF (Com {[LIT_DBRACKET_LIKE "["]} {[LIT_CHARS -d]} {[LIT_CHARS .git/refs/tags]} {[LIT_DBRACKET_LIKE "]"]} ) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS .git/refs/tags]} ) ) (Com {[LIT_OTHER ":"]} < (FilenameRedirectNode filename={[LIT_CHARS sed.script]} "> 1), > ) (FunctionDef tag [] (List (= scope= flags=0 words=[] bindings=[('_tag', {[VarSub 1]})]) (AndOr OP_OR_IF (Com {[LIT_DBRACKET_LIKE "["]} {[LIT_CHARS -f]} {[LIT_CHARS .git/refs/tags/] [VarSub _tag]} {[LIT_DBRACKET_LIKE "]"]} ) (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]} {[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]} {[VarSub _text]} ) (Com {[LIT_CHARS git]} {[LIT_CHARS commit-tree]} {[ComSub (Com {[LIT_CHARS tag]} {[VarSub _tree]})]} {[DQ [VarSub @]]} ) ) ) ) (FunctionDef save_tag [] (List (= scope= flags=0 words=[] bindings=[('_tag', {[VarSub 1]})]) (AndOr OP_OR_IF (Com {[LIT_DBRACKET_LIKE "["]} {[LIT_CHARS -n]} {[DQ [VarSub _tag]]} {[LIT_DBRACKET_LIKE "]"]} ) (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={[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 on_committer_date [] (List (= scope= flags=0 words=[] bindings=[('_date', {[VarSub 1]})]) (Com {[LIT_CHARS shift]} {[LIT_CHARS 1]} ) (= scope= flags=0 words=[] bindings=[('GIT_COMMITTER_DATE', {[DQ [VarSub _date]]})]) (= scope= flags=1 words=[{[LIT_CHARS GIT_COMMITTER_DATE]}] bindings=[]) (Com {[DQ [VarSub @]]} ) (Com {[LIT_CHARS unset]} {[LIT_CHARS GIT_COMMITTER_DATE]} ) ) ) (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={[VarSub _name] [LIT_CHARS .actual]} "> 1), > ) ) (Com {[LIT_CHARS test_cmp]} {[VarSub _name] [LIT_CHARS .expected]} {[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_DBRACKET_LIKE "["]} {[VarSub #]} {[LIT_CHARS -eq]} {[LIT_CHARS 2]} {[LIT_DBRACKET_LIKE "]"]} ) (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={[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 "\\\""]]} ) ) ) )