|
1 =============================================================================== |
|
2 Tests the resolution of public content divergence: when merging leads to public |
|
3 =============================================================================== |
|
4 |
|
5 This file intend to cover all the cases possible when merging the other |
|
6 divergent cset into public cset leads to public cset itself. |
|
7 Possible variants are: |
|
8 |
|
9 parent: same/different |
|
10 relocation: [no-]conflict |
|
11 merging: [no-]conflict |
|
12 |
|
13 Setup |
|
14 ===== |
|
15 $ cat >> $HGRCPATH <<EOF |
|
16 > [alias] |
|
17 > glog = log -GT "{rev}:{node|short} {desc|firstline}\n {phase} {troubles}\n\n" |
|
18 > [phases] |
|
19 > publish = False |
|
20 > [extensions] |
|
21 > rebase = |
|
22 > EOF |
|
23 $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH |
|
24 |
|
25 Testing when same parent, no conflict: |
|
26 -------------------------------------- |
|
27 |
|
28 $ hg init pubdiv1 |
|
29 $ cd pubdiv1 |
|
30 $ for ch in a b c; do |
|
31 > echo $ch > $ch; |
|
32 > hg ci -Am "added "$ch; |
|
33 > done; |
|
34 adding a |
|
35 adding b |
|
36 adding c |
|
37 |
|
38 $ hg up .^ |
|
39 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
40 $ echo ch > ch |
|
41 $ hg add ch |
|
42 $ hg ci -m "added ch" |
|
43 created new head |
|
44 |
|
45 $ hg up .^ |
|
46 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
47 $ echo ch > ch |
|
48 $ hg add ch |
|
49 $ hg ci -m "added c" |
|
50 created new head |
|
51 |
|
52 $ hg glog |
|
53 @ 4:f7c1071f1e7c added c |
|
54 | draft |
|
55 | |
|
56 | o 3:90522bccf499 added ch |
|
57 |/ draft |
|
58 | |
|
59 | o 2:155349b645be added c |
|
60 |/ draft |
|
61 | |
|
62 o 1:5f6d8a4bf34a added b |
|
63 | draft |
|
64 | |
|
65 o 0:9092f1db7931 added a |
|
66 draft |
|
67 |
|
68 |
|
69 $ hg prune 2 -s 3 |
|
70 1 changesets pruned |
|
71 $ hg prune 2 -s 4 --hidden |
|
72 1 changesets pruned |
|
73 2 new content-divergent changesets |
|
74 $ hg phase --public -r 4 |
|
75 |
|
76 $ hg glog |
|
77 @ 4:f7c1071f1e7c added c |
|
78 | public |
|
79 | |
|
80 | * 3:90522bccf499 added ch |
|
81 |/ draft content-divergent |
|
82 | |
|
83 o 1:5f6d8a4bf34a added b |
|
84 | public |
|
85 | |
|
86 o 0:9092f1db7931 added a |
|
87 public |
|
88 |
|
89 $ hg evolve --content-divergent --any |
|
90 merge:[4] added c |
|
91 with: [3] added ch |
|
92 base: [2] added c |
|
93 merging "other" content-divergent changeset '90522bccf499' |
|
94 0 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
95 content-divergent changesets differ by descriptions only, discarding 90522bccf499 |
|
96 |
|
97 $ hg evolve -l |
|
98 |
|
99 $ hg par |
|
100 changeset: 4:f7c1071f1e7c |
|
101 tag: tip |
|
102 parent: 1:5f6d8a4bf34a |
|
103 user: test |
|
104 date: Thu Jan 01 00:00:00 1970 +0000 |
|
105 summary: added c |
|
106 |
|
107 $ cd .. |
|
108 |
|
109 Testing when different parent, no conflict: |
|
110 ------------------------------------------- |
|
111 |
|
112 $ hg init pubdiv2 |
|
113 $ cd pubdiv2 |
|
114 $ for ch in a b c d; do |
|
115 > echo $ch > $ch; |
|
116 > hg ci -Am "added "$ch; |
|
117 > done; |
|
118 adding a |
|
119 adding b |
|
120 adding c |
|
121 adding d |
|
122 |
|
123 $ hg up 1 |
|
124 0 files updated, 0 files merged, 2 files removed, 0 files unresolved |
|
125 $ echo dh > dh |
|
126 $ hg add dh |
|
127 $ hg ci -m "added dh" |
|
128 created new head |
|
129 |
|
130 $ hg up 2 |
|
131 1 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
132 $ echo dh > dh |
|
133 $ hg add dh |
|
134 $ hg ci -m "added d" |
|
135 created new head |
|
136 |
|
137 $ hg glog |
|
138 @ 5:e800202333a4 added d |
|
139 | draft |
|
140 | |
|
141 | o 4:5acd58ef5066 added dh |
|
142 | | draft |
|
143 | | |
|
144 +---o 3:9150fe93bec6 added d |
|
145 | | draft |
|
146 | | |
|
147 o | 2:155349b645be added c |
|
148 |/ draft |
|
149 | |
|
150 o 1:5f6d8a4bf34a added b |
|
151 | draft |
|
152 | |
|
153 o 0:9092f1db7931 added a |
|
154 draft |
|
155 |
|
156 |
|
157 $ hg prune 3 -s 4 |
|
158 1 changesets pruned |
|
159 $ hg prune 3 -s 5 --hidden |
|
160 1 changesets pruned |
|
161 2 new content-divergent changesets |
|
162 $ hg phase --public -r 5 |
|
163 |
|
164 $ hg glog |
|
165 @ 5:e800202333a4 added d |
|
166 | public |
|
167 | |
|
168 | * 4:5acd58ef5066 added dh |
|
169 | | draft content-divergent |
|
170 | | |
|
171 o | 2:155349b645be added c |
|
172 |/ public |
|
173 | |
|
174 o 1:5f6d8a4bf34a added b |
|
175 | public |
|
176 | |
|
177 o 0:9092f1db7931 added a |
|
178 public |
|
179 |
|
180 $ hg evolve --content-divergent --any |
|
181 merge:[5] added d |
|
182 with: [4] added dh |
|
183 base: [3] added d |
|
184 rebasing "other" content-divergent changeset 5acd58ef5066 on 155349b645be |
|
185 updating to "local" side of the conflict: e800202333a4 |
|
186 merging "other" content-divergent changeset 'ae3429430ef1' |
|
187 0 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
188 content-divergent changesets differ by descriptions only, discarding ae3429430ef1 |
|
189 |
|
190 $ hg evolve -l |
|
191 |
|
192 $ hg par |
|
193 changeset: 5:e800202333a4 |
|
194 tag: tip |
|
195 parent: 2:155349b645be |
|
196 user: test |
|
197 date: Thu Jan 01 00:00:00 1970 +0000 |
|
198 summary: added d |
|
199 |
|
200 $ cd .. |
|
201 |
|
202 Testing when same parent, merging conflict: |
|
203 ------------------------------------------- |
|
204 |
|
205 $ hg init pubdiv3 |
|
206 $ cd pubdiv3 |
|
207 $ for ch in a b c; do |
|
208 > echo $ch > $ch; |
|
209 > hg ci -Am "added "$ch; |
|
210 > done; |
|
211 adding a |
|
212 adding b |
|
213 adding c |
|
214 |
|
215 $ hg up .^ |
|
216 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
217 $ echo chconflict > ch |
|
218 $ hg add ch |
|
219 $ hg ci -m "added ch" |
|
220 created new head |
|
221 |
|
222 $ hg up .^ |
|
223 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
224 $ echo ch > ch |
|
225 $ hg add ch |
|
226 $ hg ci -m "added c" |
|
227 created new head |
|
228 |
|
229 $ hg glog |
|
230 @ 4:f7c1071f1e7c added c |
|
231 | draft |
|
232 | |
|
233 | o 3:229da2719b19 added ch |
|
234 |/ draft |
|
235 | |
|
236 | o 2:155349b645be added c |
|
237 |/ draft |
|
238 | |
|
239 o 1:5f6d8a4bf34a added b |
|
240 | draft |
|
241 | |
|
242 o 0:9092f1db7931 added a |
|
243 draft |
|
244 |
|
245 |
|
246 $ hg prune 2 -s 3 |
|
247 1 changesets pruned |
|
248 $ hg prune 2 -s 4 --hidden |
|
249 1 changesets pruned |
|
250 2 new content-divergent changesets |
|
251 $ hg phase --public -r 4 |
|
252 |
|
253 $ hg glog |
|
254 @ 4:f7c1071f1e7c added c |
|
255 | public |
|
256 | |
|
257 | * 3:229da2719b19 added ch |
|
258 |/ draft content-divergent |
|
259 | |
|
260 o 1:5f6d8a4bf34a added b |
|
261 | public |
|
262 | |
|
263 o 0:9092f1db7931 added a |
|
264 public |
|
265 |
|
266 $ hg evolve --content-divergent --any |
|
267 merge:[4] added c |
|
268 with: [3] added ch |
|
269 base: [2] added c |
|
270 merging "other" content-divergent changeset '229da2719b19' |
|
271 merging ch |
|
272 warning: conflicts while merging ch! (edit, then use 'hg resolve --mark') |
|
273 0 files updated, 0 files merged, 0 files removed, 1 files unresolved |
|
274 fix conflicts and see `hg help evolve.interrupted` |
|
275 [1] |
|
276 |
|
277 $ hg diff |
|
278 diff -r f7c1071f1e7c ch |
|
279 --- a/ch Thu Jan 01 00:00:00 1970 +0000 |
|
280 +++ b/ch Thu Jan 01 00:00:00 1970 +0000 |
|
281 @@ -1,1 +1,5 @@ |
|
282 +<<<<<<< local: f7c1071f1e7c - test: added c |
|
283 ch |
|
284 +======= |
|
285 +chconflict |
|
286 +>>>>>>> other: 229da2719b19 - test: added ch |
|
287 |
|
288 $ echo ch > ch |
|
289 $ hg res -m |
|
290 (no more unresolved files) |
|
291 continue: hg evolve --continue |
|
292 |
|
293 $ hg evolve --continue |
|
294 content-divergent changesets differ by descriptions only, discarding 229da2719b19 |
|
295 working directory is now at f7c1071f1e7c |
|
296 |
|
297 $ hg evolve -l |
|
298 |
|
299 $ hg par |
|
300 changeset: 4:f7c1071f1e7c |
|
301 tag: tip |
|
302 parent: 1:5f6d8a4bf34a |
|
303 user: test |
|
304 date: Thu Jan 01 00:00:00 1970 +0000 |
|
305 summary: added c |
|
306 |
|
307 $ cd .. |
|
308 |
|
309 Testing when different parent, relocation conflict: |
|
310 --------------------------------------------------- |
|
311 |
|
312 $ hg init pubdiv4 |
|
313 $ cd pubdiv4 |
|
314 $ for ch in a b c d; do |
|
315 > echo $ch > $ch; |
|
316 > hg ci -Am "added "$ch; |
|
317 > done; |
|
318 adding a |
|
319 adding b |
|
320 adding c |
|
321 adding d |
|
322 |
|
323 $ hg up 1 |
|
324 0 files updated, 0 files merged, 2 files removed, 0 files unresolved |
|
325 $ echo dh > dh |
|
326 $ echo cc > c |
|
327 $ hg add dh c |
|
328 $ hg ci -m "added dh" |
|
329 created new head |
|
330 |
|
331 $ hg up 2 |
|
332 1 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
333 $ echo dh > dh |
|
334 $ hg add dh |
|
335 $ hg ci -m "added d" |
|
336 created new head |
|
337 |
|
338 $ hg glog |
|
339 @ 5:e800202333a4 added d |
|
340 | draft |
|
341 | |
|
342 | o 4:f89a8e2f86ac added dh |
|
343 | | draft |
|
344 | | |
|
345 +---o 3:9150fe93bec6 added d |
|
346 | | draft |
|
347 | | |
|
348 o | 2:155349b645be added c |
|
349 |/ draft |
|
350 | |
|
351 o 1:5f6d8a4bf34a added b |
|
352 | draft |
|
353 | |
|
354 o 0:9092f1db7931 added a |
|
355 draft |
|
356 |
|
357 |
|
358 $ hg prune 3 -s 4 |
|
359 1 changesets pruned |
|
360 $ hg prune 3 -s 5 --hidden |
|
361 1 changesets pruned |
|
362 2 new content-divergent changesets |
|
363 $ hg phase --public -r 5 |
|
364 |
|
365 $ hg glog |
|
366 @ 5:e800202333a4 added d |
|
367 | public |
|
368 | |
|
369 | * 4:f89a8e2f86ac added dh |
|
370 | | draft content-divergent |
|
371 | | |
|
372 o | 2:155349b645be added c |
|
373 |/ public |
|
374 | |
|
375 o 1:5f6d8a4bf34a added b |
|
376 | public |
|
377 | |
|
378 o 0:9092f1db7931 added a |
|
379 public |
|
380 |
|
381 $ hg evolve --content-divergent --any |
|
382 merge:[5] added d |
|
383 with: [4] added dh |
|
384 base: [3] added d |
|
385 rebasing "other" content-divergent changeset f89a8e2f86ac on 155349b645be |
|
386 merging c |
|
387 warning: conflicts while merging c! (edit, then use 'hg resolve --mark') |
|
388 fix conflicts and see `hg help evolve.interrupted` |
|
389 [1] |
|
390 |
|
391 $ echo c > c |
|
392 $ hg res -m |
|
393 (no more unresolved files) |
|
394 continue: hg evolve --continue |
|
395 |
|
396 $ hg evolve --continue |
|
397 evolving 4:f89a8e2f86ac "added dh" |
|
398 updating to "local" side of the conflict: e800202333a4 |
|
399 merging "other" content-divergent changeset 'bc309da55b88' |
|
400 0 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
401 content-divergent changesets differ by descriptions only, discarding bc309da55b88 |
|
402 working directory is now at e800202333a4 |
|
403 |
|
404 $ hg evolve -l |
|
405 |
|
406 $ hg par |
|
407 changeset: 5:e800202333a4 |
|
408 tag: tip |
|
409 parent: 2:155349b645be |
|
410 user: test |
|
411 date: Thu Jan 01 00:00:00 1970 +0000 |
|
412 summary: added d |
|
413 |
|
414 $ cd .. |
|
415 |
|
416 Testing when different parent, merging conflict: |
|
417 ------------------------------------------------ |
|
418 |
|
419 $ hg init pubdiv5 |
|
420 $ cd pubdiv5 |
|
421 $ for ch in a b c d; do |
|
422 > echo $ch > $ch; |
|
423 > hg ci -Am "added "$ch; |
|
424 > done; |
|
425 adding a |
|
426 adding b |
|
427 adding c |
|
428 adding d |
|
429 |
|
430 $ hg up 1 |
|
431 0 files updated, 0 files merged, 2 files removed, 0 files unresolved |
|
432 $ echo dhconflict > dh |
|
433 $ hg add dh |
|
434 $ hg ci -m "added dh" |
|
435 created new head |
|
436 |
|
437 $ hg up 2 |
|
438 1 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
439 $ echo dh > dh |
|
440 $ hg add dh |
|
441 $ hg ci -m "added d" |
|
442 created new head |
|
443 |
|
444 $ hg glog |
|
445 @ 5:e800202333a4 added d |
|
446 | draft |
|
447 | |
|
448 | o 4:db0b7bba0aae added dh |
|
449 | | draft |
|
450 | | |
|
451 +---o 3:9150fe93bec6 added d |
|
452 | | draft |
|
453 | | |
|
454 o | 2:155349b645be added c |
|
455 |/ draft |
|
456 | |
|
457 o 1:5f6d8a4bf34a added b |
|
458 | draft |
|
459 | |
|
460 o 0:9092f1db7931 added a |
|
461 draft |
|
462 |
|
463 |
|
464 $ hg prune 3 -s 4 |
|
465 1 changesets pruned |
|
466 $ hg prune 3 -s 5 --hidden |
|
467 1 changesets pruned |
|
468 2 new content-divergent changesets |
|
469 $ hg phase --public -r 5 |
|
470 |
|
471 $ hg glog |
|
472 @ 5:e800202333a4 added d |
|
473 | public |
|
474 | |
|
475 | * 4:db0b7bba0aae added dh |
|
476 | | draft content-divergent |
|
477 | | |
|
478 o | 2:155349b645be added c |
|
479 |/ public |
|
480 | |
|
481 o 1:5f6d8a4bf34a added b |
|
482 | public |
|
483 | |
|
484 o 0:9092f1db7931 added a |
|
485 public |
|
486 |
|
487 $ hg evolve --content-divergent --any |
|
488 merge:[5] added d |
|
489 with: [4] added dh |
|
490 base: [3] added d |
|
491 rebasing "other" content-divergent changeset db0b7bba0aae on 155349b645be |
|
492 updating to "local" side of the conflict: e800202333a4 |
|
493 merging "other" content-divergent changeset 'a5bbf2042450' |
|
494 merging dh |
|
495 warning: conflicts while merging dh! (edit, then use 'hg resolve --mark') |
|
496 0 files updated, 0 files merged, 0 files removed, 1 files unresolved |
|
497 fix conflicts and see `hg help evolve.interrupted` |
|
498 [1] |
|
499 |
|
500 $ echo dh > dh |
|
501 $ hg res -m |
|
502 (no more unresolved files) |
|
503 continue: hg evolve --continue |
|
504 |
|
505 $ hg evolve --continue |
|
506 content-divergent changesets differ by descriptions only, discarding a5bbf2042450 |
|
507 working directory is now at e800202333a4 |
|
508 |
|
509 $ hg evolve -l |
|
510 |
|
511 $ hg par |
|
512 changeset: 5:e800202333a4 |
|
513 tag: tip |
|
514 parent: 2:155349b645be |
|
515 user: test |
|
516 date: Thu Jan 01 00:00:00 1970 +0000 |
|
517 summary: added d |
|
518 |
|
519 $ cd .. |
|
520 |
|
521 Testing when different parent, conflict in relocation and merging: |
|
522 ------------------------------------------------------------------ |
|
523 |
|
524 $ hg init pubdiv6 |
|
525 $ cd pubdiv6 |
|
526 $ for ch in a b c d; do |
|
527 > echo $ch > $ch; |
|
528 > hg ci -Am "added "$ch; |
|
529 > done; |
|
530 adding a |
|
531 adding b |
|
532 adding c |
|
533 adding d |
|
534 |
|
535 $ hg up 1 |
|
536 0 files updated, 0 files merged, 2 files removed, 0 files unresolved |
|
537 $ echo dhconflict > dh |
|
538 $ echo cc > c |
|
539 $ hg add dh c |
|
540 $ hg ci -m "added dh" |
|
541 created new head |
|
542 |
|
543 $ hg up 2 |
|
544 1 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
545 $ echo dh > dh |
|
546 $ hg add dh |
|
547 $ hg ci -m "added d" |
|
548 created new head |
|
549 |
|
550 $ hg glog |
|
551 @ 5:e800202333a4 added d |
|
552 | draft |
|
553 | |
|
554 | o 4:67b19bbd770f added dh |
|
555 | | draft |
|
556 | | |
|
557 +---o 3:9150fe93bec6 added d |
|
558 | | draft |
|
559 | | |
|
560 o | 2:155349b645be added c |
|
561 |/ draft |
|
562 | |
|
563 o 1:5f6d8a4bf34a added b |
|
564 | draft |
|
565 | |
|
566 o 0:9092f1db7931 added a |
|
567 draft |
|
568 |
|
569 |
|
570 $ hg prune 3 -s 4 |
|
571 1 changesets pruned |
|
572 $ hg prune 3 -s 5 --hidden |
|
573 1 changesets pruned |
|
574 2 new content-divergent changesets |
|
575 $ hg phase --public -r 5 |
|
576 |
|
577 $ hg glog |
|
578 @ 5:e800202333a4 added d |
|
579 | public |
|
580 | |
|
581 | * 4:67b19bbd770f added dh |
|
582 | | draft content-divergent |
|
583 | | |
|
584 o | 2:155349b645be added c |
|
585 |/ public |
|
586 | |
|
587 o 1:5f6d8a4bf34a added b |
|
588 | public |
|
589 | |
|
590 o 0:9092f1db7931 added a |
|
591 public |
|
592 |
|
593 $ hg evolve --content-divergent --any |
|
594 merge:[5] added d |
|
595 with: [4] added dh |
|
596 base: [3] added d |
|
597 rebasing "other" content-divergent changeset 67b19bbd770f on 155349b645be |
|
598 merging c |
|
599 warning: conflicts while merging c! (edit, then use 'hg resolve --mark') |
|
600 fix conflicts and see `hg help evolve.interrupted` |
|
601 [1] |
|
602 |
|
603 $ echo c > c |
|
604 $ hg res -m |
|
605 (no more unresolved files) |
|
606 continue: hg evolve --continue |
|
607 |
|
608 $ hg evolve --continue |
|
609 evolving 4:67b19bbd770f "added dh" |
|
610 updating to "local" side of the conflict: e800202333a4 |
|
611 merging "other" content-divergent changeset '09054d1f3c97' |
|
612 merging dh |
|
613 warning: conflicts while merging dh! (edit, then use 'hg resolve --mark') |
|
614 0 files updated, 0 files merged, 0 files removed, 1 files unresolved |
|
615 fix conflicts and see `hg help evolve.interrupted` |
|
616 [1] |
|
617 |
|
618 $ echo dh > dh |
|
619 $ hg res -m |
|
620 (no more unresolved files) |
|
621 continue: hg evolve --continue |
|
622 |
|
623 $ hg evolve --continue |
|
624 content-divergent changesets differ by descriptions only, discarding 09054d1f3c97 |
|
625 working directory is now at e800202333a4 |
|
626 |
|
627 $ hg evolve -l |
|
628 |
|
629 $ hg par |
|
630 changeset: 5:e800202333a4 |
|
631 tag: tip |
|
632 parent: 2:155349b645be |
|
633 user: test |
|
634 date: Thu Jan 01 00:00:00 1970 +0000 |
|
635 summary: added d |
|
636 |
|
637 $ cd .. |