(List (FunctionDef usage [] (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "usage: "][VarSub 0][LIT_CHARS " [--heads] [--tags] [-u|--upload-pack ]"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " ..."]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (FunctionDef die [] (List (Com {[LIT_CHARS echo]} {[DQ [VarSub *]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (= scope= flags=0 words=[] bindings=[('exec', {[SQ ]})]) (While (Com {[LIT_CHARS test]} {[VarSub #]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[LIT_CHARS 0]}) (Case to_match={[DQ [VarSub 1]]}, pat_word_list=[[{[LIT_CHARS -h]}, {[LIT_CHARS --h]}, {[LIT_CHARS --he]}, {[LIT_CHARS --hea]}, {[LIT_CHARS --head]}, {[LIT_CHARS --heads]}], [{[LIT_CHARS -t]}, {[LIT_CHARS --t]}, {[LIT_CHARS --ta]}, {[LIT_CHARS --tag]}, {[LIT_CHARS --tags]}], [{[LIT_CHARS -u]}, {[LIT_CHARS --u]}, {[LIT_CHARS --up]}, {[LIT_CHARS --upl]}, {[LIT_CHARS --uploa]}, {[LIT_CHARS --upload]}, {[LIT_CHARS --upload-]}, {[LIT_CHARS --upload-p]}, {[LIT_CHARS --upload-pa]}, {[LIT_CHARS --upload-pac]}, {[LIT_CHARS --upload-pack]}], [{[LIT_CHARS -u] [LIT_OTHER "="] [LIT_OTHER "*"]}, {[LIT_CHARS --u] [LIT_OTHER "="] [LIT_OTHER "*"]}, {[LIT_CHARS --up] [LIT_OTHER "="] [LIT_OTHER "*"]}, {[LIT_CHARS --upl] [LIT_OTHER "="] [LIT_OTHER "*"]}, {[LIT_CHARS --uplo] [LIT_OTHER "="] [LIT_OTHER "*"]}, {[LIT_CHARS --uploa] [LIT_OTHER "="] [LIT_OTHER "*"]}, {[LIT_CHARS --upload] [LIT_OTHER "="] [LIT_OTHER "*"]}, {[LIT_CHARS --upload-] [LIT_OTHER "="] [LIT_OTHER "*"]}, {[LIT_CHARS --upload-p] [LIT_OTHER "="] [LIT_OTHER "*"]}, {[LIT_CHARS --upload-pa] [LIT_OTHER "="] [LIT_OTHER "*"]}, {[LIT_CHARS --upload-pac] [LIT_OTHER "="] [LIT_OTHER "*"]}, {[LIT_CHARS --upload-pack] [LIT_OTHER "="] [LIT_OTHER "*"]}], [{[LIT_CHARS --]}], [{[LIT_CHARS -] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (List (= scope= flags=0 words=[] bindings=[('heads', {[LIT_CHARS heads]})]) (Com {[LIT_CHARS shift]}) ) (List (= scope= flags=0 words=[] bindings=[('tags', {[LIT_CHARS tags]})]) (Com {[LIT_CHARS shift]}) ) (List (Com {[LIT_CHARS shift]}) (= scope= flags=0 words=[] bindings=[('exec', {[DQ [LIT_CHARS "--upload-pack="][VarSub 1]]})]) (Com {[LIT_CHARS shift]}) ) (List (= scope= flags=0 words=[] bindings=[('exec', {[LIT_CHARS --upload-pack] [LIT_OTHER "="] [ComSub (Com {[LIT_CHARS expr]} {[DQ [LIT_CHARS z][VarSub 1]]} {[LIT_OTHER ":"]} {[SQ ]})]})]) (Com {[LIT_CHARS shift]}) ) (List (Com {[LIT_CHARS shift]}) (Com {[LIT_CHARS break]}) ) (Com {[LIT_CHARS usage]}) (Com {[LIT_CHARS break]}) ) ) (Case to_match={[DQ [VarSub #]]}, pat_word_list=[[{[LIT_CHARS 0]}]] (Com {[LIT_CHARS usage]}) ) (Case to_match={[DQ [LIT_CHARS ","][VarSub heads][LIT_CHARS ","][VarSub tags][LIT_CHARS ","]]}, pat_word_list=[[{[LIT_COMMA ","] [LIT_COMMA ","] [LIT_COMMA ","]}]] (= scope= flags=0 words=[] bindings=[('heads', {[LIT_CHARS heads]}), ('tags', {[LIT_CHARS tags]}), ('other', {[LIT_CHARS other]})]) ) (Com {[LIT_CHARS .]} {[LIT_CHARS git-parse-remote]}) (= scope= flags=0 words=[] bindings=[('peek_repo', {[DQ [ComSub (Com {[LIT_CHARS get_remote_url]} {[DQ [VarSub @]]})]]})]) (Com {[LIT_CHARS shift]}) (= scope= flags=0 words=[] bindings=[('tmp', {[LIT_CHARS .ls-remote-] [VarSub $]})]) (Com {[LIT_CHARS trap]} {[DQ [LIT_CHARS "rm -fr "][VarSub tmp][LIT_CHARS "-*"]]} {[LIT_CHARS 0]} {[LIT_CHARS 1]} {[LIT_CHARS 2]} {[LIT_CHARS 3]} {[LIT_CHARS 15]}) (= scope= flags=0 words=[] bindings=[('tmpdir', {[VarSub tmp] [LIT_CHARS -d]})]) (Pipeline (Case to_match={[DQ [VarSub peek_repo]]}, pat_word_list=[[{[LIT_CHARS http] [LIT_OTHER ":"] [LIT_CHARS //] [LIT_OTHER "*"]}, {[LIT_CHARS https] [LIT_OTHER ":"] [LIT_CHARS //] [LIT_OTHER "*"]}, {[LIT_CHARS ftp] [LIT_OTHER ":"] [LIT_CHARS //] [LIT_OTHER "*"]}], [{[LIT_CHARS rsync] [LIT_OTHER ":"] [LIT_CHARS //] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (List (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -n]} {[DQ [VarSub GIT_SSL_NO_VERIFY]]} {[LIT_CHARS -o]} {[DQ [ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS --bool]} {[LIT_CHARS http.sslVerify]})]]} {[LIT_OTHER "="]} {[LIT_CHARS false]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('curl_extra_args', {[DQ [LIT_CHARS -k]]})]) ) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -n]} {[DQ [VarSub GIT_CURL_FTP_NO_EPSV]]} {[LIT_CHARS -o]} {[DQ [ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS --bool]} {[LIT_CHARS http.noEPSV]})]]} {[LIT_OTHER "="]} {[LIT_CHARS true]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('curl_extra_args', {[DQ [VarSub curl_extra_args][LIT_CHARS " --disable-epsv"]]})]) ) (AndOr OP_OR_IF (Com {[LIT_CHARS curl]} {[LIT_CHARS -nsf]} {[VarSub curl_extra_args]} {[LIT_CHARS --header]} {[DQ [LIT_CHARS "Pragma: no-cache"]]} {[DQ [VarSub peek_repo][LIT_CHARS /info/refs]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "failed\tslurping"]]}) ) ) (List (AndOr OP_AND_IF (Com {[LIT_CHARS mkdir]} {[VarSub tmpdir]}) (AndOr OP_AND_IF (Com {[LIT_CHARS rsync]} {[LIT_CHARS -rlq]} {[DQ [VarSub peek_repo][LIT_CHARS /HEAD]]} {[VarSub tmpdir]}) (AndOr OP_OR_IF (Com {[LIT_CHARS rsync]} {[LIT_CHARS -rq]} {[DQ [VarSub peek_repo][LIT_CHARS /refs]]} {[VarSub tmpdir]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "failed\tslurping"]]}) (Com {[LIT_CHARS exit]}) ) ) ) ) (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('head', {[ComSub (Com {[LIT_CHARS cat]} {[DQ [VarSub tmpdir][LIT_CHARS /HEAD]]})]})]) (AndOr OP_AND_IF (Case to_match={[DQ [VarSub head]]}, pat_word_list=[[{[LIT_CHARS ref] [LIT_OTHER ":"] [SQ ] [LIT_OTHER "*"]}]] (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('head', {[ComSub (Com {[LIT_CHARS expr]} {[DQ [LIT_CHARS z][VarSub head]]} {[LIT_OTHER ":"]} {[SQ ]})]})]) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('head', {[ComSub (Com {[LIT_CHARS cat]} {[DQ [VarSub tmpdir][LIT_CHARS /][VarSub head]]})]})]) (Com {[LIT_CHARS exit]}) ) ) ) (Com {[LIT_CHARS echo]} {[DQ [VarSub head][LIT_CHARS "\tHEAD"]]}) ) ) (AndOr OP_AND_IF (Pipeline (Subshell (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[VarSub tmpdir]}) (Com {[LIT_CHARS find]} {[LIT_CHARS refs]} {[LIT_CHARS -type]} {[LIT_CHARS f]}) ) ) (While (Com {[LIT_CHARS read]} {[LIT_CHARS path]}) (List (Com {[LIT_CHARS tr]} {[LIT_CHARS -d]} {[SQ ]} < (FilenameRedirectNode filename={[DQ [VarSub tmpdir][LIT_CHARS /][VarSub path]]} 0), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "\t"][VarSub path]]}) ) ) ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -fr]} {[VarSub tmpdir]}) ) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[DQ [VarSub peek_repo]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS bundle]} {[LIT_CHARS list-heads]} {[DQ [VarSub peek_repo]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "failed\tslurping"]]}) ) (ElseTrue) (AndOr OP_OR_IF (Com {[LIT_CHARS git-peek-remote]} {[VarSub exec]} {[DQ [VarSub peek_repo]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "failed\tslurping"]]}) ) ) ) (Com {[LIT_CHARS sort]} {[LIT_CHARS -t]} {[SQ ]} {[LIT_CHARS -k]} {[LIT_CHARS 2]}) (While (Com {[LIT_CHARS read]} {[LIT_CHARS sha1]} {[LIT_CHARS path]}) (List (Case to_match={[DQ [VarSub sha1]]}, pat_word_list=[[{[LIT_CHARS failed]}]] (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) (Case to_match={[DQ [VarSub path]]}, pat_word_list=[[{[LIT_CHARS refs/heads/] [LIT_OTHER "*"]}], [{[LIT_CHARS refs/tags/] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (= scope= flags=0 words=[] bindings=[('group', {[LIT_CHARS heads]})]) (= scope= flags=0 words=[] bindings=[('group', {[LIT_CHARS tags]})]) (= scope= flags=0 words=[] bindings=[('group', {[LIT_CHARS other]})]) ) (Case to_match={[DQ [LIT_CHARS ","][VarSub heads][LIT_CHARS ","][VarSub tags][LIT_CHARS ","][VarSub other][LIT_CHARS ","]]}, pat_word_list=[[{[LIT_OTHER "*"] [LIT_COMMA ","] [VarSub group] [LIT_COMMA ","] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (ElseTrue) (Com {[LIT_CHARS continue]}) ) (Case to_match={[DQ [VarSub #]]}, pat_word_list=[[{[LIT_CHARS 0]}], [{[LIT_OTHER "*"]}]] (= scope= flags=0 words=[] bindings=[('match', {[LIT_CHARS yes]})]) (List (= scope= flags=0 words=[] bindings=[('match', {[LIT_CHARS no]})]) (For pat do_arg_iter) (Case to_match={[DQ [LIT_CHARS /][VarSub path]]}, pat_word_list=[[{[LIT_OTHER "*"] [LIT_CHARS /] [VarSub pat]}]] (List (= scope= flags=0 words=[] bindings=[('match', {[LIT_CHARS yes]})]) (Com {[LIT_CHARS break]}) ) ) ) ) ) (Case to_match={[DQ [VarSub match]]}, pat_word_list=[[{[LIT_CHARS no]}]] (Com {[LIT_CHARS continue]}) ) (Com {[LIT_CHARS echo]} {[DQ [VarSub sha1][LIT_CHARS "\t"][VarSub path]]}) ) ) ) )