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 $ hg summary -v |
|
85 parent: 0:d20a80d4def3 |
|
86 base |
|
87 branch: default |
|
88 commit: (clean) |
|
89 update: 3 new changesets (update) |
|
90 unstable: 0 changesets |
|
91 bumped: 0 changesets |
|
92 divergent: 2 changesets |
|
93 |
|
94 |
|
95 check that mercurial refuse to push |
|
96 |
|
97 $ hg init ../other |
|
98 $ hg push ../other |
|
99 pushing to ../other |
|
100 searching for changes |
|
101 abort: push includes a divergent changeset: 82623d38b9ba! |
|
102 (use 'hg evolve' to get a stable history or --force to ignore warnings) |
|
103 [255] |
|
104 |
|
105 $ cd .. |
|
106 |
|
107 |
|
108 indirect divergence with known changeset |
|
109 ------------------------------------------- |
|
110 |
|
111 $ newcase indirect_known |
|
112 $ hg debugobsolete `getid A_0` `getid A_1` |
|
113 $ hg debugobsolete `getid A_0` `getid A_2` |
|
114 $ mkcommit A_3 |
|
115 created new head |
|
116 $ hg debugobsolete `getid A_2` `getid A_3` |
|
117 $ hg log -G --hidden |
|
118 @ 4:01f36c5a8fda A_3 |
|
119 | |
|
120 | x 3:392fd25390da A_2 |
|
121 |/ |
|
122 | o 2:82623d38b9ba A_1 |
|
123 |/ |
|
124 | x 1:007dc284c1f8 A_0 |
|
125 |/ |
|
126 o 0:d20a80d4def3 base |
|
127 |
|
128 $ hg debugsuccessorssets 'all()' |
|
129 d20a80d4def3 |
|
130 d20a80d4def3 |
|
131 007dc284c1f8 |
|
132 01f36c5a8fda |
|
133 82623d38b9ba |
|
134 82623d38b9ba |
|
135 82623d38b9ba |
|
136 392fd25390da |
|
137 01f36c5a8fda |
|
138 01f36c5a8fda |
|
139 01f36c5a8fda |
|
140 $ hg log -r 'divergent()' |
|
141 2:82623d38b9ba A_1 |
|
142 4:01f36c5a8fda A_3 |
|
143 $ cd .. |
|
144 |
|
145 |
|
146 indirect divergence with known changeset |
|
147 ------------------------------------------- |
|
148 |
|
149 $ newcase indirect_unknown |
|
150 $ hg debugobsolete `getid A_0` aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
|
151 $ hg debugobsolete aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa `getid A_1` |
|
152 $ hg debugobsolete `getid A_0` `getid A_2` |
|
153 $ hg log -G --hidden |
|
154 o 3:392fd25390da A_2 |
|
155 | |
|
156 | o 2:82623d38b9ba A_1 |
|
157 |/ |
|
158 | x 1:007dc284c1f8 A_0 |
|
159 |/ |
|
160 @ 0:d20a80d4def3 base |
|
161 |
|
162 $ hg debugsuccessorssets 'all()' |
|
163 d20a80d4def3 |
|
164 d20a80d4def3 |
|
165 007dc284c1f8 |
|
166 392fd25390da |
|
167 82623d38b9ba |
|
168 82623d38b9ba |
|
169 82623d38b9ba |
|
170 392fd25390da |
|
171 392fd25390da |
|
172 $ hg log -r 'divergent()' |
|
173 2:82623d38b9ba A_1 |
|
174 3:392fd25390da A_2 |
|
175 $ cd .. |
|
176 |
|
177 do not take unknown node in account if they are final |
|
178 ----------------------------------------------------- |
|
179 |
|
180 $ newcase final-unknown |
|
181 $ hg debugobsolete `getid A_0` `getid A_1` |
|
182 $ hg debugobsolete `getid A_1` `getid A_2` |
|
183 $ hg debugobsolete `getid A_0` bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb |
|
184 $ hg debugobsolete bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb cccccccccccccccccccccccccccccccccccccccc |
|
185 $ hg debugobsolete `getid A_1` dddddddddddddddddddddddddddddddddddddddd |
|
186 |
|
187 $ hg debugsuccessorssets 'desc('A_0')' |
|
188 007dc284c1f8 |
|
189 392fd25390da |
|
190 |
|
191 $ cd .. |
|
192 |
|
193 divergence that converge again is not divergence anymore |
|
194 ----------------------------------------------------- |
|
195 |
|
196 $ newcase converged_divergence |
|
197 $ hg debugobsolete `getid A_0` `getid A_1` |
|
198 $ hg debugobsolete `getid A_0` `getid A_2` |
|
199 $ mkcommit A_3 |
|
200 created new head |
|
201 $ hg debugobsolete `getid A_1` `getid A_3` |
|
202 $ hg debugobsolete `getid A_2` `getid A_3` |
|
203 $ hg log -G --hidden |
|
204 @ 4:01f36c5a8fda A_3 |
|
205 | |
|
206 | x 3:392fd25390da A_2 |
|
207 |/ |
|
208 | x 2:82623d38b9ba A_1 |
|
209 |/ |
|
210 | x 1:007dc284c1f8 A_0 |
|
211 |/ |
|
212 o 0:d20a80d4def3 base |
|
213 |
|
214 $ hg debugsuccessorssets 'all()' |
|
215 d20a80d4def3 |
|
216 d20a80d4def3 |
|
217 007dc284c1f8 |
|
218 01f36c5a8fda |
|
219 82623d38b9ba |
|
220 01f36c5a8fda |
|
221 392fd25390da |
|
222 01f36c5a8fda |
|
223 01f36c5a8fda |
|
224 01f36c5a8fda |
|
225 $ hg log -r 'divergent()' |
|
226 $ cd .. |
|
227 |
|
228 split is not divergences |
|
229 ----------------------------- |
|
230 |
|
231 $ newcase split |
|
232 $ hg debugobsolete `getid A_0` `getid A_1` `getid A_2` |
|
233 $ hg log -G --hidden |
|
234 o 3:392fd25390da A_2 |
|
235 | |
|
236 | o 2:82623d38b9ba A_1 |
|
237 |/ |
|
238 | x 1:007dc284c1f8 A_0 |
|
239 |/ |
|
240 @ 0:d20a80d4def3 base |
|
241 |
|
242 $ hg debugsuccessorssets 'all()' |
|
243 d20a80d4def3 |
|
244 d20a80d4def3 |
|
245 007dc284c1f8 |
|
246 82623d38b9ba 392fd25390da |
|
247 82623d38b9ba |
|
248 82623d38b9ba |
|
249 392fd25390da |
|
250 392fd25390da |
|
251 $ hg log -r 'divergent()' |
|
252 |
|
253 Even when subsequente rewriting happen |
|
254 |
|
255 $ mkcommit A_3 |
|
256 created new head |
|
257 $ hg debugobsolete `getid A_1` `getid A_3` |
|
258 $ hg up 0 |
|
259 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
260 $ mkcommit A_4 |
|
261 created new head |
|
262 $ hg debugobsolete `getid A_2` `getid A_4` |
|
263 $ hg up 0 |
|
264 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
265 $ mkcommit A_5 |
|
266 created new head |
|
267 $ hg debugobsolete `getid A_4` `getid A_5` |
|
268 $ hg log -G --hidden |
|
269 @ 6:e442cfc57690 A_5 |
|
270 | |
|
271 | x 5:6a411f0d7a0a A_4 |
|
272 |/ |
|
273 | o 4:01f36c5a8fda A_3 |
|
274 |/ |
|
275 | x 3:392fd25390da A_2 |
|
276 |/ |
|
277 | x 2:82623d38b9ba A_1 |
|
278 |/ |
|
279 | x 1:007dc284c1f8 A_0 |
|
280 |/ |
|
281 o 0:d20a80d4def3 base |
|
282 |
|
283 $ hg debugsuccessorssets 'all()' |
|
284 d20a80d4def3 |
|
285 d20a80d4def3 |
|
286 007dc284c1f8 |
|
287 01f36c5a8fda e442cfc57690 |
|
288 82623d38b9ba |
|
289 01f36c5a8fda |
|
290 392fd25390da |
|
291 e442cfc57690 |
|
292 01f36c5a8fda |
|
293 01f36c5a8fda |
|
294 6a411f0d7a0a |
|
295 e442cfc57690 |
|
296 e442cfc57690 |
|
297 e442cfc57690 |
|
298 $ hg log -r 'divergent()' |
|
299 |
|
300 Check more complexe obsolescence graft (with divergence) |
|
301 |
|
302 $ mkcommit B_0; hg up 0 |
|
303 0 files updated, 0 files merged, 2 files removed, 0 files unresolved |
|
304 $ hg debugobsolete `getid B_0` `getid A_2` |
|
305 $ mkcommit A_7; hg up 0 |
|
306 created new head |
|
307 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
308 $ mkcommit A_8; hg up 0 |
|
309 created new head |
|
310 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
311 $ hg debugobsolete `getid A_5` `getid A_7` `getid A_8` |
|
312 $ mkcommit A_9; hg up 0 |
|
313 created new head |
|
314 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
315 $ hg debugobsolete `getid A_5` `getid A_9` |
|
316 $ hg log -G --hidden |
|
317 o 10:bed64f5d2f5a A_9 |
|
318 | |
|
319 | o 9:14608b260df8 A_8 |
|
320 |/ |
|
321 | o 8:7ae126973a96 A_7 |
|
322 |/ |
|
323 | x 7:3750ebee865d B_0 |
|
324 | | |
|
325 | x 6:e442cfc57690 A_5 |
|
326 |/ |
|
327 | x 5:6a411f0d7a0a A_4 |
|
328 |/ |
|
329 | o 4:01f36c5a8fda A_3 |
|
330 |/ |
|
331 | x 3:392fd25390da A_2 |
|
332 |/ |
|
333 | x 2:82623d38b9ba A_1 |
|
334 |/ |
|
335 | x 1:007dc284c1f8 A_0 |
|
336 |/ |
|
337 @ 0:d20a80d4def3 base |
|
338 |
|
339 $ hg debugsuccessorssets 'all()' |
|
340 d20a80d4def3 |
|
341 d20a80d4def3 |
|
342 007dc284c1f8 |
|
343 01f36c5a8fda bed64f5d2f5a |
|
344 01f36c5a8fda 7ae126973a96 14608b260df8 |
|
345 82623d38b9ba |
|
346 01f36c5a8fda |
|
347 392fd25390da |
|
348 bed64f5d2f5a |
|
349 7ae126973a96 14608b260df8 |
|
350 01f36c5a8fda |
|
351 01f36c5a8fda |
|
352 6a411f0d7a0a |
|
353 bed64f5d2f5a |
|
354 7ae126973a96 14608b260df8 |
|
355 e442cfc57690 |
|
356 bed64f5d2f5a |
|
357 7ae126973a96 14608b260df8 |
|
358 3750ebee865d |
|
359 bed64f5d2f5a |
|
360 7ae126973a96 14608b260df8 |
|
361 7ae126973a96 |
|
362 7ae126973a96 |
|
363 14608b260df8 |
|
364 14608b260df8 |
|
365 bed64f5d2f5a |
|
366 bed64f5d2f5a |
|
367 $ hg log -r 'divergent()' |
|
368 4:01f36c5a8fda A_3 |
|
369 8:7ae126973a96 A_7 |
|
370 9:14608b260df8 A_8 |
|
371 10:bed64f5d2f5a A_9 |
|
372 |
|
373 fix the divergence |
|
374 |
|
375 $ mkcommit A_A; hg up 0 |
|
376 created new head |
|
377 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
378 $ hg debugobsolete `getid A_9` `getid A_A` |
|
379 $ hg debugobsolete `getid A_7` `getid A_A` |
|
380 $ hg debugobsolete `getid A_8` `getid A_A` |
|
381 $ hg log -G --hidden |
|
382 o 11:a139f71be9da A_A |
|
383 | |
|
384 | x 10:bed64f5d2f5a A_9 |
|
385 |/ |
|
386 | x 9:14608b260df8 A_8 |
|
387 |/ |
|
388 | x 8:7ae126973a96 A_7 |
|
389 |/ |
|
390 | x 7:3750ebee865d B_0 |
|
391 | | |
|
392 | x 6:e442cfc57690 A_5 |
|
393 |/ |
|
394 | x 5:6a411f0d7a0a A_4 |
|
395 |/ |
|
396 | o 4:01f36c5a8fda A_3 |
|
397 |/ |
|
398 | x 3:392fd25390da A_2 |
|
399 |/ |
|
400 | x 2:82623d38b9ba A_1 |
|
401 |/ |
|
402 | x 1:007dc284c1f8 A_0 |
|
403 |/ |
|
404 @ 0:d20a80d4def3 base |
|
405 |
|
406 $ hg debugsuccessorssets 'all()' |
|
407 d20a80d4def3 |
|
408 d20a80d4def3 |
|
409 007dc284c1f8 |
|
410 01f36c5a8fda a139f71be9da |
|
411 82623d38b9ba |
|
412 01f36c5a8fda |
|
413 392fd25390da |
|
414 a139f71be9da |
|
415 01f36c5a8fda |
|
416 01f36c5a8fda |
|
417 6a411f0d7a0a |
|
418 a139f71be9da |
|
419 e442cfc57690 |
|
420 a139f71be9da |
|
421 3750ebee865d |
|
422 a139f71be9da |
|
423 7ae126973a96 |
|
424 a139f71be9da |
|
425 14608b260df8 |
|
426 a139f71be9da |
|
427 bed64f5d2f5a |
|
428 a139f71be9da |
|
429 a139f71be9da |
|
430 a139f71be9da |
|
431 $ hg log -r 'divergent()' |
|
432 |
|
433 $ cd .. |
|
434 |
|
435 |
|
436 Subset does not diverge |
|
437 ------------------------------ |
|
438 |
|
439 Do not report divergent successors-set if it is a subset of another |
|
440 successors-set. (report [A,B] not [A] + [A,B]) |
|
441 |
|
442 $ newcase subset |
|
443 $ hg debugobsolete `getid A_0` `getid A_2` |
|
444 $ hg debugobsolete `getid A_0` `getid A_1` `getid A_2` |
|
445 $ hg debugsuccessorssets 'desc('A_0')' |
|
446 007dc284c1f8 |
|
447 82623d38b9ba 392fd25390da |
|
448 |
|
449 $ cd .. |
|