]>
Commit | Line | Data |
---|---|---|
570d35c2 MG |
1 | #!/bin/sh |
2 | # Copyright (c) 2007 Eric Wong | |
1364ff27 | 3 | test_description='git svn globbing refspecs' |
570d35c2 MG |
4 | . ./lib-git-svn.sh |
5 | ||
6 | cat > expect.end <<EOF | |
7 | the end | |
8 | hi | |
9 | start a new branch | |
10 | initial | |
11 | EOF | |
12 | ||
13 | test_expect_success 'test refspec globbing' ' | |
14 | mkdir -p trunk/src/a trunk/src/b trunk/doc && | |
15 | echo "hello world" > trunk/src/a/readme && | |
16 | echo "goodbye world" > trunk/src/b/readme && | |
da083d68 ER |
17 | svn_cmd import -m "initial" trunk "$svnrepo"/trunk && |
18 | svn_cmd co "$svnrepo" tmp && | |
570d35c2 MG |
19 | ( |
20 | cd tmp && | |
21 | mkdir branches branches/v1 tags && | |
da083d68 ER |
22 | svn_cmd add branches tags && |
23 | svn_cmd cp trunk branches/v1/start && | |
24 | svn_cmd commit -m "start a new branch" && | |
25 | svn_cmd up && | |
570d35c2 MG |
26 | echo "hi" >> branches/v1/start/src/b/readme && |
27 | poke branches/v1/start/src/b/readme && | |
28 | echo "hey" >> branches/v1/start/src/a/readme && | |
29 | poke branches/v1/start/src/a/readme && | |
da083d68 ER |
30 | svn_cmd commit -m "hi" && |
31 | svn_cmd up && | |
32 | svn_cmd cp branches/v1/start tags/end && | |
570d35c2 MG |
33 | echo "bye" >> tags/end/src/b/readme && |
34 | poke tags/end/src/b/readme && | |
35 | echo "aye" >> tags/end/src/a/readme && | |
36 | poke tags/end/src/a/readme && | |
da083d68 | 37 | svn_cmd commit -m "the end" && |
570d35c2 MG |
38 | echo "byebye" >> tags/end/src/b/readme && |
39 | poke tags/end/src/b/readme && | |
da083d68 | 40 | svn_cmd commit -m "nothing to see here" |
570d35c2 MG |
41 | ) && |
42 | git config --add svn-remote.svn.url "$svnrepo" && | |
43 | git config --add svn-remote.svn.fetch \ | |
44 | "trunk/src/a:refs/remotes/trunk" && | |
45 | git config --add svn-remote.svn.branches \ | |
46 | "branches/*/*/src/a:refs/remotes/branches/*/*" && | |
47 | git config --add svn-remote.svn.tags\ | |
48 | "tags/*/src/a:refs/remotes/tags/*" && | |
1364ff27 | 49 | git svn multi-fetch && |
a4d4e32a PK |
50 | git log --pretty=oneline refs/remotes/tags/end >actual && |
51 | sed -e "s/^.\{41\}//" actual >output.end && | |
570d35c2 | 52 | test_cmp expect.end output.end && |
1be2fa02 EP |
53 | test "$(git rev-parse refs/remotes/tags/end~1)" = \ |
54 | "$(git rev-parse refs/remotes/branches/v1/start)" && | |
55 | test "$(git rev-parse refs/remotes/branches/v1/start~2)" = \ | |
56 | "$(git rev-parse refs/remotes/trunk)" && | |
570d35c2 MG |
57 | test_must_fail git rev-parse refs/remotes/tags/end@3 |
58 | ' | |
59 | ||
60 | echo try to try > expect.two | |
61 | echo nothing to see here >> expect.two | |
62 | cat expect.end >> expect.two | |
63 | ||
64 | test_expect_success 'test left-hand-side only globbing' ' | |
65 | git config --add svn-remote.two.url "$svnrepo" && | |
66 | git config --add svn-remote.two.fetch trunk:refs/remotes/two/trunk && | |
67 | git config --add svn-remote.two.branches \ | |
68 | "branches/*/*:refs/remotes/two/branches/*/*" && | |
69 | git config --add svn-remote.two.tags \ | |
70 | "tags/*:refs/remotes/two/tags/*" && | |
71 | ( | |
72 | cd tmp && | |
73 | echo "try try" >> tags/end/src/b/readme && | |
74 | poke tags/end/src/b/readme && | |
da083d68 | 75 | svn_cmd commit -m "try to try" |
570d35c2 | 76 | ) && |
1364ff27 | 77 | git svn fetch two && |
a4d4e32a PK |
78 | git rev-list refs/remotes/two/tags/end >actual && |
79 | test_line_count = 6 actual && | |
80 | git rev-list refs/remotes/two/branches/v1/start >actual && | |
81 | test_line_count = 3 actual && | |
1be2fa02 EP |
82 | test $(git rev-parse refs/remotes/two/branches/v1/start~2) = \ |
83 | $(git rev-parse refs/remotes/two/trunk) && | |
84 | test $(git rev-parse refs/remotes/two/tags/end~3) = \ | |
85 | $(git rev-parse refs/remotes/two/branches/v1/start) && | |
a4d4e32a PK |
86 | git log --pretty=oneline refs/remotes/two/tags/end >actual && |
87 | sed -e "s/^.\{41\}//" actual >output.two && | |
570d35c2 MG |
88 | test_cmp expect.two output.two |
89 | ' | |
90 | cat > expect.four <<EOF | |
91 | adios | |
92 | adding more | |
93 | Changed 2 in v2/start | |
94 | Another versioned branch | |
95 | initial | |
96 | EOF | |
97 | ||
98 | test_expect_success 'test another branch' ' | |
99 | ( | |
100 | cd tmp && | |
101 | mkdir branches/v2 && | |
da083d68 ER |
102 | svn_cmd add branches/v2 && |
103 | svn_cmd cp trunk branches/v2/start && | |
104 | svn_cmd commit -m "Another versioned branch" && | |
105 | svn_cmd up && | |
570d35c2 MG |
106 | echo "hello" >> branches/v2/start/src/b/readme && |
107 | poke branches/v2/start/src/b/readme && | |
108 | echo "howdy" >> branches/v2/start/src/a/readme && | |
109 | poke branches/v2/start/src/a/readme && | |
da083d68 ER |
110 | svn_cmd commit -m "Changed 2 in v2/start" && |
111 | svn_cmd up && | |
112 | svn_cmd cp branches/v2/start tags/next && | |
570d35c2 MG |
113 | echo "bye" >> tags/next/src/b/readme && |
114 | poke tags/next/src/b/readme && | |
115 | echo "aye" >> tags/next/src/a/readme && | |
116 | poke tags/next/src/a/readme && | |
da083d68 | 117 | svn_cmd commit -m "adding more" && |
570d35c2 MG |
118 | echo "byebye" >> tags/next/src/b/readme && |
119 | poke tags/next/src/b/readme && | |
da083d68 | 120 | svn_cmd commit -m "adios" |
570d35c2 MG |
121 | ) && |
122 | git config --add svn-remote.four.url "$svnrepo" && | |
123 | git config --add svn-remote.four.fetch trunk:refs/remotes/four/trunk && | |
124 | git config --add svn-remote.four.branches \ | |
125 | "branches/*/*:refs/remotes/four/branches/*/*" && | |
126 | git config --add svn-remote.four.tags \ | |
127 | "tags/*:refs/remotes/four/tags/*" && | |
1364ff27 | 128 | git svn fetch four && |
a4d4e32a PK |
129 | git rev-list refs/remotes/four/tags/next >actual && |
130 | test_line_count = 5 actual && | |
131 | git rev-list refs/remotes/four/branches/v2/start >actual && | |
132 | test_line_count = 3 actual && | |
1be2fa02 EP |
133 | test $(git rev-parse refs/remotes/four/branches/v2/start~2) = \ |
134 | $(git rev-parse refs/remotes/four/trunk) && | |
135 | test $(git rev-parse refs/remotes/four/tags/next~2) = \ | |
136 | $(git rev-parse refs/remotes/four/branches/v2/start) && | |
a4d4e32a PK |
137 | git log --pretty=oneline refs/remotes/four/tags/next >actual && |
138 | sed -e "s/^.\{41\}//" actual >output.four && | |
570d35c2 MG |
139 | test_cmp expect.four output.four |
140 | ' | |
141 | ||
62335bbb EW |
142 | test_expect_success 'prepare test disallow multiple globs' " |
143 | cat >expect.three <<EOF | |
144 | Only one set of wildcards (e.g. '*' or '*/*/*') is supported: branches/*/t/* | |
145 | ||
146 | EOF | |
147 | " | |
570d35c2 MG |
148 | |
149 | test_expect_success 'test disallow multiple globs' ' | |
150 | git config --add svn-remote.three.url "$svnrepo" && | |
151 | git config --add svn-remote.three.fetch \ | |
152 | trunk:refs/remotes/three/trunk && | |
153 | git config --add svn-remote.three.branches \ | |
154 | "branches/*/t/*:refs/remotes/three/branches/*/*" && | |
155 | git config --add svn-remote.three.tags \ | |
156 | "tags/*:refs/remotes/three/tags/*" && | |
157 | ( | |
158 | cd tmp && | |
159 | echo "try try" >> tags/end/src/b/readme && | |
160 | poke tags/end/src/b/readme && | |
da083d68 | 161 | svn_cmd commit -m "try to try" |
570d35c2 | 162 | ) && |
1364ff27 | 163 | test_must_fail git svn fetch three 2> stderr.three && |
570d35c2 MG |
164 | test_cmp expect.three stderr.three |
165 | ' | |
166 | ||
167 | test_done |