|
1 Test file decicated to testing the divergent troubles from obsolete changeset. |
|
2 |
|
3 This is the most complexe troubles from far so we isolate it in a dedicated |
|
4 file. |
|
5 |
|
6 Enable obsolete |
|
7 |
|
8 $ cat >> $HGRCPATH << EOF |
|
9 > [ui] |
|
10 > logtemplate = {rev}:{node|short} {desc}\n |
|
11 > [alias] |
|
12 > debugobsolete = debugobsolete -d '0 0' |
|
13 > [phases] |
|
14 > publish=False |
|
15 > [extensions] |
|
16 > rebase= |
|
17 > EOF |
|
18 $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext/evolve.py" >> $HGRCPATH |
|
19 |
|
20 |
|
21 $ mkcommit() { |
|
22 > echo "$1" > "$1" |
|
23 > hg add "$1" |
|
24 > hg ci -m "$1" |
|
25 > } |
|
26 $ getid() { |
|
27 > hg id --debug -ir "desc('$1')" |
|
28 > } |
|
29 |
|
30 setup repo |
|
31 |
|
32 $ hg init reference |
|
33 $ cd reference |
|
34 $ mkcommit base |
|
35 $ mkcommit A_0 |
|
36 $ hg up 0 |
|
37 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
38 $ mkcommit A_1 |
|
39 created new head |
|
40 $ hg up 0 |
|
41 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
42 $ mkcommit A_2 |
|
43 created new head |
|
44 $ hg up 0 |
|
45 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
46 $ cd .. |
|
47 |
|
48 |
|
49 $ newcase() { |
|
50 > hg clone -u 0 -q reference $1 |
|
51 > cd $1 |
|
52 > } |
|
53 |
|
54 direct divergence |
|
55 ----------------- |
|
56 |
|
57 A_1 have two direct and divergent successors A_1 and A_1 |
|
58 |
|
59 $ newcase direct |
|
60 $ hg debugobsolete `getid A_0` `getid A_1` |
|
61 $ hg debugobsolete `getid A_0` `getid A_2` |
|
62 $ hg log -G --hidden |
|
63 o 3:392fd25390da A_2 |
|
64 | |
|
65 | o 2:82623d38b9ba A_1 |
|
66 |/ |
|
67 | x 1:007dc284c1f8 A_0 |
|
68 |/ |
|
69 @ 0:d20a80d4def3 base |
|
70 |
|
71 $ hg debugsuccessorssets 'all()' |
|
72 d20a80d4def3 |
|
73 d20a80d4def3 |
|
74 007dc284c1f8 |
|
75 392fd25390da |
|
76 82623d38b9ba |
|
77 82623d38b9ba |
|
78 82623d38b9ba |
|
79 392fd25390da |
|
80 392fd25390da |
|
81 $ hg log -r 'divergent()' |
|
82 2:82623d38b9ba A_1 |
|
83 3:392fd25390da A_2 |
|
84 |
|
85 check that mercurial refuse to push |
|
86 |
|
87 $ hg init ../other |
|
88 $ hg push ../other |
|
89 pushing to ../other |
|
90 searching for changes |
|
91 abort: push includes a divergent changeset: 82623d38b9ba! |
|
92 (use 'hg evolve' to get a stable history or --force to ignore warnings) |
|
93 [255] |
|
94 |
|
95 $ cd .. |
|
96 |
|
97 |
|
98 indirect divergence with known changeset |
|
99 ------------------------------------------- |
|
100 |
|
101 $ newcase indirect_known |
|
102 $ hg debugobsolete `getid A_0` `getid A_1` |
|
103 $ hg debugobsolete `getid A_0` `getid A_2` |
|
104 $ mkcommit A_3 |
|
105 created new head |
|
106 $ hg debugobsolete `getid A_2` `getid A_3` |
|
107 $ hg log -G --hidden |
|
108 @ 4:01f36c5a8fda A_3 |
|
109 | |
|
110 | x 3:392fd25390da A_2 |
|
111 |/ |
|
112 | o 2:82623d38b9ba A_1 |
|
113 |/ |
|
114 | x 1:007dc284c1f8 A_0 |
|
115 |/ |
|
116 o 0:d20a80d4def3 base |
|
117 |
|
118 $ hg debugsuccessorssets 'all()' |
|
119 d20a80d4def3 |
|
120 d20a80d4def3 |
|
121 007dc284c1f8 |
|
122 01f36c5a8fda |
|
123 82623d38b9ba |
|
124 82623d38b9ba |
|
125 82623d38b9ba |
|
126 392fd25390da |
|
127 01f36c5a8fda |
|
128 01f36c5a8fda |
|
129 01f36c5a8fda |
|
130 $ hg log -r 'divergent()' |
|
131 2:82623d38b9ba A_1 |
|
132 4:01f36c5a8fda A_3 |
|
133 $ cd .. |
|
134 |
|
135 |
|
136 indirect divergence with known changeset |
|
137 ------------------------------------------- |
|
138 |
|
139 $ newcase indirect_unknown |
|
140 $ hg debugobsolete `getid A_0` aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
|
141 $ hg debugobsolete aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa `getid A_1` |
|
142 $ hg debugobsolete `getid A_0` `getid A_2` |
|
143 $ hg log -G --hidden |
|
144 o 3:392fd25390da A_2 |
|
145 | |
|
146 | o 2:82623d38b9ba A_1 |
|
147 |/ |
|
148 | x 1:007dc284c1f8 A_0 |
|
149 |/ |
|
150 @ 0:d20a80d4def3 base |
|
151 |
|
152 $ hg debugsuccessorssets 'all()' |
|
153 d20a80d4def3 |
|
154 d20a80d4def3 |
|
155 007dc284c1f8 |
|
156 392fd25390da |
|
157 82623d38b9ba |
|
158 82623d38b9ba |
|
159 82623d38b9ba |
|
160 392fd25390da |
|
161 392fd25390da |
|
162 $ hg log -r 'divergent()' |
|
163 2:82623d38b9ba A_1 |
|
164 3:392fd25390da A_2 |
|
165 $ cd .. |
|
166 |
|
167 do not take unknown node in account if they are final |
|
168 ----------------------------------------------------- |
|
169 |
|
170 $ newcase final-unknown |
|
171 $ hg debugobsolete `getid A_0` `getid A_1` |
|
172 $ hg debugobsolete `getid A_1` `getid A_2` |
|
173 $ hg debugobsolete `getid A_0` bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb |
|
174 $ hg debugobsolete bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb cccccccccccccccccccccccccccccccccccccccc |
|
175 $ hg debugobsolete `getid A_1` dddddddddddddddddddddddddddddddddddddddd |
|
176 |
|
177 $ hg debugsuccessorssets 'desc('A_0')' |
|
178 007dc284c1f8 |
|
179 392fd25390da |
|
180 |
|
181 $ cd .. |
|
182 |
|
183 divergence that converge again is not divergence anymore |
|
184 ----------------------------------------------------- |
|
185 |
|
186 $ newcase converged_divergence |
|
187 $ hg debugobsolete `getid A_0` `getid A_1` |
|
188 $ hg debugobsolete `getid A_0` `getid A_2` |
|
189 $ mkcommit A_3 |
|
190 created new head |
|
191 $ hg debugobsolete `getid A_1` `getid A_3` |
|
192 $ hg debugobsolete `getid A_2` `getid A_3` |
|
193 $ hg log -G --hidden |
|
194 @ 4:01f36c5a8fda A_3 |
|
195 | |
|
196 | x 3:392fd25390da A_2 |
|
197 |/ |
|
198 | x 2:82623d38b9ba A_1 |
|
199 |/ |
|
200 | x 1:007dc284c1f8 A_0 |
|
201 |/ |
|
202 o 0:d20a80d4def3 base |
|
203 |
|
204 $ hg debugsuccessorssets 'all()' |
|
205 d20a80d4def3 |
|
206 d20a80d4def3 |
|
207 007dc284c1f8 |
|
208 01f36c5a8fda |
|
209 82623d38b9ba |
|
210 01f36c5a8fda |
|
211 392fd25390da |
|
212 01f36c5a8fda |
|
213 01f36c5a8fda |
|
214 01f36c5a8fda |
|
215 $ hg log -r 'divergent()' |
|
216 $ cd .. |
|
217 |
|
218 split is not divergences |
|
219 ----------------------------- |
|
220 |
|
221 $ newcase split |
|
222 $ hg debugobsolete `getid A_0` `getid A_1` `getid A_2` |
|
223 $ hg log -G --hidden |
|
224 o 3:392fd25390da A_2 |
|
225 | |
|
226 | o 2:82623d38b9ba A_1 |
|
227 |/ |
|
228 | x 1:007dc284c1f8 A_0 |
|
229 |/ |
|
230 @ 0:d20a80d4def3 base |
|
231 |
|
232 $ hg debugsuccessorssets 'all()' |
|
233 d20a80d4def3 |
|
234 d20a80d4def3 |
|
235 007dc284c1f8 |
|
236 82623d38b9ba 392fd25390da |
|
237 82623d38b9ba |
|
238 82623d38b9ba |
|
239 392fd25390da |
|
240 392fd25390da |
|
241 $ hg log -r 'divergent()' |
|
242 |
|
243 Even when subsequente rewriting happen |
|
244 |
|
245 $ mkcommit A_3 |
|
246 created new head |
|
247 $ hg debugobsolete `getid A_1` `getid A_3` |
|
248 $ hg up 0 |
|
249 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
250 $ mkcommit A_4 |
|
251 created new head |
|
252 $ hg debugobsolete `getid A_2` `getid A_4` |
|
253 $ hg up 0 |
|
254 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
255 $ mkcommit A_5 |
|
256 created new head |
|
257 $ hg debugobsolete `getid A_4` `getid A_5` |
|
258 $ hg log -G --hidden |
|
259 @ 6:e442cfc57690 A_5 |
|
260 | |
|
261 | x 5:6a411f0d7a0a A_4 |
|
262 |/ |
|
263 | o 4:01f36c5a8fda A_3 |
|
264 |/ |
|
265 | x 3:392fd25390da A_2 |
|
266 |/ |
|
267 | x 2:82623d38b9ba A_1 |
|
268 |/ |
|
269 | x 1:007dc284c1f8 A_0 |
|
270 |/ |
|
271 o 0:d20a80d4def3 base |
|
272 |
|
273 $ hg debugsuccessorssets 'all()' |
|
274 d20a80d4def3 |
|
275 d20a80d4def3 |
|
276 007dc284c1f8 |
|
277 01f36c5a8fda e442cfc57690 |
|
278 82623d38b9ba |
|
279 01f36c5a8fda |
|
280 392fd25390da |
|
281 e442cfc57690 |
|
282 01f36c5a8fda |
|
283 01f36c5a8fda |
|
284 6a411f0d7a0a |
|
285 e442cfc57690 |
|
286 e442cfc57690 |
|
287 e442cfc57690 |
|
288 $ hg log -r 'divergent()' |
|
289 |
|
290 Check more complexe obsolescence graft (with divergence) |
|
291 |
|
292 $ mkcommit B_0; hg up 0 |
|
293 0 files updated, 0 files merged, 2 files removed, 0 files unresolved |
|
294 $ hg debugobsolete `getid B_0` `getid A_2` |
|
295 $ mkcommit A_7; hg up 0 |
|
296 created new head |
|
297 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
298 $ mkcommit A_8; hg up 0 |
|
299 created new head |
|
300 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
301 $ hg debugobsolete `getid A_5` `getid A_7` `getid A_8` |
|
302 $ mkcommit A_9; hg up 0 |
|
303 created new head |
|
304 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
305 $ hg debugobsolete `getid A_5` `getid A_9` |
|
306 $ hg log -G --hidden |
|
307 o 10:bed64f5d2f5a A_9 |
|
308 | |
|
309 | o 9:14608b260df8 A_8 |
|
310 |/ |
|
311 | o 8:7ae126973a96 A_7 |
|
312 |/ |
|
313 | x 7:3750ebee865d B_0 |
|
314 | | |
|
315 | x 6:e442cfc57690 A_5 |
|
316 |/ |
|
317 | x 5:6a411f0d7a0a A_4 |
|
318 |/ |
|
319 | o 4:01f36c5a8fda A_3 |
|
320 |/ |
|
321 | x 3:392fd25390da A_2 |
|
322 |/ |
|
323 | x 2:82623d38b9ba A_1 |
|
324 |/ |
|
325 | x 1:007dc284c1f8 A_0 |
|
326 |/ |
|
327 @ 0:d20a80d4def3 base |
|
328 |
|
329 $ hg debugsuccessorssets 'all()' |
|
330 d20a80d4def3 |
|
331 d20a80d4def3 |
|
332 007dc284c1f8 |
|
333 01f36c5a8fda bed64f5d2f5a |
|
334 01f36c5a8fda 7ae126973a96 14608b260df8 |
|
335 82623d38b9ba |
|
336 01f36c5a8fda |
|
337 392fd25390da |
|
338 bed64f5d2f5a |
|
339 7ae126973a96 14608b260df8 |
|
340 01f36c5a8fda |
|
341 01f36c5a8fda |
|
342 6a411f0d7a0a |
|
343 bed64f5d2f5a |
|
344 7ae126973a96 14608b260df8 |
|
345 e442cfc57690 |
|
346 bed64f5d2f5a |
|
347 7ae126973a96 14608b260df8 |
|
348 3750ebee865d |
|
349 bed64f5d2f5a |
|
350 7ae126973a96 14608b260df8 |
|
351 7ae126973a96 |
|
352 7ae126973a96 |
|
353 14608b260df8 |
|
354 14608b260df8 |
|
355 bed64f5d2f5a |
|
356 bed64f5d2f5a |
|
357 $ hg log -r 'divergent()' |
|
358 4:01f36c5a8fda A_3 |
|
359 8:7ae126973a96 A_7 |
|
360 9:14608b260df8 A_8 |
|
361 10:bed64f5d2f5a A_9 |
|
362 |
|
363 fix the divergence |
|
364 |
|
365 $ mkcommit A_A; hg up 0 |
|
366 created new head |
|
367 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
368 $ hg debugobsolete `getid A_9` `getid A_A` |
|
369 $ hg debugobsolete `getid A_7` `getid A_A` |
|
370 $ hg debugobsolete `getid A_8` `getid A_A` |
|
371 $ hg log -G --hidden |
|
372 o 11:a139f71be9da A_A |
|
373 | |
|
374 | x 10:bed64f5d2f5a A_9 |
|
375 |/ |
|
376 | x 9:14608b260df8 A_8 |
|
377 |/ |
|
378 | x 8:7ae126973a96 A_7 |
|
379 |/ |
|
380 | x 7:3750ebee865d B_0 |
|
381 | | |
|
382 | x 6:e442cfc57690 A_5 |
|
383 |/ |
|
384 | x 5:6a411f0d7a0a A_4 |
|
385 |/ |
|
386 | o 4:01f36c5a8fda A_3 |
|
387 |/ |
|
388 | x 3:392fd25390da A_2 |
|
389 |/ |
|
390 | x 2:82623d38b9ba A_1 |
|
391 |/ |
|
392 | x 1:007dc284c1f8 A_0 |
|
393 |/ |
|
394 @ 0:d20a80d4def3 base |
|
395 |
|
396 $ hg debugsuccessorssets 'all()' |
|
397 d20a80d4def3 |
|
398 d20a80d4def3 |
|
399 007dc284c1f8 |
|
400 01f36c5a8fda a139f71be9da |
|
401 82623d38b9ba |
|
402 01f36c5a8fda |
|
403 392fd25390da |
|
404 a139f71be9da |
|
405 01f36c5a8fda |
|
406 01f36c5a8fda |
|
407 6a411f0d7a0a |
|
408 a139f71be9da |
|
409 e442cfc57690 |
|
410 a139f71be9da |
|
411 3750ebee865d |
|
412 a139f71be9da |
|
413 7ae126973a96 |
|
414 a139f71be9da |
|
415 14608b260df8 |
|
416 a139f71be9da |
|
417 bed64f5d2f5a |
|
418 a139f71be9da |
|
419 a139f71be9da |
|
420 a139f71be9da |
|
421 $ hg log -r 'divergent()' |
|
422 |
|
423 $ cd .. |
|
424 |
|
425 |
|
426 Subset does not diverge |
|
427 ------------------------------ |
|
428 |
|
429 Do not report divergent successors-set if it is a subset of another |
|
430 successors-set. (report [A,B] not [A] + [A,B]) |
|
431 |
|
432 $ newcase subset |
|
433 $ hg debugobsolete `getid A_0` `getid A_2` |
|
434 $ hg debugobsolete `getid A_0` `getid A_1` `getid A_2` |
|
435 $ hg debugsuccessorssets 'desc('A_0')' |
|
436 007dc284c1f8 |
|
437 82623d38b9ba 392fd25390da |
|
438 |
|
439 $ cd .. |