(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: { (SQ (Token id: Id.Lit_Chars val: 'git svn metadata migrations from previous versions' span_id: 8 ) ) } spids: [6] ) ] ) (C {(.)} {(./lib-git-svn.sh)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup old-looking metadata' span_id:19))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:23) (Token id: Id.Lit_Chars val: '\tcp "$GIT_DIR"/config "$GIT_DIR"/config-old-git-svn &&\n' span_id: 24 ) (Token id:Id.Lit_Chars val:'\tmkdir import &&\n' span_id:25) (Token id:Id.Lit_Chars val:'\t(\n' span_id:26) (Token id:Id.Lit_Chars val:'\t\tcd import &&\n' span_id:27) (Token id: Id.Lit_Chars val: '\t\tfor i in trunk branches/a branches/b tags/0.1 tags/0.2 tags/0.3\n' span_id: 28 ) (Token id:Id.Lit_Chars val:'\t\tdo\n' span_id:29) (Token id:Id.Lit_Chars val:'\t\t\tmkdir -p $i &&\n' span_id:30) (Token id:Id.Lit_Chars val:'\t\t\techo hello >>$i/README ||\n' span_id:31) (Token id:Id.Lit_Chars val:'\t\t\texit 1\n' span_id:32) (Token id:Id.Lit_Chars val:'\t\tdone &&\n' span_id:33) (Token id: Id.Lit_Chars val: '\t\tsvn_cmd import -m test . "$svnrepo"\n' span_id: 34 ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:35) (Token id:Id.Lit_Chars val:'\tgit svn init "$svnrepo" &&\n' span_id:36) (Token id:Id.Lit_Chars val:'\tgit svn fetch &&\n' span_id:37) (Token id:Id.Lit_Chars val:'\trm -rf "$GIT_DIR"/svn &&\n' span_id:38) (Token id: Id.Lit_Chars val: '\tgit update-ref refs/heads/git-svn-HEAD refs/remotes/git-svn &&\n' span_id: 39 ) (Token id: Id.Lit_Chars val: '\tgit update-ref refs/heads/svn-HEAD refs/remotes/git-svn &&\n' span_id: 40 ) (Token id: Id.Lit_Chars val: '\tgit update-ref -d refs/remotes/git-svn refs/remotes/git-svn\n' span_id: 41 ) (Token id:Id.Lit_Chars val:'\t' span_id:42) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git-svn-HEAD is a real HEAD' span_id:49))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:53) (Token id: Id.Lit_Chars val: '\tgit rev-parse --verify refs/heads/git-svn-HEAD^0\n' span_id: 54 ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:svnrepo_escaped) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:59) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(echo)} {($ Id.VSub_DollarName '$svnrepo')}) (C {(sed)} {(SQ (Token id:Id.Lit_Chars val:'s/ /%20/' span_id:69))}) ] negated: F ) ] ) ) } spids: [58] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'initialize old-style (v0) git svn layout' span_id:77))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:81) (Token id: Id.Lit_Chars val: '\tmkdir -p "$GIT_DIR"/git-svn/info "$GIT_DIR"/svn/info &&\n' span_id: 82 ) (Token id:Id.Lit_Chars val:'\techo "$svnrepo" > "$GIT_DIR"/git-svn/info/url &&\n' span_id:83) (Token id: Id.Lit_Chars val: '\techo "$svnrepo" > "$GIT_DIR"/svn/info/url &&\n' span_id: 84 ) (Token id:Id.Lit_Chars val:'\tgit svn migrate &&\n' span_id:85) (Token id:Id.Lit_Chars val:'\t! test -d "$GIT_DIR"/git-svn &&\n' span_id:86) (Token id:Id.Lit_Chars val:'\tgit rev-parse --verify refs/remotes/git-svn^0 &&\n' span_id:87) (Token id: Id.Lit_Chars val: '\tgit rev-parse --verify refs/remotes/svn^0 &&\n' span_id: 88 ) (Token id: Id.Lit_Chars val: '\ttest "$(git config --get svn-remote.svn.url)" = "$svnrepo_escaped" &&\n' span_id: 89 ) (Token id:Id.Lit_Chars val:'\ttest $(git config --get svn-remote.svn.fetch) = \\\n' span_id:90) (Token id:Id.Lit_Chars val:'\t\t":refs/remotes/git-svn"\n' span_id:91) (Token id:Id.Lit_Chars val:'\t' span_id:92) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'initialize a multi-repository repo' span_id:99))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:103) (Token id: Id.Lit_Chars val: '\tgit svn init "$svnrepo" -T trunk -t tags -b branches &&\n' span_id: 104 ) (Token id: Id.Lit_Chars val: '\tgit config --get-all svn-remote.svn.fetch > fetch.out &&\n' span_id: 105 ) (Token id:Id.Lit_Chars val:'\tgrep "^trunk:refs/remotes/origin/trunk$" fetch.out &&\n' span_id:106) (Token id: Id.Lit_Chars val: '\ttest -n "$(git config --get svn-remote.svn.branches \\\n' span_id: 107 ) (Token id:Id.Lit_Chars val:'\t\t "^branches/\\*:refs/remotes/origin/\\*$")" &&\n' span_id:108) (Token id: Id.Lit_Chars val: '\ttest -n "$(git config --get svn-remote.svn.tags \\\n' span_id: 109 ) (Token id:Id.Lit_Chars val:'\t\t "^tags/\\*:refs/remotes/origin/tags/\\*$")" &&\n' span_id:110) (Token id: Id.Lit_Chars val: '\tgit config --unset svn-remote.svn.branches \\\n' span_id: 111 ) (Token id: Id.Lit_Chars val: '\t "^branches/\\*:refs/remotes/origin/\\*$" &&\n' span_id: 112 ) (Token id:Id.Lit_Chars val:'\tgit config --unset svn-remote.svn.tags \\\n' span_id:113) (Token id: Id.Lit_Chars val: '\t "^tags/\\*:refs/remotes/origin/tags/\\*$" &&\n' span_id: 114 ) (Token id: Id.Lit_Chars val: '\tgit config --add svn-remote.svn.fetch "branches/a:refs/remotes/origin/a" &&\n' span_id: 115 ) (Token id: Id.Lit_Chars val: '\tgit config --add svn-remote.svn.fetch "branches/b:refs/remotes/origin/b" &&\n' span_id: 116 ) (Token id:Id.Lit_Chars val:'\tfor i in tags/0.1 tags/0.2 tags/0.3\n' span_id:117) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:118) (Token id:Id.Lit_Chars val:'\t\tgit config --add svn-remote.svn.fetch \\\n' span_id:119) (Token id: Id.Lit_Chars val: '\t\t\t$i:refs/remotes/origin/$i || return 1\n' span_id: 120 ) (Token id:Id.Lit_Chars val:'\tdone &&\n' span_id:121) (Token id: Id.Lit_Chars val: '\tgit config --get-all svn-remote.svn.fetch > fetch.out &&\n' span_id: 122 ) (Token id:Id.Lit_Chars val:'\tgrep "^trunk:refs/remotes/origin/trunk$" fetch.out &&\n' span_id:123) (Token id: Id.Lit_Chars val: '\tgrep "^branches/a:refs/remotes/origin/a$" fetch.out &&\n' span_id: 124 ) (Token id:Id.Lit_Chars val:'\tgrep "^branches/b:refs/remotes/origin/b$" fetch.out &&\n' span_id:125) (Token id: Id.Lit_Chars val: '\tgrep "^tags/0\\.1:refs/remotes/origin/tags/0\\.1$" fetch.out &&\n' span_id: 126 ) (Token id: Id.Lit_Chars val: '\tgrep "^tags/0\\.2:refs/remotes/origin/tags/0\\.2$" fetch.out &&\n' span_id: 127 ) (Token id: Id.Lit_Chars val: '\tgrep "^tags/0\\.3:refs/remotes/origin/tags/0\\.3$" fetch.out &&\n' span_id: 128 ) (Token id:Id.Lit_Chars val:'\tgrep "^:refs/remotes/git-svn" fetch.out\n' span_id:129) (Token id:Id.Lit_Chars val:'\t' span_id:130) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'multi-fetch works on partial urls + paths' span_id:140))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:144) (Token id: Id.Lit_Chars val: '\trefs="trunk a b tags/0.1 tags/0.2 tags/0.3" &&\n' span_id: 145 ) (Token id:Id.Lit_Chars val:'\tgit svn multi-fetch &&\n' span_id:146) (Token id:Id.Lit_Chars val:'\tfor i in $refs\n' span_id:147) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:148) (Token id: Id.Lit_Chars val: '\t\tgit rev-parse --verify refs/remotes/origin/$i^0 || return 1;\n' span_id: 149 ) (Token id:Id.Lit_Chars val:'\tdone >refs.out &&\n' span_id:150) (Token id: Id.Lit_Chars val: '\ttest -z "$(sort <refs.out | uniq -d)" &&\n' span_id: 151 ) (Token id:Id.Lit_Chars val:'\tfor i in $refs\n' span_id:152) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:153) (Token id:Id.Lit_Chars val:'\t\tfor j in $refs\n' span_id:154) (Token id:Id.Lit_Chars val:'\t\tdo\n' span_id:155) (Token id:Id.Lit_Chars val:'\t\t\tgit diff --exit-code refs/remotes/origin/$i \\\n' span_id:156) (Token id: Id.Lit_Chars val: '\t\t\t\t\t refs/remotes/origin/$j ||\n' span_id: 157 ) (Token id:Id.Lit_Chars val:'\t\t\t\treturn 1\n' span_id:158) (Token id:Id.Lit_Chars val:'\t\tdone\n' span_id:159) (Token id:Id.Lit_Chars val:'\tdone\n' span_id:160) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'migrate --minimize on old inited layout' span_id:167))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:171) (Token id: Id.Lit_Chars val: '\tgit config --unset-all svn-remote.svn.fetch &&\n' span_id: 172 ) (Token id:Id.Lit_Chars val:'\tgit config --unset-all svn-remote.svn.url &&\n' span_id:173) (Token id:Id.Lit_Chars val:'\trm -rf "$GIT_DIR"/svn &&\n' span_id:174) (Token id:Id.Lit_Chars val:'\tfor i in $(cat fetch.out)\n' span_id:175) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:176) (Token id:Id.Lit_Chars val:'\t\tpath=$(expr $i : "\\([^:]*\\):.*$")\n' span_id:177) (Token id: Id.Lit_Chars val: '\t\tref=$(expr $i : "[^:]*:\\(refs/remotes/.*\\)$")\n' span_id: 178 ) (Token id:Id.Lit_Chars val:'\t\tif test -z "$ref"; then continue; fi\n' span_id:179) (Token id: Id.Lit_Chars val: '\t\tif test -n "$path"; then path="/$path"; fi\n' span_id: 180 ) (Token id:Id.Lit_Chars val:'\t\tmkdir -p "$GIT_DIR"/svn/$ref/info/ &&\n' span_id:181) (Token id: Id.Lit_Chars val: '\t\techo "$svnrepo"$path >"$GIT_DIR"/svn/$ref/info/url ||\n' span_id: 182 ) (Token id:Id.Lit_Chars val:'\t\treturn 1\n' span_id:183) (Token id:Id.Lit_Chars val:'\tdone &&\n' span_id:184) (Token id:Id.Lit_Chars val:'\tgit svn migrate --minimize &&\n' span_id:185) (Token id: Id.Lit_Chars val: '\ttest -z "$(git config -l | grep "^svn-remote\\.git-svn\\.")" &&\n' span_id: 186 ) (Token id: Id.Lit_Chars val: '\tgit config --get-all svn-remote.svn.fetch > fetch.out &&\n' span_id: 187 ) (Token id:Id.Lit_Chars val:'\tgrep "^trunk:refs/remotes/origin/trunk$" fetch.out &&\n' span_id:188) (Token id: Id.Lit_Chars val: '\tgrep "^branches/a:refs/remotes/origin/a$" fetch.out &&\n' span_id: 189 ) (Token id:Id.Lit_Chars val:'\tgrep "^branches/b:refs/remotes/origin/b$" fetch.out &&\n' span_id:190) (Token id: Id.Lit_Chars val: '\tgrep "^tags/0\\.1:refs/remotes/origin/tags/0\\.1$" fetch.out &&\n' span_id: 191 ) (Token id: Id.Lit_Chars val: '\tgrep "^tags/0\\.2:refs/remotes/origin/tags/0\\.2$" fetch.out &&\n' span_id: 192 ) (Token id: Id.Lit_Chars val: '\tgrep "^tags/0\\.3:refs/remotes/origin/tags/0\\.3$" fetch.out &&\n' span_id: 193 ) (Token id:Id.Lit_Chars val:'\tgrep "^:refs/remotes/git-svn" fetch.out\n' span_id:194) (Token id:Id.Lit_Chars val:'\t' span_id:195) ) } ) (C {(test_expect_success)} {(DQ ('.rev_db auto-converted to .rev_map.UUID'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:206) (Token id:Id.Lit_Chars val:'\tgit svn fetch -i trunk &&\n' span_id:207) (Token id: Id.Lit_Chars val: '\ttest -z "$(ls "$GIT_DIR"/svn/refs/remotes/origin/trunk/.rev_db.* 2>/dev/null)" &&\n' span_id: 208 ) (Token id: Id.Lit_Chars val: '\texpect="$(ls "$GIT_DIR"/svn/refs/remotes/origin/trunk/.rev_map.*)" &&\n' span_id: 209 ) (Token id:Id.Lit_Chars val:'\ttest -n "$expect" &&\n' span_id:210) (Token id: Id.Lit_Chars val: '\trev_db="$(echo $expect | sed -e "s,_map,_db,")" &&\n' span_id: 211 ) (Token id:Id.Lit_Chars val:'\tconvert_to_rev_db "$expect" "$rev_db" &&\n' span_id:212) (Token id:Id.Lit_Chars val:'\trm -f "$expect" &&\n' span_id:213) (Token id:Id.Lit_Chars val:'\ttest -f "$rev_db" &&\n' span_id:214) (Token id:Id.Lit_Chars val:'\tgit svn fetch -i trunk &&\n' span_id:215) (Token id: Id.Lit_Chars val: '\ttest -z "$(ls "$GIT_DIR"/svn/refs/remotes/origin/trunk/.rev_db.* 2>/dev/null)" &&\n' span_id: 216 ) (Token id: Id.Lit_Chars val: '\ttest ! -e "$GIT_DIR"/svn/refs/remotes/origin/trunk/.rev_db &&\n' span_id: 217 ) (Token id:Id.Lit_Chars val:'\ttest -f "$expect"\n' span_id:218) (Token id:Id.Lit_Chars val:'\t' span_id:219) ) } ) (C {(test_done)}) ] )