##// END OF EJS Templates
test-copies: introduce case combining the `p` and `q` branch...
marmoute -
r47306:a1273bea default
parent child Browse files
Show More
@@ -422,6 +422,49 b' Subcase: new copy information on both si'
422 o i-0 initial commit: a b h
422 o i-0 initial commit: a b h
423
423
424
424
425 Subcase: new copy information on both side with an actual merge happening
426 `````````````````````````````````````````````````````````````````````````
427
428 - the "p-" branch renaming 't' to 'v' (through 'u')
429 - the "q-" branch renaming 'r' to 'v' (through 'w')
430
431 $ case_desc="merge with copies info on both side - P side: rename t to v, Q side: r to v, (different content)"
432
433 $ hg up 'desc("p-2")'
434 3 files updated, 0 files merged, 2 files removed, 0 files unresolved
435 $ hg merge 'desc("q-2")' --tool ':union'
436 merging v
437 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
438 (branch merge, don't forget to commit)
439 $ hg ci -m "mPQm-0 $case_desc - one way"
440 $ hg up 'desc("q-2")'
441 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
442 $ hg merge 'desc("p-2")' --tool ':union'
443 merging v
444 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
445 (branch merge, don't forget to commit)
446 $ hg ci -m "mQPm-0 $case_desc - the other way"
447 created new head
448 $ hg log -G --rev '::(desc("mAEm")+desc("mEAm"))'
449 o mEAm-0 merge with copies info on both side - A side: rename d to f, E side: b to f, (same content for f) - the other way
450 |\
451 +---o mAEm-0 merge with copies info on both side - A side: rename d to f, E side: b to f, (same content for f) - one way
452 | |/
453 | o e-2 g -move-> f
454 | |
455 | o e-1 b -move-> g
456 | |
457 o | a-2: e -move-> f
458 | |
459 o | a-1: d -move-> e
460 |/
461 o i-2: c -move-> d, s -move-> t
462 |
463 o i-1: a -move-> c, p -move-> s
464 |
465 o i-0 initial commit: a b h
466
467
425 Subcase: existing copy information overwritten on one branch
468 Subcase: existing copy information overwritten on one branch
426 ````````````````````````````````````````````````````````````
469 ````````````````````````````````````````````````````````````
427
470
@@ -459,8 +502,9 b' Merge:'
459 (branch merge, don't forget to commit)
502 (branch merge, don't forget to commit)
460 $ hg ci -m "mFBm-0 $case_desc - the other way"
503 $ hg ci -m "mFBm-0 $case_desc - the other way"
461 created new head
504 created new head
505 $ hg up null --quiet
462 $ hg log -G --rev '::(desc("mBFm")+desc("mFBm"))'
506 $ hg log -G --rev '::(desc("mBFm")+desc("mFBm"))'
463 @ mFBm-0 simple merge - B side: unrelated change, F side: overwrite d with a copy (from h->i->d) - the other way
507 o mFBm-0 simple merge - B side: unrelated change, F side: overwrite d with a copy (from h->i->d) - the other way
464 |\
508 |\
465 +---o mBFm-0 simple merge - B side: unrelated change, F side: overwrite d with a copy (from h->i->d) - one way
509 +---o mBFm-0 simple merge - B side: unrelated change, F side: overwrite d with a copy (from h->i->d) - one way
466 | |/
510 | |/
@@ -491,8 +535,7 b' consider history and rename on both bran'
491 $ case_desc="actual content merge, copies on one side - D side: delete and re-add (different content), G side: update content"
535 $ case_desc="actual content merge, copies on one side - D side: delete and re-add (different content), G side: update content"
492
536
493 $ hg up 'desc("i-2")'
537 $ hg up 'desc("i-2")'
494 3 files updated, 0 files merged, 0 files removed, 0 files unresolved (no-changeset !)
538 6 files updated, 0 files merged, 0 files removed, 0 files unresolved
495 2 files updated, 0 files merged, 0 files removed, 0 files unresolved (changeset !)
496 $ echo "some update" >> d
539 $ echo "some update" >> d
497 $ hg commit -m "g-1: update d"
540 $ hg commit -m "g-1: update d"
498 created new head
541 created new head
@@ -1229,6 +1272,8 b' Summary of all created cases'
1229 mL,CB+revertm: chained merges (salvaged -> simple) - same content (when the file exists)
1272 mL,CB+revertm: chained merges (salvaged -> simple) - same content (when the file exists)
1230 mN,GFm: chained merges (copy-overwrite -> simple) - same content
1273 mN,GFm: chained merges (copy-overwrite -> simple) - same content
1231 mO,FGm: chained merges (copy-overwrite -> simple) - same content
1274 mO,FGm: chained merges (copy-overwrite -> simple) - same content
1275 mPQm-0 merge with copies info on both side - P side: rename t to v, Q side: r to v, (different content) - one way
1276 mQPm-0 merge with copies info on both side - P side: rename t to v, Q side: r to v, (different content) - the other way
1232 n-1: unrelated changes (based on the "f" series of changes)
1277 n-1: unrelated changes (based on the "f" series of changes)
1233 o-1: unrelated changes (based on "g" changes)
1278 o-1: unrelated changes (based on "g" changes)
1234 p-1: t -move-> u
1279 p-1: t -move-> u
@@ -1433,6 +1478,16 b' We upgrade a repository that is not usin'
1433 entry-0014 size 14
1478 entry-0014 size 14
1434 '\x00\x00\x00\x01\x08\x00\x00\x00\x01\x00\x00\x00\x00f'
1479 '\x00\x00\x00\x01\x08\x00\x00\x00\x01\x00\x00\x00\x00f'
1435 merged : f, ;
1480 merged : f, ;
1481 ##### revision "mPQm-0 merge with copies info on both side - P side" #####
1482 1 sidedata entries
1483 entry-0014 size 14
1484 '\x00\x00\x00\x01\x08\x00\x00\x00\x01\x00\x00\x00\x00v'
1485 merged : v, ;
1486 ##### revision "mQPm-0 merge with copies info on both side - P side" #####
1487 1 sidedata entries
1488 entry-0014 size 14
1489 '\x00\x00\x00\x01\x08\x00\x00\x00\x01\x00\x00\x00\x00v'
1490 merged : v, ;
1436 ##### revision "f-1" #####
1491 ##### revision "f-1" #####
1437 1 sidedata entries
1492 1 sidedata entries
1438 entry-0014 size 24
1493 entry-0014 size 24
@@ -2364,6 +2419,134 b' BROKEN: `hg log --follow <file>` relies '
2364 ~
2419 ~
2365 #endif
2420 #endif
2366
2421
2422 Subcase: new copy information on both side with an actual merge happening
2423 `````````````````````````````````````````````````````````````````````````
2424
2425 - the "p-" branch renaming 't' to 'v' (through 'u')
2426 - the "q-" branch renaming 'r' to 'v' (through 'w')
2427
2428
2429 $ hg log -G --rev '::(desc("mPQm")+desc("mQPm"))'
2430 o mQPm-0 merge with copies info on both side - P side: rename t to v, Q side: r to v, (different content) - the other way
2431 |\
2432 +---o mPQm-0 merge with copies info on both side - P side: rename t to v, Q side: r to v, (different content) - one way
2433 | |/
2434 | o q-2 w -move-> v
2435 | |
2436 | o q-1 r -move-> w
2437 | |
2438 o | p-2: u -move-> v
2439 | |
2440 o | p-1: t -move-> u
2441 |/
2442 o i-2: c -move-> d, s -move-> t
2443 |
2444 o i-1: a -move-> c, p -move-> s
2445 |
2446 o i-0 initial commit: a b h
2447
2448
2449 #if no-changeset
2450 $ hg manifest --debug --rev 'desc("mPQm-0")' | grep '644 v'
2451 0946c662ef16e4e67397fd717389eb6693d41749 644 v
2452 $ hg manifest --debug --rev 'desc("mQPm-0")' | grep '644 v'
2453 0db3aad7fcc1ec27fab57060e327b9e864ea0cc9 644 v
2454 $ hg manifest --debug --rev 'desc("p-2")' | grep '644 v'
2455 3f91841cd75cadc9a1f1b4e7c1aa6d411f76032e 644 v
2456 $ hg manifest --debug --rev 'desc("q-2")' | grep '644 v'
2457 c43c088b811fd27983c0a9aadf44f3343cd4cd7e 644 v
2458 $ hg debugindex v | ../no-linkrev
2459 rev linkrev nodeid p1 p2
2460 0 * 3f91841cd75c 000000000000 000000000000
2461 1 * c43c088b811f 000000000000 000000000000
2462 2 * 0946c662ef16 3f91841cd75c c43c088b811f
2463 3 * 0db3aad7fcc1 c43c088b811f 3f91841cd75c
2464 #else
2465 $ hg manifest --debug --rev 'desc("mPQm-0")' | grep '644 v'
2466 65fde9f6e4d4da23b3f610e07b53673ea9541d75 644 v
2467 $ hg manifest --debug --rev 'desc("mQPm-0")' | grep '644 v'
2468 a098dda6413aecf154eefc976afc38b295acb7e5 644 v
2469 $ hg manifest --debug --rev 'desc("p-2")' | grep '644 v'
2470 5aed6a8dbff0301328c08360d24354d3d064cf0d 644 v
2471 $ hg manifest --debug --rev 'desc("q-2")' | grep '644 v'
2472 a38b2fa170219750dac9bc7d19df831f213ba708 644 v
2473 $ hg debugindex v | ../no-linkrev
2474 rev linkrev nodeid p1 p2
2475 0 * 5aed6a8dbff0 000000000000 000000000000
2476 1 * a38b2fa17021 000000000000 000000000000
2477 2 * 65fde9f6e4d4 5aed6a8dbff0 a38b2fa17021
2478 3 * a098dda6413a a38b2fa17021 5aed6a8dbff0
2479 #endif
2480
2481 # Here the filelog based implementation is not looking at the rename
2482 # information (because the file exist on both side). However the changelog
2483 # based on works fine. We have different output.
2484
2485 $ hg status --copies --rev 'desc("p-2")' --rev 'desc("mPQm-0")'
2486 M v
2487 r (no-filelog !)
2488 R r
2489 $ hg status --copies --rev 'desc("p-2")' --rev 'desc("mQPm-0")'
2490 M v
2491 r (no-filelog !)
2492 R r
2493 $ hg status --copies --rev 'desc("q-2")' --rev 'desc("mPQm-0")'
2494 M v
2495 t (no-filelog !)
2496 R t
2497 $ hg status --copies --rev 'desc("q-2")' --rev 'desc("mQPm-0")'
2498 M v
2499 t (no-filelog !)
2500 R t
2501 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("p-2")'
2502 A v
2503 t
2504 R t
2505 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("q-2")'
2506 A v
2507 r
2508 R r
2509
2510 # From here, we run status against revision where both source file exists.
2511 #
2512 # The filelog based implementation picks an arbitrary side based on revision
2513 # numbers. So the same side "wins" whatever the parents order is. This is
2514 # sub-optimal because depending on revision numbers means the result can be
2515 # different from one repository to the next.
2516 #
2517 # The changeset based algorithm use the parent order to break tie on conflicting
2518 # information and will have a different order depending on who is p1 and p2.
2519 # That order is stable accross repositories. (data from p1 prevails)
2520
2521 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mPQm-0")'
2522 A v
2523 t
2524 R r
2525 R t
2526 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mQPm-0")'
2527 A v
2528 t (filelog !)
2529 r (no-filelog !)
2530 R r
2531 R t
2532 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mPQm-0")'
2533 A d
2534 a
2535 A v
2536 r (filelog !)
2537 p (no-filelog !)
2538 R a
2539 R p
2540 R r
2541 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mQPm-0")'
2542 A d
2543 a
2544 A v
2545 r
2546 R a
2547 R p
2548 R r
2549
2367
2550
2368 Comparing with merging with a deletion (and keeping the file)
2551 Comparing with merging with a deletion (and keeping the file)
2369 -------------------------------------------------------------
2552 -------------------------------------------------------------
General Comments 0
You need to be logged in to leave comments. Login now