(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <"git svn metadata migrations from previous versions">)} spids: [6] ) ] spids: [6] ) (C {(.)} {(./lib-git-svn.sh)}) (C {(test_expect_success)} {(SQ <"setup old-looking metadata">)} { (SQ <"\n"> <"\tcp \"$GIT_DIR\"/config \"$GIT_DIR\"/config-old-git-svn &&\n"> <"\tmkdir import &&\n"> <"\t(\n"> <"\t\tcd import &&\n"> <"\t\tfor i in trunk branches/a branches/b tags/0.1 tags/0.2 tags/0.3\n"> <"\t\tdo\n"> <"\t\t\tmkdir -p $i &&\n"> <"\t\t\techo hello >>$i/README ||\n"> <"\t\t\texit 1\n"> <"\t\tdone &&\n"> <"\t\tsvn_cmd import -m test . \"$svnrepo\"\n"> <"\t) &&\n"> <"\tgit svn init \"$svnrepo\" &&\n"> <"\tgit svn fetch &&\n"> <"\trm -rf \"$GIT_DIR\"/svn &&\n"> <"\tgit update-ref refs/heads/git-svn-HEAD refs/remotes/git-svn &&\n"> <"\tgit update-ref refs/heads/svn-HEAD refs/remotes/git-svn &&\n"> <"\tgit update-ref -d refs/remotes/git-svn refs/remotes/git-svn\n"> <"\t"> ) } ) (C {(test_expect_success)} {(SQ <"git-svn-HEAD is a real HEAD">)} {(SQ <"\n"> <"\tgit rev-parse --verify refs/heads/git-svn-HEAD^0\n">)} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:svnrepo_escaped) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {($ VSub_Name "$svnrepo")}) (C {(sed)} {(SQ <"s/ /%20/">)}) ] negated: False ) ] ) left_token: <Left_CommandSub "$("> spids: [59 71] ) } spids: [58] ) ] spids: [58] ) (C {(test_expect_success)} {(SQ <"initialize old-style (v0) git svn layout">)} { (SQ <"\n"> <"\tmkdir -p \"$GIT_DIR\"/git-svn/info \"$GIT_DIR\"/svn/info &&\n"> <"\techo \"$svnrepo\" > \"$GIT_DIR\"/git-svn/info/url &&\n"> <"\techo \"$svnrepo\" > \"$GIT_DIR\"/svn/info/url &&\n"> <"\tgit svn migrate &&\n"> <"\t! test -d \"$GIT_DIR\"/git-svn &&\n"> <"\tgit rev-parse --verify refs/remotes/git-svn^0 &&\n"> <"\tgit rev-parse --verify refs/remotes/svn^0 &&\n"> <"\ttest \"$(git config --get svn-remote.svn.url)\" = \"$svnrepo_escaped\" &&\n"> <"\ttest $(git config --get svn-remote.svn.fetch) = \\\n"> <"\t\t\":refs/remotes/git-svn\"\n"> <"\t"> ) } ) (C {(test_expect_success)} {(SQ <"initialize a multi-repository repo">)} { (SQ <"\n"> <"\tgit svn init \"$svnrepo\" -T trunk -t tags -b branches &&\n"> <"\tgit config --get-all svn-remote.svn.fetch > fetch.out &&\n"> <"\tgrep \"^trunk:refs/remotes/origin/trunk$\" fetch.out &&\n"> <"\ttest -n \"$(git config --get svn-remote.svn.branches \\\n"> <"\t\t \"^branches/\\*:refs/remotes/origin/\\*$\")\" &&\n"> <"\ttest -n \"$(git config --get svn-remote.svn.tags \\\n"> <"\t\t \"^tags/\\*:refs/remotes/origin/tags/\\*$\")\" &&\n"> <"\tgit config --unset svn-remote.svn.branches \\\n"> <"\t \"^branches/\\*:refs/remotes/origin/\\*$\" &&\n"> <"\tgit config --unset svn-remote.svn.tags \\\n"> <"\t \"^tags/\\*:refs/remotes/origin/tags/\\*$\" &&\n"> <"\tgit config --add svn-remote.svn.fetch \"branches/a:refs/remotes/origin/a\" &&\n"> <"\tgit config --add svn-remote.svn.fetch \"branches/b:refs/remotes/origin/b\" &&\n"> <"\tfor i in tags/0.1 tags/0.2 tags/0.3\n"> <"\tdo\n"> <"\t\tgit config --add svn-remote.svn.fetch \\\n"> <"\t\t\t$i:refs/remotes/origin/$i || return 1\n"> <"\tdone &&\n"> <"\tgit config --get-all svn-remote.svn.fetch > fetch.out &&\n"> <"\tgrep \"^trunk:refs/remotes/origin/trunk$\" fetch.out &&\n"> <"\tgrep \"^branches/a:refs/remotes/origin/a$\" fetch.out &&\n"> <"\tgrep \"^branches/b:refs/remotes/origin/b$\" fetch.out &&\n"> <"\tgrep \"^tags/0\\.1:refs/remotes/origin/tags/0\\.1$\" fetch.out &&\n"> <"\tgrep \"^tags/0\\.2:refs/remotes/origin/tags/0\\.2$\" fetch.out &&\n"> <"\tgrep \"^tags/0\\.3:refs/remotes/origin/tags/0\\.3$\" fetch.out &&\n"> <"\tgrep \"^:refs/remotes/git-svn\" fetch.out\n"> <"\t"> ) } ) (C {(test_expect_success)} {(SQ <"multi-fetch works on partial urls + paths">)} { (SQ <"\n"> <"\trefs=\"trunk a b tags/0.1 tags/0.2 tags/0.3\" &&\n"> <"\tgit svn multi-fetch &&\n"> <"\tfor i in $refs\n"> <"\tdo\n"> <"\t\tgit rev-parse --verify refs/remotes/origin/$i^0 || return 1;\n"> <"\tdone >refs.out &&\n"> <"\ttest -z \"$(sort <refs.out | uniq -d)\" &&\n"> <"\tfor i in $refs\n"> <"\tdo\n"> <"\t\tfor j in $refs\n"> <"\t\tdo\n"> <"\t\t\tgit diff --exit-code refs/remotes/origin/$i \\\n"> <"\t\t\t\t\t refs/remotes/origin/$j ||\n"> <"\t\t\t\treturn 1\n"> <"\t\tdone\n"> <"\tdone\n"> ) } ) (C {(test_expect_success)} {(SQ <"migrate --minimize on old inited layout">)} { (SQ <"\n"> <"\tgit config --unset-all svn-remote.svn.fetch &&\n"> <"\tgit config --unset-all svn-remote.svn.url &&\n"> <"\trm -rf \"$GIT_DIR\"/svn &&\n"> <"\tfor i in $(cat fetch.out)\n"> <"\tdo\n"> <"\t\tpath=$(expr $i : \"\\([^:]*\\):.*$\")\n"> <"\t\tref=$(expr $i : \"[^:]*:\\(refs/remotes/.*\\)$\")\n"> <"\t\tif test -z \"$ref\"; then continue; fi\n"> <"\t\tif test -n \"$path\"; then path=\"/$path\"; fi\n"> <"\t\tmkdir -p \"$GIT_DIR\"/svn/$ref/info/ &&\n"> <"\t\techo \"$svnrepo\"$path >\"$GIT_DIR\"/svn/$ref/info/url ||\n"> <"\t\treturn 1\n"> <"\tdone &&\n"> <"\tgit svn migrate --minimize &&\n"> <"\ttest -z \"$(git config -l | grep \"^svn-remote\\.git-svn\\.\")\" &&\n"> <"\tgit config --get-all svn-remote.svn.fetch > fetch.out &&\n"> <"\tgrep \"^trunk:refs/remotes/origin/trunk$\" fetch.out &&\n"> <"\tgrep \"^branches/a:refs/remotes/origin/a$\" fetch.out &&\n"> <"\tgrep \"^branches/b:refs/remotes/origin/b$\" fetch.out &&\n"> <"\tgrep \"^tags/0\\.1:refs/remotes/origin/tags/0\\.1$\" fetch.out &&\n"> <"\tgrep \"^tags/0\\.2:refs/remotes/origin/tags/0\\.2$\" fetch.out &&\n"> <"\tgrep \"^tags/0\\.3:refs/remotes/origin/tags/0\\.3$\" fetch.out &&\n"> <"\tgrep \"^:refs/remotes/git-svn\" fetch.out\n"> <"\t"> ) } ) (C {(test_expect_success)} {(DQ (".rev_db auto-converted to .rev_map.UUID"))} { (SQ <"\n"> <"\tgit svn fetch -i trunk &&\n"> < "\ttest -z \"$(ls \"$GIT_DIR\"/svn/refs/remotes/origin/trunk/.rev_db.* 2>/dev/null)\" &&\n" > <"\texpect=\"$(ls \"$GIT_DIR\"/svn/refs/remotes/origin/trunk/.rev_map.*)\" &&\n"> <"\ttest -n \"$expect\" &&\n"> <"\trev_db=\"$(echo $expect | sed -e \"s,_map,_db,\")\" &&\n"> <"\tconvert_to_rev_db \"$expect\" \"$rev_db\" &&\n"> <"\trm -f \"$expect\" &&\n"> <"\ttest -f \"$rev_db\" &&\n"> <"\tgit svn fetch -i trunk &&\n"> < "\ttest -z \"$(ls \"$GIT_DIR\"/svn/refs/remotes/origin/trunk/.rev_db.* 2>/dev/null)\" &&\n" > <"\ttest ! -e \"$GIT_DIR\"/svn/refs/remotes/origin/trunk/.rev_db &&\n"> <"\ttest -f \"$expect\"\n"> <"\t"> ) } ) (C {(test_done)}) ] )