|
1 ================================================================ |
|
2 test the interaction of the branch cache with obsolete changeset |
|
3 ================================================================ |
|
4 |
|
5 Some corner case have been covered by unrelated test (like rebase ones) this |
|
6 file meant to gather explicite testing of those. |
|
7 |
|
8 See also: test-obsolete-checkheads.t |
|
9 |
|
10 #testcases v2 v3 |
|
11 |
|
12 $ cat >> $HGRCPATH << EOF |
|
13 > [phases] |
|
14 > publish = false |
|
15 > [experimental] |
|
16 > evolution = all |
|
17 > server.allow-hidden-access = * |
|
18 > EOF |
|
19 |
|
20 #if v3 |
|
21 $ cat <<EOF >> $HGRCPATH |
|
22 > [experimental] |
|
23 > branch-cache-v3=yes |
|
24 > EOF |
|
25 #else |
|
26 $ cat <<EOF >> $HGRCPATH |
|
27 > [experimental] |
|
28 > branch-cache-v3=no |
|
29 > EOF |
|
30 #endif |
|
31 |
|
32 Setup graph |
|
33 ############# |
|
34 |
|
35 $ . $RUNTESTDIR/testlib/common.sh |
|
36 |
|
37 graph with a single branch |
|
38 -------------------------- |
|
39 |
|
40 We want some branching and some obsolescence |
|
41 |
|
42 $ hg init main-single-branch |
|
43 $ cd main-single-branch |
|
44 $ mkcommit root |
|
45 $ mkcommit A_1 |
|
46 $ mkcommit A_2 |
|
47 $ hg update 'desc("A_2")' --quiet |
|
48 $ mkcommit B_1 |
|
49 $ mkcommit B_2 |
|
50 $ mkcommit B_3 |
|
51 $ mkcommit B_4 |
|
52 $ hg update 'desc("A_2")' --quiet |
|
53 $ mkcommit A_3 |
|
54 created new head |
|
55 $ mkcommit A_4 |
|
56 $ hg up null --quiet |
|
57 $ hg clone --noupdate . ../main-single-branch-pre-ops |
|
58 $ hg log -r 'desc("A_1")' -T '{node}' > ../main-single-branch-node_A1 |
|
59 $ hg log -r 'desc("A_2")' -T '{node}' > ../main-single-branch-node_A2 |
|
60 $ hg log -r 'desc("A_3")' -T '{node}' > ../main-single-branch-node_A3 |
|
61 $ hg log -r 'desc("A_4")' -T '{node}' > ../main-single-branch-node_A4 |
|
62 $ hg log -r 'desc("B_1")' -T '{node}' > ../main-single-branch-node_B1 |
|
63 $ hg log -r 'desc("B_2")' -T '{node}' > ../main-single-branch-node_B2 |
|
64 $ hg log -r 'desc("B_3")' -T '{node}' > ../main-single-branch-node_B3 |
|
65 $ hg log -r 'desc("B_4")' -T '{node}' > ../main-single-branch-node_B4 |
|
66 |
|
67 (double check the heads are right before we obsolete) |
|
68 |
|
69 $ hg log -R ../main-single-branch-pre-ops -G -T '{desc}\n' |
|
70 o A_4 |
|
71 | |
|
72 o A_3 |
|
73 | |
|
74 | o B_4 |
|
75 | | |
|
76 | o B_3 |
|
77 | | |
|
78 | o B_2 |
|
79 | | |
|
80 | o B_1 |
|
81 |/ |
|
82 o A_2 |
|
83 | |
|
84 o A_1 |
|
85 | |
|
86 o root |
|
87 |
|
88 $ hg log -G -T '{desc}\n' |
|
89 o A_4 |
|
90 | |
|
91 o A_3 |
|
92 | |
|
93 | o B_4 |
|
94 | | |
|
95 | o B_3 |
|
96 | | |
|
97 | o B_2 |
|
98 | | |
|
99 | o B_1 |
|
100 |/ |
|
101 o A_2 |
|
102 | |
|
103 o A_1 |
|
104 | |
|
105 o root |
|
106 |
|
107 $ hg log -T '{desc}\n' --rev 'head()' |
|
108 B_4 |
|
109 A_4 |
|
110 |
|
111 Absolete a couple of changes |
|
112 |
|
113 $ for d in B2 B3 B4 A4; do |
|
114 > hg debugobsolete --record-parents `cat ../main-single-branch-node_$d`; |
|
115 > done |
|
116 1 new obsolescence markers |
|
117 obsoleted 1 changesets |
|
118 2 new orphan changesets |
|
119 1 new obsolescence markers |
|
120 obsoleted 1 changesets |
|
121 1 new obsolescence markers |
|
122 obsoleted 1 changesets |
|
123 1 new obsolescence markers |
|
124 obsoleted 1 changesets |
|
125 |
|
126 (double check the result is okay) |
|
127 |
|
128 $ hg log -G -T '{desc}\n' |
|
129 o A_3 |
|
130 | |
|
131 | o B_1 |
|
132 |/ |
|
133 o A_2 |
|
134 | |
|
135 o A_1 |
|
136 | |
|
137 o root |
|
138 |
|
139 $ hg heads -T '{desc}\n' |
|
140 A_3 |
|
141 B_1 |
|
142 $ cd .. |
|
143 |
|
144 |
|
145 Actual testing |
|
146 ############## |
|
147 |
|
148 Revealing obsolete changeset |
|
149 ---------------------------- |
|
150 |
|
151 Check that revealing obsolete changesets does not confuse branch computation and checks |
|
152 |
|
153 Revealing tipmost changeset |
|
154 ~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
155 |
|
156 |
|
157 $ cp -R ./main-single-branch tmp-repo |
|
158 $ cd tmp-repo |
|
159 $ hg update --hidden --rev 'desc("A_4")' --quiet |
|
160 updated to hidden changeset 3d808bbc9440 |
|
161 (hidden revision '3d808bbc9440' is pruned) |
|
162 $ hg log -G -T '{desc}\n' |
|
163 @ A_4 |
|
164 | |
|
165 o A_3 |
|
166 | |
|
167 | o B_1 |
|
168 |/ |
|
169 o A_2 |
|
170 | |
|
171 o A_1 |
|
172 | |
|
173 o root |
|
174 |
|
175 $ hg heads -T '{desc}\n' |
|
176 A_3 |
|
177 B_1 |
|
178 |
|
179 Even when computing branches from scratch |
|
180 |
|
181 $ rm -rf .hg/cache/branch* |
|
182 $ rm -rf .hg/wcache/branch* |
|
183 $ hg heads -T '{desc}\n' |
|
184 A_3 |
|
185 B_1 |
|
186 |
|
187 And we can get back to normal |
|
188 |
|
189 $ hg update null --quiet |
|
190 $ hg heads -T '{desc}\n' |
|
191 A_3 |
|
192 B_1 |
|
193 |
|
194 $ cd .. |
|
195 $ rm -rf tmp-repo |
|
196 |
|
197 Revealing changeset in the middle of the changelog |
|
198 ~~~~~~~~~~~~~~~~~~~~~~~~~~~------------------------ |
|
199 |
|
200 Check that revealing an obsolete changeset does not confuse branch computation and checks |
|
201 |
|
202 $ cp -R ./main-single-branch tmp-repo |
|
203 $ cd tmp-repo |
|
204 $ hg update --hidden --rev 'desc("B_3")' --quiet |
|
205 updated to hidden changeset 9c996d7674bb |
|
206 (hidden revision '9c996d7674bb' is pruned) |
|
207 $ hg log -G -T '{desc}\n' |
|
208 o A_3 |
|
209 | |
|
210 | @ B_3 |
|
211 | | |
|
212 | x B_2 |
|
213 | | |
|
214 | o B_1 |
|
215 |/ |
|
216 o A_2 |
|
217 | |
|
218 o A_1 |
|
219 | |
|
220 o root |
|
221 |
|
222 $ hg heads -T '{desc}\n' |
|
223 A_3 |
|
224 B_1 |
|
225 |
|
226 Even when computing branches from scratch |
|
227 |
|
228 $ rm -rf .hg/cache/branch* |
|
229 $ rm -rf .hg/wcache/branch* |
|
230 $ hg heads -T '{desc}\n' |
|
231 A_3 |
|
232 B_1 |
|
233 |
|
234 And we can get back to normal |
|
235 |
|
236 $ hg update null --quiet |
|
237 $ hg heads -T '{desc}\n' |
|
238 A_3 |
|
239 B_1 |
|
240 |
|
241 $ cd .. |
|
242 $ rm -rf tmp-repo |
|
243 |
|
244 Getting the obsolescence marker after the fact for the tip rev |
|
245 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
246 |
|
247 $ cp -R ./main-single-branch-pre-ops tmp-repo |
|
248 $ cd tmp-repo |
|
249 $ hg update --hidden --rev 'desc("A_4")' --quiet |
|
250 $ hg log -G -T '{desc}\n' |
|
251 @ A_4 |
|
252 | |
|
253 o A_3 |
|
254 | |
|
255 | o B_4 |
|
256 | | |
|
257 | o B_3 |
|
258 | | |
|
259 | o B_2 |
|
260 | | |
|
261 | o B_1 |
|
262 |/ |
|
263 o A_2 |
|
264 | |
|
265 o A_1 |
|
266 | |
|
267 o root |
|
268 |
|
269 $ hg heads -T '{desc}\n' |
|
270 A_4 |
|
271 B_4 |
|
272 $ hg pull --rev `cat ../main-single-branch-node_A4` --remote-hidden |
|
273 pulling from $TESTTMP/main-single-branch |
|
274 no changes found |
|
275 1 new obsolescence markers |
|
276 obsoleted 1 changesets |
|
277 |
|
278 branch head are okay |
|
279 |
|
280 $ hg heads -T '{desc}\n' |
|
281 A_3 |
|
282 B_4 |
|
283 |
|
284 Even when computing branches from scratch |
|
285 |
|
286 $ rm -rf .hg/cache/branch* |
|
287 $ rm -rf .hg/wcache/branch* |
|
288 $ hg heads -T '{desc}\n' |
|
289 A_3 |
|
290 B_4 |
|
291 |
|
292 And we can get back to normal |
|
293 |
|
294 $ hg update null --quiet |
|
295 $ hg heads -T '{desc}\n' |
|
296 A_3 |
|
297 B_4 |
|
298 |
|
299 $ cd .. |
|
300 $ rm -rf tmp-repo |
|
301 |
|
302 Getting the obsolescence marker after the fact for another rev |
|
303 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
304 |
|
305 $ cp -R ./main-single-branch-pre-ops tmp-repo |
|
306 $ cd tmp-repo |
|
307 $ hg update --hidden --rev 'desc("B_3")' --quiet |
|
308 $ hg log -G -T '{desc}\n' |
|
309 o A_4 |
|
310 | |
|
311 o A_3 |
|
312 | |
|
313 | o B_4 |
|
314 | | |
|
315 | @ B_3 |
|
316 | | |
|
317 | o B_2 |
|
318 | | |
|
319 | o B_1 |
|
320 |/ |
|
321 o A_2 |
|
322 | |
|
323 o A_1 |
|
324 | |
|
325 o root |
|
326 |
|
327 $ hg heads -T '{desc}\n' |
|
328 A_4 |
|
329 B_4 |
|
330 $ hg pull --rev `cat ../main-single-branch-node_B4` --remote-hidden |
|
331 pulling from $TESTTMP/main-single-branch |
|
332 no changes found |
|
333 3 new obsolescence markers |
|
334 obsoleted 3 changesets |
|
335 |
|
336 branch head are okay |
|
337 |
|
338 $ hg heads -T '{desc}\n' |
|
339 A_4 |
|
340 B_1 |
|
341 |
|
342 Even when computing branches from scratch |
|
343 |
|
344 $ rm -rf .hg/cache/branch* |
|
345 $ rm -rf .hg/wcache/branch* |
|
346 $ hg heads -T '{desc}\n' |
|
347 A_4 |
|
348 B_1 |
|
349 |
|
350 And we can get back to normal |
|
351 |
|
352 $ hg update null --quiet |
|
353 $ hg heads -T '{desc}\n' |
|
354 A_4 |
|
355 B_1 |
|
356 |
|
357 $ cd .. |
|
358 $ rm -rf tmp-repo |