(List (= scope= flags=0 words=[] bindings=[('test_description', {[SQ ]})]) (Com {[LIT_CHARS .]} {[LIT_CHARS ./lib-git-svn.sh]}) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ file && echo > auto_updated_file\n"> ]}) (= scope= flags=0 words=[] bindings=[('N', {[LIT_CHARS 0]})]) (FunctionDef next_N [] (= scope= flags=0 words=[] bindings=[('N', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub N]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})]) ) (FunctionDef setup_hook [] (List (= scope= flags=0 words=[] bindings=[('hook_type', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('skip_revs', {[DQ [VarSub 2]]})]) (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[DQ [VarSub hook_type]]} {[LIT_OTHER "="]} {[DQ [LIT_CHARS pre-commit]]} {[LIT_OTHER "]"]}) (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[DQ [VarSub hook_type]]} {[LIT_OTHER "="]} {[DQ [LIT_CHARS post-commit]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "ERROR: invalid argument ("][VarSub hook_type][LIT_CHARS ")"]]} {[DQ [LIT_CHARS "passed to setup_hook"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]}) ) ) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "cnt="][VarSub skip_revs]]} < (FilenameRedirectNode filename={[DQ [VarSub hook_type][LIT_CHARS -counter]]} "> 1), > ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[DQ [VarSub rawsvnrepo][LIT_CHARS /hooks/]] [LIT_OTHER "*"] [LIT_CHARS -commit]}) (= scope= flags=0 words=[] bindings=[('hook', {[DQ [VarSub rawsvnrepo][LIT_CHARS /hooks/][VarSub hook_type]]})]) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[DQ [VarSub hook]]} "> 1), (HereDocRedirectNode here_end='EOF1' do_expansion=False body_word={[LIT_CHARS "#!/bin/sh\n"] [LIT_CHARS "set -e\n"] [LIT_CHARS "cd \"$1/..\" # \"$1\" is repository location\n"] [LIT_CHARS "exec >> svn-hook.log 2>&1\n"] [LIT_CHARS "hook=\"$(basename \"$0\")\"\n"] [LIT_CHARS "echo \"*** Executing $hook $@\"\n"] [LIT_CHARS "set -x\n"] [LIT_CHARS ". ./$hook-counter\n"] [LIT_CHARS "cnt=\"$(($cnt - 1))\"\n"] [LIT_CHARS "echo \"cnt=$cnt\" > ./$hook-counter\n"] [LIT_CHARS "[ \"$cnt\" = \"0\" ] || exit 0\n"]} 0), > ) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub hook_type]]} {[LIT_OTHER "="]} {[DQ [LIT_CHARS pre-commit]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "echo 'commit disallowed' >&2; exit 1"]]} < (FilenameRedirectNode filename={[DQ [VarSub hook]]} >"> 1), > ) (ElseTrue) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "PATH="][\ LIT_ESCAPED_CHAR "\\\""][VarSub PATH][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS "; export PATH"]]} < (FilenameRedirectNode filename={[DQ [VarSub hook]]} >"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "svnconf="][\ LIT_ESCAPED_CHAR "\\\""][VarSub svnconf][\ LIT_ESCAPED_CHAR "\\\""]]} < (FilenameRedirectNode filename={[DQ [VarSub hook]]} >"> 1), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[DQ [VarSub hook]]} >"> 1), (HereDocRedirectNode here_end='EOF2' do_expansion=False body_word={[LIT_CHARS "cd work-auto-commits.svn\n"] [LIT_CHARS "svn up --config-dir \"$svnconf\"\n"] [LIT_CHARS "echo \"$$\" >> auto_updated_file\n"] [LIT_CHARS "svn commit --config-dir \"$svnconf\" \\\n"] [LIT_CHARS "-m \"auto-committing concurrent change\"\n"] [LIT_CHARS "exit 0\n"]} 0), > ) ) ) (Com {[LIT_CHARS chmod]} {[LIT_CHARS 755]} {[DQ [VarSub hook]]}) ) ) (FunctionDef check_contents [] (List (= scope= flags=0 words=[] bindings=[('gitdir', {[DQ [VarSub 1]]})]) (AndOr OP_AND_IF (Subshell (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[LIT_CHARS ../work.svn]}) (Com {[LIT_CHARS svn_cmd]} {[LIT_CHARS up]}) ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test_cmp]} {[LIT_CHARS file]} {[LIT_CHARS ../work.svn/file]}) (Com {[LIT_CHARS test_cmp]} {[LIT_CHARS auto_updated_file]} {[LIT_CHARS ../work.svn/auto_updated_file]}) ) ) ) ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ > file &&\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ > file &&\n"> > file &&\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ > file && git commit -am \"commit change $N.1\" &&\n"> > file && git commit -am \"commit change $N.2\" &&\n"> > file && git commit -am \"commit change $N.3\" &&\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ > file && git commit -am \"commit change $N.1\" &&\n"> > file && git commit -am \"commit change $N.2\" &&\n"> > file && git commit -am \"commit change $N.3\" &&\n"> ]}) (FunctionDef delete_first_line [] (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('file', {[DQ [VarSub 1]]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS sed]} {[LIT_CHARS 1d]} < (FilenameRedirectNode filename={[DQ [VarSub file]]} 0), (FilenameRedirectNode filename={[DQ [VarSub file][LIT_CHARS .tmp]]} "> 1), > ) (AndOr OP_AND_IF (Com {[LIT_CHARS rm]} {[DQ [VarSub file]]}) (Com {[LIT_CHARS mv]} {[DQ [VarSub file][LIT_CHARS .tmp]]} {[DQ [VarSub file]]}) ) ) ) ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ > auto_updated_file &&\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ > auto_updated_file &&\n"> ]}) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ > file &&\n"> > auto_updated_file &&\n"> > auto_updated_file &&\n"> ]}) (Com {[LIT_CHARS test_done]}) )