(List (Com {[LIT_CHARS .]} {[LIT_CHARS ./test-lib.sh]} ) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('remotes_git_svn', {[LIT_CHARS remotes/git] [DQ ] [LIT_CHARS -svn]})]) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('git_svn_id', {[LIT_CHARS git] [DQ ] [LIT_CHARS -svn-id]})]) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub NO_SVN_TESTS]]} ) (List (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('skip_all', {[SQ <LIT_CHARS "skipping git svn tests, NO_SVN_TESTS defined">]})]) (Com {[LIT_CHARS test_done]} ) ) ) (If (Pipeline! (Com {[LIT_CHARS test_have_prereq]} {[LIT_CHARS PERL]} ) ) (List (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('skip_all', {[SQ <LIT_CHARS "skipping git svn tests, perl not available">]})]) (Com {[LIT_CHARS test_done]} ) ) ) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('GIT_DIR', {[VarSub PWD] [LIT_CHARS /.git]})]) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('GIT_SVN_DIR', {[VarSub GIT_DIR] [LIT_CHARS /svn/refs/remotes/git-svn]})]) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('SVN_TREE', {[VarSub GIT_SVN_DIR] [LIT_CHARS /svn-tree]})]) (Com {[LIT_CHARS svn]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} <REDIR_GREAT ">"> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} <REDIR_GREATAND "2>&"> 2), > ) (If (Com {[LIT_CHARS test]} {[VarSub ?]} {[LIT_CHARS -ne]} {[LIT_CHARS 1]} ) (List (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('skip_all', {[SQ <LIT_CHARS "skipping git svn tests, svn not found">]})]) (Com {[LIT_CHARS test_done]} ) ) ) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('svnrepo', {[VarSub PWD] [LIT_CHARS /svnrepo]})]) (= scope=<EAssignScope.GLOBAL 1> flags=1 words=[{[LIT_CHARS svnrepo]}] bindings=[]) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('svnconf', {[VarSub PWD] [LIT_CHARS /svnconf]})]) (= scope=<EAssignScope.GLOBAL 1> flags=1 words=[{[LIT_CHARS svnconf]}] bindings=[]) (Com {[DQ [VarSub PERL_PATH]]} {[LIT_CHARS -w]} {[LIT_CHARS -e]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "use SVN::Core;\n"][LIT_CHARS "use SVN::Repos;\n"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "SVN::Core::VERSION gt '1.1.0' or exit(42);\n"][LIT_CHARS "system(qw/svnadmin create --fs-type fsfs/, "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "ENV{svnrepo}) == 0 or exit(41);\n"]]} < (DescriptorRedirectNode target={[LIT_CHARS 3]} <REDIR_GREATAND ">&"> 1), (DescriptorRedirectNode target={[LIT_CHARS 4]} <REDIR_GREATAND "2>&"> 2), > ) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('x', {[VarSub ?]})]) (If (Com {[LIT_CHARS test]} {[VarSub x]} {[LIT_CHARS -ne]} {[LIT_CHARS 0]} ) (List (If (Com {[LIT_CHARS test]} {[VarSub x]} {[LIT_CHARS -eq]} {[LIT_CHARS 42]} ) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('skip_all', {[SQ <LIT_CHARS "Perl SVN libraries must be >= 1.1.0">]})]) (Com {[LIT_CHARS test]} {[VarSub x]} {[LIT_CHARS -eq]} {[LIT_CHARS 41]} ) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('skip_all', {[SQ <LIT_CHARS "svnadmin failed to create fsfs repository">]})]) (ElseTrue) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('skip_all', {[SQ <LIT_CHARS "Perl SVN libraries not found or unusable">]})]) ) (Com {[LIT_CHARS test_done]} ) ) ) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('rawsvnrepo', {[DQ [VarSub svnrepo]]})]) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('svnrepo', {[DQ [LIT_CHARS "file://"][VarSub svnrepo]]})]) (FunctionDef poke [] (Com {[LIT_CHARS test-chmtime]} {[LIT_OTHER "+"] [LIT_CHARS 1]} {[DQ [VarSub 1]]} ) ) (FunctionDef svn_cmd [] (List (AndOr OP_OR_IF (Com {[LIT_DBRACKET_LIKE "["]} {[LIT_CHARS -d]} {[DQ [VarSub svnconf]]} {[LIT_DBRACKET_LIKE "]"]} ) (Com {[LIT_CHARS mkdir]} {[DQ [VarSub svnconf]]} ) ) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('orig_svncmd', {[DQ [VarSub 1]]})]) (Com {[LIT_CHARS shift]} ) (If (Com {[LIT_DBRACKET_LIKE "["]} {[LIT_CHARS -z]} {[DQ [VarSub orig_svncmd]]} {[LIT_DBRACKET_LIKE "]"]} ) (List (Com {[LIT_CHARS svn]} ) (Com {[LIT_CHARS return]} ) ) ) (Com {[LIT_CHARS svn]} {[DQ [VarSub orig_svncmd]]} {[LIT_CHARS --config-dir]} {[DQ [VarSub svnconf]]} {[DQ [VarSub @]]} ) ) ) (FunctionDef prepare_httpd [] (List (For d [{[DQ [VarSub SVN_HTTPD_PATH]]}, {[LIT_CHARS /usr/sbin/apache2]}, {[LIT_CHARS /usr/sbin/httpd]}]) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[DQ [VarSub d]]} ) (List (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('SVN_HTTPD_PATH', {[DQ [VarSub d]]})]) (Com {[LIT_CHARS break]} ) ) ) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub SVN_HTTPD_PATH]]} ) (List (Com {[LIT_CHARS echo]} {[SQ <LIT_CHARS "*** error: Apache not found">]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} <REDIR_GREATAND ">&"> 1), > ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]} ) ) ) (For d [{[DQ [VarSub SVN_HTTPD_MODULE_PATH]]}, {[LIT_CHARS /usr/lib/apache2/modules]}, {[LIT_CHARS /usr/libexec/apache2]}]) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -d]} {[DQ [VarSub d]]} ) (List (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('SVN_HTTPD_MODULE_PATH', {[DQ [VarSub d]]})]) (Com {[LIT_CHARS break]} ) ) ) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub SVN_HTTPD_MODULE_PATH]]} ) (List (Com {[LIT_CHARS echo]} {[SQ <LIT_CHARS "*** error: Apache module dir not found">]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} <REDIR_GREATAND ">&"> 1), > ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]} ) ) ) (If (Com {[LIT_CHARS test]} {[LIT_OTHER "!"]} {[LIT_CHARS -f]} {[DQ [VarSub SVN_HTTPD_MODULE_PATH][LIT_CHARS /mod_dav_svn.so]]} ) (List (Com {[LIT_CHARS echo]} {[SQ <LIT_CHARS "*** error: Apache module \"mod_dav_svn\" not found">]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} <REDIR_GREATAND ">&"> 1), > ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]} ) ) ) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('repo_base_path', {[DQ [VarSub 1 test_op=VS_TEST_HYPHEN {[LIT_CHARS svn]}]]})]) (Com {[LIT_CHARS mkdir]} {[DQ [VarSub GIT_DIR]] [LIT_CHARS /logs]} ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[DQ [VarSub GIT_DIR][LIT_CHARS /httpd.conf]]} <REDIR_GREAT ">"> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "ServerName "][RIGHT_D_QUOTE "\""][LIT_CHARS "git svn test"][RIGHT_D_QUOTE "\""][LIT_CHARS "\n"][LIT_CHARS "ServerRoot "][RIGHT_D_QUOTE "\""][VarSub GIT_DIR][RIGHT_D_QUOTE "\""][LIT_CHARS "\n"][LIT_CHARS "DocumentRoot "][RIGHT_D_QUOTE "\""][VarSub GIT_DIR][RIGHT_D_QUOTE "\""][LIT_CHARS "\n"][LIT_CHARS "PidFile "][RIGHT_D_QUOTE "\""][VarSub GIT_DIR][LIT_CHARS /httpd.pid][RIGHT_D_QUOTE "\""][LIT_CHARS "\n"][LIT_CHARS "LockFile logs/accept.lock\n"][LIT_CHARS "Listen 127.0.0.1:"][VarSub SVN_HTTPD_PORT][LIT_CHARS "\n"][LIT_CHARS "LoadModule dav_module "][VarSub SVN_HTTPD_MODULE_PATH][LIT_CHARS "/mod_dav.so\n"][LIT_CHARS "LoadModule dav_svn_module "][VarSub SVN_HTTPD_MODULE_PATH][LIT_CHARS "/mod_dav_svn.so\n"][LIT_CHARS "<Location /"][VarSub repo_base_path][LIT_CHARS ">\n"][LIT_CHARS "\tDAV svn\n"][LIT_CHARS "\tSVNPath "][RIGHT_D_QUOTE "\""][VarSub rawsvnrepo][RIGHT_D_QUOTE "\""][LIT_CHARS "\n"][LIT_CHARS "</Location>\n"]]} <REDIR_DLESS "<<"> 0), > ) ) ) (FunctionDef start_httpd [] (List (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub SVN_HTTPD_PORT]]} ) (List (Com {[LIT_CHARS echo]} {[SQ <LIT_CHARS "SVN_HTTPD_PORT is not defined!">]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} <REDIR_GREATAND ">&"> 1), > ) (Com {[LIT_CHARS return]} ) ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS prepare_httpd]} {[DQ [VarSub 1]]} ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]} ) ) (Com {[DQ [VarSub SVN_HTTPD_PATH]]} {[LIT_CHARS -f]} {[DQ [VarSub GIT_DIR]] [LIT_CHARS /httpd.conf]} {[LIT_CHARS -k]} {[LIT_CHARS start]} ) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('svnrepo', {[DQ [LIT_CHARS "http://127.0.0.1:"][VarSub SVN_HTTPD_PORT][LIT_CHARS /][VarSub repo_base_path]]})]) ) ) (FunctionDef stop_httpd [] (List (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub SVN_HTTPD_PORT]]} ) (Com {[LIT_CHARS return]} ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_OTHER "!"]} {[LIT_CHARS -f]} {[DQ [VarSub GIT_DIR][LIT_CHARS /httpd.conf]]} ) (Com {[LIT_CHARS return]} ) ) (Com {[DQ [VarSub SVN_HTTPD_PATH]]} {[LIT_CHARS -f]} {[DQ [VarSub GIT_DIR]] [LIT_CHARS /httpd.conf]} {[LIT_CHARS -k]} {[LIT_CHARS stop]} ) ) ) (FunctionDef convert_to_rev_db [] (Com {[DQ [VarSub PERL_PATH]]} {[LIT_CHARS -w]} {[LIT_CHARS --]} {[LIT_CHARS -]} {[DQ [VarSub @]]} < (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "use strict;\n"] [LIT_CHARS "@ARGV == 2 or die \"Usage: convert_to_rev_db <input> <output>\";\n"] [LIT_CHARS "open my $wr, '+>', $ARGV[1] or die \"$!: couldn't open: $ARGV[1]\";\n"] [LIT_CHARS "open my $rd, '<', $ARGV[0] or die \"$!: couldn't open: $ARGV[0]\";\n"] [LIT_CHARS "my $size = (stat($rd))[7];\n"] [LIT_CHARS "($size % 24) == 0 or die \"Inconsistent size: $size\";\n"] [LIT_CHARS "while (sysread($rd, my $buf, 24) == 24) {\n"] [LIT_CHARS "\tmy ($r, $c) = unpack('NH40', $buf);\n"] [LIT_CHARS "\tmy $offset = $r * 41;\n"] [LIT_CHARS "\tseek $wr, 0, 2 or die $!;\n"] [LIT_CHARS "\tmy $pos = tell $wr;\n"] [LIT_CHARS "\tif ($pos < $offset) {\n"] [LIT_CHARS "\t\tfor (1 .. (($offset - $pos) / 41)) {\n"] [LIT_CHARS "\t\t\tprint $wr (('0' x 40),\"\\n\") or die $!;\n"] [LIT_CHARS "\t\t}\n"] [LIT_CHARS "\t}\n"] [LIT_CHARS "\tseek $wr, $offset, 0 or die $!;\n"] [LIT_CHARS "\tprint $wr $c,\"\\n\" or die $!;\n"] [LIT_CHARS "}\n"] [LIT_CHARS "close $wr or die $!;\n"] [LIT_CHARS "close $rd or die $!;\n"]} <REDIR_DLESS "<<"> 0), > ) ) (FunctionDef require_svnserve [] (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub SVNSERVE_PORT]]} ) (List (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('skip_all', {[SQ <LIT_CHARS "skipping svnserve test. (set $SVNSERVE_PORT to enable)">]})]) (Com {[LIT_CHARS test_done]} ) ) ) ) (FunctionDef start_svnserve [] (Fork (Com {[LIT_CHARS svnserve]} {[LIT_CHARS --listen-port]} {[VarSub SVNSERVE_PORT]} {[LIT_CHARS --root]} {[DQ [VarSub rawsvnrepo]]} {[LIT_CHARS --listen-once]} {[LIT_CHARS --listen-host]} {[LIT_CHARS 127.0.0.1]} ) ) ) )