Show More
@@ -434,7 +434,11 b' def _combine_changeset_copies(' | |||||
434 | # potential filelog related behavior. |
|
434 | # potential filelog related behavior. | |
435 | assert parent == 2 |
|
435 | assert parent == 2 | |
436 | current_copies = _merge_copies_dict( |
|
436 | current_copies = _merge_copies_dict( | |
437 |
newcopies, |
|
437 | newcopies, | |
|
438 | current_copies, | |||
|
439 | isancestor, | |||
|
440 | changes, | |||
|
441 | current_rev, | |||
438 | ) |
|
442 | ) | |
439 | all_copies[current_rev] = current_copies |
|
443 | all_copies[current_rev] = current_copies | |
440 |
|
444 | |||
@@ -456,7 +460,7 b' PICK_MAJOR = 1' | |||||
456 | PICK_EITHER = 2 |
|
460 | PICK_EITHER = 2 | |
457 |
|
461 | |||
458 |
|
462 | |||
459 | def _merge_copies_dict(minor, major, isancestor, changes): |
|
463 | def _merge_copies_dict(minor, major, isancestor, changes, current_merge): | |
460 | """merge two copies-mapping together, minor and major |
|
464 | """merge two copies-mapping together, minor and major | |
461 |
|
465 | |||
462 | In case of conflict, value from "major" will be picked. |
|
466 | In case of conflict, value from "major" will be picked. | |
@@ -474,8 +478,15 b' def _merge_copies_dict(minor, major, isa' | |||||
474 | if other is None: |
|
478 | if other is None: | |
475 | minor[dest] = value |
|
479 | minor[dest] = value | |
476 | else: |
|
480 | else: | |
477 | pick = _compare_values(changes, isancestor, dest, other, value) |
|
481 | pick, overwrite = _compare_values( | |
478 | if pick == PICK_MAJOR: |
|
482 | changes, isancestor, dest, other, value | |
|
483 | ) | |||
|
484 | if overwrite: | |||
|
485 | if pick == PICK_MAJOR: | |||
|
486 | minor[dest] = (current_merge, value[1]) | |||
|
487 | else: | |||
|
488 | minor[dest] = (current_merge, other[1]) | |||
|
489 | elif pick == PICK_MAJOR: | |||
479 | minor[dest] = value |
|
490 | minor[dest] = value | |
480 | return minor |
|
491 | return minor | |
481 |
|
492 | |||
@@ -483,9 +494,10 b' def _merge_copies_dict(minor, major, isa' | |||||
483 | def _compare_values(changes, isancestor, dest, minor, major): |
|
494 | def _compare_values(changes, isancestor, dest, minor, major): | |
484 | """compare two value within a _merge_copies_dict loop iteration |
|
495 | """compare two value within a _merge_copies_dict loop iteration | |
485 |
|
496 | |||
486 | return pick |
|
497 | return (pick, overwrite). | |
487 |
|
498 | |||
488 | - pick is one of PICK_MINOR, PICK_MAJOR or PICK_EITHER |
|
499 | - pick is one of PICK_MINOR, PICK_MAJOR or PICK_EITHER | |
|
500 | - overwrite is True if pick is a return of an ambiguity that needs resolution. | |||
489 | """ |
|
501 | """ | |
490 | major_tt, major_value = major |
|
502 | major_tt, major_value = major | |
491 | minor_tt, minor_value = minor |
|
503 | minor_tt, minor_value = minor | |
@@ -493,7 +505,7 b' def _compare_values(changes, isancestor,' | |||||
493 | if major_tt == minor_tt: |
|
505 | if major_tt == minor_tt: | |
494 | # if it comes from the same revision it must be the same value |
|
506 | # if it comes from the same revision it must be the same value | |
495 | assert major_value == minor_value |
|
507 | assert major_value == minor_value | |
496 | return PICK_EITHER |
|
508 | return PICK_EITHER, False | |
497 | elif ( |
|
509 | elif ( | |
498 | changes is not None |
|
510 | changes is not None | |
499 | and minor_value is not None |
|
511 | and minor_value is not None | |
@@ -502,7 +514,7 b' def _compare_values(changes, isancestor,' | |||||
502 | ): |
|
514 | ): | |
503 | # In this case, a deletion was reverted, the "alive" value overwrite |
|
515 | # In this case, a deletion was reverted, the "alive" value overwrite | |
504 | # the deleted one. |
|
516 | # the deleted one. | |
505 | return PICK_MINOR |
|
517 | return PICK_MINOR, True | |
506 | elif ( |
|
518 | elif ( | |
507 | changes is not None |
|
519 | changes is not None | |
508 | and major_value is not None |
|
520 | and major_value is not None | |
@@ -511,30 +523,30 b' def _compare_values(changes, isancestor,' | |||||
511 | ): |
|
523 | ): | |
512 | # In this case, a deletion was reverted, the "alive" value overwrite |
|
524 | # In this case, a deletion was reverted, the "alive" value overwrite | |
513 | # the deleted one. |
|
525 | # the deleted one. | |
514 | return PICK_MAJOR |
|
526 | return PICK_MAJOR, True | |
515 | elif isancestor(minor_tt, major_tt): |
|
527 | elif isancestor(minor_tt, major_tt): | |
516 | if changes is not None and dest in changes.merged: |
|
528 | if changes is not None and dest in changes.merged: | |
517 | # change to dest happened on the branch without copy-source change, |
|
529 | # change to dest happened on the branch without copy-source change, | |
518 | # so both source are valid and "major" wins. |
|
530 | # so both source are valid and "major" wins. | |
519 | return PICK_MAJOR |
|
531 | return PICK_MAJOR, True | |
520 | else: |
|
532 | else: | |
521 | return PICK_MAJOR |
|
533 | return PICK_MAJOR, False | |
522 | elif isancestor(major_tt, minor_tt): |
|
534 | elif isancestor(major_tt, minor_tt): | |
523 | if changes is not None and dest in changes.merged: |
|
535 | if changes is not None and dest in changes.merged: | |
524 | # change to dest happened on the branch without copy-source change, |
|
536 | # change to dest happened on the branch without copy-source change, | |
525 | # so both source are valid and "major" wins. |
|
537 | # so both source are valid and "major" wins. | |
526 | return PICK_MAJOR |
|
538 | return PICK_MAJOR, True | |
527 | else: |
|
539 | else: | |
528 | return PICK_MINOR |
|
540 | return PICK_MINOR, False | |
529 | elif minor_value is None: |
|
541 | elif minor_value is None: | |
530 | # in case of conflict, the "alive" side wins. |
|
542 | # in case of conflict, the "alive" side wins. | |
531 | return PICK_MAJOR |
|
543 | return PICK_MAJOR, True | |
532 | elif major_value is None: |
|
544 | elif major_value is None: | |
533 | # in case of conflict, the "alive" side wins. |
|
545 | # in case of conflict, the "alive" side wins. | |
534 | return PICK_MINOR |
|
546 | return PICK_MINOR, True | |
535 | else: |
|
547 | else: | |
536 | # in case of conflict where both side are alive, major wins. |
|
548 | # in case of conflict where both side are alive, major wins. | |
537 | return PICK_MAJOR |
|
549 | return PICK_MAJOR, True | |
538 |
|
550 | |||
539 |
|
551 | |||
540 | def _revinfo_getter_extra(repo): |
|
552 | def _revinfo_getter_extra(repo): |
@@ -568,20 +568,20 b' fn merge_copies_dict<A: Fn(Revision, Rev' | |||||
568 | // This closure exist as temporary help while multiple developper are |
|
568 | // This closure exist as temporary help while multiple developper are | |
569 | // actively working on this code. Feel free to re-inline it once this |
|
569 | // actively working on this code. Feel free to re-inline it once this | |
570 | // code is more settled. |
|
570 | // code is more settled. | |
571 | let mut cmp_value = |
|
571 | let cmp_value = |oracle: &mut AncestorOracle<A>, | |
572 |
|
|
572 | dest: &PathToken, | |
573 | src_minor: &TimeStampedPathCopy, |
|
573 | src_minor: &TimeStampedPathCopy, | |
574 | src_major: &TimeStampedPathCopy| { |
|
574 | src_major: &TimeStampedPathCopy| { | |
575 |
|
|
575 | compare_value( | |
576 |
|
|
576 | path_map, | |
577 |
|
|
577 | current_merge, | |
578 |
|
|
578 | changes, | |
579 |
|
|
579 | oracle, | |
580 |
|
|
580 | dest, | |
581 |
|
|
581 | src_minor, | |
582 |
|
|
582 | src_major, | |
583 |
|
|
583 | ) | |
584 |
|
|
584 | }; | |
585 | if minor.is_empty() { |
|
585 | if minor.is_empty() { | |
586 | major |
|
586 | major | |
587 | } else if major.is_empty() { |
|
587 | } else if major.is_empty() { | |
@@ -605,11 +605,30 b' fn merge_copies_dict<A: Fn(Revision, Rev' | |||||
605 | for (dest, src_minor) in minor { |
|
605 | for (dest, src_minor) in minor { | |
606 | let src_major = major.get(&dest); |
|
606 | let src_major = major.get(&dest); | |
607 | match src_major { |
|
607 | match src_major { | |
608 |
None => |
|
608 | None => { | |
|
609 | major.insert(dest, src_minor); | |||
|
610 | } | |||
609 | Some(src_major) => { |
|
611 | Some(src_major) => { | |
610 | match cmp_value(&dest, &src_minor, src_major) { |
|
612 | let (pick, overwrite) = | |
611 | MergePick::Any | MergePick::Major => None, |
|
613 | cmp_value(oracle, &dest, &src_minor, src_major); | |
612 | MergePick::Minor => major.insert(dest, src_minor), |
|
614 | if overwrite { | |
|
615 | oracle.record_overwrite(src_minor.rev, current_merge); | |||
|
616 | oracle.record_overwrite(src_major.rev, current_merge); | |||
|
617 | let path = match pick { | |||
|
618 | MergePick::Major => src_major.path, | |||
|
619 | MergePick::Minor => src_minor.path, | |||
|
620 | MergePick::Any => src_major.path, | |||
|
621 | }; | |||
|
622 | let src = TimeStampedPathCopy { | |||
|
623 | rev: current_merge, | |||
|
624 | path, | |||
|
625 | }; | |||
|
626 | major.insert(dest, src); | |||
|
627 | } else { | |||
|
628 | match pick { | |||
|
629 | MergePick::Any | MergePick::Major => None, | |||
|
630 | MergePick::Minor => major.insert(dest, src_minor), | |||
|
631 | }; | |||
613 | } |
|
632 | } | |
614 | } |
|
633 | } | |
615 | }; |
|
634 | }; | |
@@ -621,11 +640,30 b' fn merge_copies_dict<A: Fn(Revision, Rev' | |||||
621 | for (dest, src_major) in major { |
|
640 | for (dest, src_major) in major { | |
622 | let src_minor = minor.get(&dest); |
|
641 | let src_minor = minor.get(&dest); | |
623 | match src_minor { |
|
642 | match src_minor { | |
624 |
None => |
|
643 | None => { | |
|
644 | minor.insert(dest, src_major); | |||
|
645 | } | |||
625 | Some(src_minor) => { |
|
646 | Some(src_minor) => { | |
626 | match cmp_value(&dest, src_minor, &src_major) { |
|
647 | let (pick, overwrite) = | |
627 | MergePick::Any | MergePick::Minor => None, |
|
648 | cmp_value(oracle, &dest, &src_major, src_minor); | |
628 | MergePick::Major => minor.insert(dest, src_major), |
|
649 | if overwrite { | |
|
650 | oracle.record_overwrite(src_minor.rev, current_merge); | |||
|
651 | oracle.record_overwrite(src_major.rev, current_merge); | |||
|
652 | let path = match pick { | |||
|
653 | MergePick::Major => src_minor.path, | |||
|
654 | MergePick::Minor => src_major.path, | |||
|
655 | MergePick::Any => src_major.path, | |||
|
656 | }; | |||
|
657 | let src = TimeStampedPathCopy { | |||
|
658 | rev: current_merge, | |||
|
659 | path, | |||
|
660 | }; | |||
|
661 | minor.insert(dest, src); | |||
|
662 | } else { | |||
|
663 | match pick { | |||
|
664 | MergePick::Any | MergePick::Major => None, | |||
|
665 | MergePick::Minor => minor.insert(dest, src_major), | |||
|
666 | }; | |||
629 | } |
|
667 | } | |
630 | } |
|
668 | } | |
631 | }; |
|
669 | }; | |
@@ -663,12 +701,32 b' fn merge_copies_dict<A: Fn(Revision, Rev' | |||||
663 | DiffItem::Update { old, new } => { |
|
701 | DiffItem::Update { old, new } => { | |
664 | let (dest, src_major) = new; |
|
702 | let (dest, src_major) = new; | |
665 | let (_, src_minor) = old; |
|
703 | let (_, src_minor) = old; | |
666 | match cmp_value(dest, src_minor, src_major) { |
|
704 | let (pick, overwrite) = | |
667 |
|
|
705 | cmp_value(oracle, dest, src_minor, src_major); | |
668 | MergePick::Minor => to_major(dest, src_minor), |
|
706 | if overwrite { | |
669 | // If the two entry are identical, no need to do |
|
707 | oracle.record_overwrite(src_minor.rev, current_merge); | |
670 | // anything (but diff should not have yield them) |
|
708 | oracle.record_overwrite(src_major.rev, current_merge); | |
671 | MergePick::Any => unreachable!(), |
|
709 | let path = match pick { | |
|
710 | MergePick::Major => src_major.path, | |||
|
711 | MergePick::Minor => src_minor.path, | |||
|
712 | // If the two entry are identical, no need to do | |||
|
713 | // anything (but diff should not have yield them) | |||
|
714 | MergePick::Any => src_major.path, | |||
|
715 | }; | |||
|
716 | let src = TimeStampedPathCopy { | |||
|
717 | rev: current_merge, | |||
|
718 | path, | |||
|
719 | }; | |||
|
720 | to_minor(dest, &src); | |||
|
721 | to_major(dest, &src); | |||
|
722 | } else { | |||
|
723 | match pick { | |||
|
724 | MergePick::Major => to_minor(dest, src_major), | |||
|
725 | MergePick::Minor => to_major(dest, src_minor), | |||
|
726 | // If the two entry are identical, no need to do | |||
|
727 | // anything (but diff should not have yield them) | |||
|
728 | MergePick::Any => unreachable!(), | |||
|
729 | } | |||
672 | } |
|
730 | } | |
673 | } |
|
731 | } | |
674 | }; |
|
732 | }; | |
@@ -717,39 +775,37 b' fn compare_value<A: Fn(Revision, Revisio' | |||||
717 | dest: &PathToken, |
|
775 | dest: &PathToken, | |
718 | src_minor: &TimeStampedPathCopy, |
|
776 | src_minor: &TimeStampedPathCopy, | |
719 | src_major: &TimeStampedPathCopy, |
|
777 | src_major: &TimeStampedPathCopy, | |
720 | ) -> MergePick { |
|
778 | ) -> (MergePick, bool) { | |
721 | if src_major.rev == current_merge { |
|
779 | if src_major.rev == current_merge { | |
722 | if src_minor.rev == current_merge { |
|
780 | if src_minor.rev == current_merge { | |
723 | if src_major.path.is_none() { |
|
781 | if src_major.path.is_none() { | |
724 | // We cannot get different copy information for both p1 and p2 |
|
782 | // We cannot get different copy information for both p1 and p2 | |
725 | // from the same revision. Unless this was a |
|
783 | // from the same revision. Unless this was a | |
726 | // deletion |
|
784 | // deletion | |
727 | MergePick::Any |
|
785 | (MergePick::Any, false) | |
728 | } else { |
|
786 | } else { | |
729 | unreachable!(); |
|
787 | unreachable!(); | |
730 | } |
|
788 | } | |
731 | } else { |
|
789 | } else { | |
732 | // The last value comes the current merge, this value -will- win |
|
790 | // The last value comes the current merge, this value -will- win | |
733 | // eventually. |
|
791 | // eventually. | |
734 | oracle.record_overwrite(src_minor.rev, src_major.rev); |
|
792 | (MergePick::Major, true) | |
735 | MergePick::Major |
|
|||
736 | } |
|
793 | } | |
737 | } else if src_minor.rev == current_merge { |
|
794 | } else if src_minor.rev == current_merge { | |
738 | // The last value comes the current merge, this value -will- win |
|
795 | // The last value comes the current merge, this value -will- win | |
739 | // eventually. |
|
796 | // eventually. | |
740 | oracle.record_overwrite(src_major.rev, src_minor.rev); |
|
797 | (MergePick::Minor, true) | |
741 | MergePick::Minor |
|
|||
742 | } else if src_major.path == src_minor.path { |
|
798 | } else if src_major.path == src_minor.path { | |
743 | // we have the same value, but from other source; |
|
799 | // we have the same value, but from other source; | |
744 | if src_major.rev == src_minor.rev { |
|
800 | if src_major.rev == src_minor.rev { | |
745 | // If the two entry are identical, they are both valid |
|
801 | // If the two entry are identical, they are both valid | |
746 | MergePick::Any |
|
802 | (MergePick::Any, false) | |
747 | } else if oracle.is_overwrite(src_major.rev, src_minor.rev) { |
|
803 | } else if oracle.is_overwrite(src_major.rev, src_minor.rev) { | |
748 | MergePick::Minor |
|
804 | (MergePick::Minor, false) | |
749 | } else if oracle.is_overwrite(src_minor.rev, src_major.rev) { |
|
805 | } else if oracle.is_overwrite(src_minor.rev, src_major.rev) { | |
750 | MergePick::Major |
|
806 | (MergePick::Major, false) | |
751 | } else { |
|
807 | } else { | |
752 |
MergePick:: |
|
808 | (MergePick::Any, true) | |
753 | } |
|
809 | } | |
754 | } else if src_major.rev == src_minor.rev { |
|
810 | } else if src_major.rev == src_minor.rev { | |
755 | // We cannot get copy information for both p1 and p2 in the |
|
811 | // We cannot get copy information for both p1 and p2 in the | |
@@ -766,7 +822,7 b' fn compare_value<A: Fn(Revision, Revisio' | |||||
766 | { |
|
822 | { | |
767 | // If the file is "deleted" in the major side but was |
|
823 | // If the file is "deleted" in the major side but was | |
768 | // salvaged by the merge, we keep the minor side alive |
|
824 | // salvaged by the merge, we keep the minor side alive | |
769 | MergePick::Minor |
|
825 | (MergePick::Minor, true) | |
770 | } else if src_major.path.is_some() |
|
826 | } else if src_major.path.is_some() | |
771 | && src_minor.path.is_none() |
|
827 | && src_minor.path.is_none() | |
772 | && action == MergeCase::Salvaged |
|
828 | && action == MergeCase::Salvaged | |
@@ -774,7 +830,7 b' fn compare_value<A: Fn(Revision, Revisio' | |||||
774 | // If the file is "deleted" in the minor side but was |
|
830 | // If the file is "deleted" in the minor side but was | |
775 | // salvaged by the merge, unconditionnaly preserve the |
|
831 | // salvaged by the merge, unconditionnaly preserve the | |
776 | // major side. |
|
832 | // major side. | |
777 | MergePick::Major |
|
833 | (MergePick::Major, true) | |
778 | } else if oracle.is_overwrite(src_minor.rev, src_major.rev) { |
|
834 | } else if oracle.is_overwrite(src_minor.rev, src_major.rev) { | |
779 | // The information from the minor version are strictly older than |
|
835 | // The information from the minor version are strictly older than | |
780 | // the major version |
|
836 | // the major version | |
@@ -784,10 +840,10 b' fn compare_value<A: Fn(Revision, Revisio' | |||||
784 | // mean the older copy information are still relevant. |
|
840 | // mean the older copy information are still relevant. | |
785 | // |
|
841 | // | |
786 | // The major side wins such conflict. |
|
842 | // The major side wins such conflict. | |
787 | MergePick::Major |
|
843 | (MergePick::Major, true) | |
788 | } else { |
|
844 | } else { | |
789 | // No activity on the minor branch, pick the newer one. |
|
845 | // No activity on the minor branch, pick the newer one. | |
790 | MergePick::Major |
|
846 | (MergePick::Major, false) | |
791 | } |
|
847 | } | |
792 | } else if oracle.is_overwrite(src_major.rev, src_minor.rev) { |
|
848 | } else if oracle.is_overwrite(src_major.rev, src_minor.rev) { | |
793 | if action == MergeCase::Merged { |
|
849 | if action == MergeCase::Merged { | |
@@ -796,20 +852,20 b' fn compare_value<A: Fn(Revision, Revisio' | |||||
796 | // mean the older copy information are still relevant. |
|
852 | // mean the older copy information are still relevant. | |
797 | // |
|
853 | // | |
798 | // The major side wins such conflict. |
|
854 | // The major side wins such conflict. | |
799 | MergePick::Major |
|
855 | (MergePick::Major, true) | |
800 | } else { |
|
856 | } else { | |
801 | // No activity on the minor branch, pick the newer one. |
|
857 | // No activity on the minor branch, pick the newer one. | |
802 | MergePick::Minor |
|
858 | (MergePick::Minor, false) | |
803 | } |
|
859 | } | |
804 | } else if src_minor.path.is_none() { |
|
860 | } else if src_minor.path.is_none() { | |
805 | // the minor side has no relevant information, pick the alive one |
|
861 | // the minor side has no relevant information, pick the alive one | |
806 | MergePick::Major |
|
862 | (MergePick::Major, true) | |
807 | } else if src_major.path.is_none() { |
|
863 | } else if src_major.path.is_none() { | |
808 | // the major side has no relevant information, pick the alive one |
|
864 | // the major side has no relevant information, pick the alive one | |
809 | MergePick::Minor |
|
865 | (MergePick::Minor, true) | |
810 | } else { |
|
866 | } else { | |
811 | // by default the major side wins |
|
867 | // by default the major side wins | |
812 | MergePick::Major |
|
868 | (MergePick::Major, true) | |
813 | } |
|
869 | } | |
814 | } |
|
870 | } | |
815 | } |
|
871 | } |
@@ -3182,10 +3182,8 b' The result from mAEm is the same for the' | |||||
3182 | $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mK,AEm")' f |
|
3182 | $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mK,AEm")' f | |
3183 | A f |
|
3183 | A f | |
3184 | a (filelog !) |
|
3184 | a (filelog !) | |
3185 |
a ( |
|
3185 | a (sidedata !) | |
3186 |
a ( |
|
3186 | a (upgraded !) | |
3187 | b (known-bad-output sidedata !) |
|
|||
3188 | b (known-bad-output upgraded !) |
|
|||
3189 |
|
3187 | |||
3190 |
|
3188 | |||
3191 | The result from mEAm is the same for the subsequent merge: |
|
3189 | The result from mEAm is the same for the subsequent merge: | |
@@ -3205,10 +3203,8 b' The result from mEAm is the same for the' | |||||
3205 | $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mJ,EAm")' f |
|
3203 | $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mJ,EAm")' f | |
3206 | A f |
|
3204 | A f | |
3207 | a (filelog !) |
|
3205 | a (filelog !) | |
3208 |
b ( |
|
3206 | b (sidedata !) | |
3209 |
b ( |
|
3207 | b (upgraded !) | |
3210 | a (known-bad-output sidedata !) |
|
|||
3211 | a (known-bad-output upgraded !) |
|
|||
3212 |
|
3208 | |||
3213 | Subcase: chaining conflicting rename resolution |
|
3209 | Subcase: chaining conflicting rename resolution | |
3214 | ``````````````````````````````````````````````` |
|
3210 | ``````````````````````````````````````````````` | |
@@ -3235,10 +3231,8 b' The result from mPQm is the same for the' | |||||
3235 | $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mT,PQm")' v |
|
3231 | $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mT,PQm")' v | |
3236 | A v |
|
3232 | A v | |
3237 | r (filelog !) |
|
3233 | r (filelog !) | |
3238 |
p ( |
|
3234 | p (sidedata !) | |
3239 |
p ( |
|
3235 | p (upgraded !) | |
3240 | r (known-bad-output sidedata !) |
|
|||
3241 | r (known-bad-output upgraded !) |
|
|||
3242 |
|
3236 | |||
3243 |
|
3237 | |||
3244 | The result from mQPm is the same for the subsequent merge: |
|
3238 | The result from mQPm is the same for the subsequent merge: | |
@@ -3254,10 +3248,8 b' The result from mQPm is the same for the' | |||||
3254 | $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mS,QPm")' v |
|
3248 | $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mS,QPm")' v | |
3255 | A v |
|
3249 | A v | |
3256 | r (filelog !) |
|
3250 | r (filelog !) | |
3257 |
r ( |
|
3251 | r (sidedata !) | |
3258 |
r ( |
|
3252 | r (upgraded !) | |
3259 | p (known-bad-output sidedata !) |
|
|||
3260 | p (known-bad-output upgraded !) |
|
|||
3261 |
|
3253 | |||
3262 |
|
3254 | |||
3263 | Subcase: chaining salvage information during a merge |
|
3255 | Subcase: chaining salvage information during a merge | |
@@ -3271,9 +3263,7 b' reference output:' | |||||
3271 | $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mCB-revert-m-0")' |
|
3263 | $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mCB-revert-m-0")' | |
3272 | M b |
|
3264 | M b | |
3273 | A d |
|
3265 | A d | |
3274 | a (filelog !) |
|
3266 | a (no-changeset no-compatibility !) | |
3275 | a (sidedata !) |
|
|||
3276 | a (upgraded !) |
|
|||
3277 | A t |
|
3267 | A t | |
3278 | p |
|
3268 | p | |
3279 | R a |
|
3269 | R a | |
@@ -3281,22 +3271,17 b' reference output:' | |||||
3281 | $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mBC-revert-m-0")' |
|
3271 | $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mBC-revert-m-0")' | |
3282 | M b |
|
3272 | M b | |
3283 | A d |
|
3273 | A d | |
3284 | a (filelog !) |
|
3274 | a (no-changeset no-compatibility !) | |
3285 | a (sidedata !) |
|
|||
3286 | a (upgraded !) |
|
|||
3287 | A t |
|
3275 | A t | |
3288 | p |
|
3276 | p | |
3289 | R a |
|
3277 | R a | |
3290 | R p |
|
3278 | R p | |
3291 |
|
3279 | |||
3292 | chained output |
|
3280 | chained output | |
3293 |
|
||||
3294 | $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mBC+revert,Lm")' |
|
3281 | $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mBC+revert,Lm")' | |
3295 | M b |
|
3282 | M b | |
3296 | A d |
|
3283 | A d | |
3297 | a (filelog !) |
|
3284 | a (no-changeset no-compatibility !) | |
3298 | a (missing-correct-output sidedata !) |
|
|||
3299 | a (missing-correct-output upgraded !) |
|
|||
3300 | A t |
|
3285 | A t | |
3301 | p |
|
3286 | p | |
3302 | A unrelated-l |
|
3287 | A unrelated-l | |
@@ -3305,9 +3290,7 b' chained output' | |||||
3305 | $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mCB+revert,Lm")' |
|
3290 | $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mCB+revert,Lm")' | |
3306 | M b |
|
3291 | M b | |
3307 | A d |
|
3292 | A d | |
3308 | a (filelog !) |
|
3293 | a (no-changeset no-compatibility !) | |
3309 | a (missing-correct-output sidedata !) |
|
|||
3310 | a (missing-correct-output upgraded !) |
|
|||
3311 | A t |
|
3294 | A t | |
3312 | p |
|
3295 | p | |
3313 | A unrelated-l |
|
3296 | A unrelated-l | |
@@ -3316,9 +3299,7 b' chained output' | |||||
3316 | $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mL,BC+revertm")' |
|
3299 | $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mL,BC+revertm")' | |
3317 | M b |
|
3300 | M b | |
3318 | A d |
|
3301 | A d | |
3319 | a (filelog !) |
|
3302 | a (no-changeset no-compatibility !) | |
3320 | a (missing-correct-output sidedata !) |
|
|||
3321 | a (missing-correct-output upgraded !) |
|
|||
3322 | A t |
|
3303 | A t | |
3323 | p |
|
3304 | p | |
3324 | A unrelated-l |
|
3305 | A unrelated-l | |
@@ -3327,9 +3308,7 b' chained output' | |||||
3327 | $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mL,CB+revertm")' |
|
3308 | $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mL,CB+revertm")' | |
3328 | M b |
|
3309 | M b | |
3329 | A d |
|
3310 | A d | |
3330 | a (filelog !) |
|
3311 | a (no-changeset no-compatibility !) | |
3331 | a (missing-correct-output sidedata !) |
|
|||
3332 | a (missing-correct-output upgraded !) |
|
|||
3333 | A t |
|
3312 | A t | |
3334 | p |
|
3313 | p | |
3335 | A unrelated-l |
|
3314 | A unrelated-l | |
@@ -3373,18 +3352,10 b' Chained output' | |||||
3373 |
|
3352 | |||
3374 | $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mGF,Nm")' d |
|
3353 | $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mGF,Nm")' d | |
3375 | A d |
|
3354 | A d | |
3376 | a (filelog !) |
|
3355 | a (no-changeset no-compatibility !) | |
3377 | a (missing-correct-output sidedata !) |
|
|||
3378 | a (missing-correct-output upgraded !) |
|
|||
3379 | h (known-bad-output sidedata !) |
|
|||
3380 | h (known-bad-output upgraded !) |
|
|||
3381 | $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mN,GFm")' d |
|
3356 | $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mN,GFm")' d | |
3382 | A d |
|
3357 | A d | |
3383 | a (filelog !) |
|
3358 | a (no-changeset no-compatibility !) | |
3384 | a (missing-correct-output sidedata !) |
|
|||
3385 | a (missing-correct-output upgraded !) |
|
|||
3386 | h (known-bad-output sidedata !) |
|
|||
3387 | h (known-bad-output upgraded !) |
|
|||
3388 |
|
3359 | |||
3389 |
|
3360 | |||
3390 | Subcase: chaining conflicting rename resolution, with extra change during the merge |
|
3361 | Subcase: chaining conflicting rename resolution, with extra change during the merge | |
@@ -3411,11 +3382,7 b' The result from mAEm is the same for the' | |||||
3411 |
|
3382 | |||
3412 | $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mK,AE-change-m")' f |
|
3383 | $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mK,AE-change-m")' f | |
3413 | A f |
|
3384 | A f | |
3414 | a (filelog !) |
|
3385 | a (no-changeset no-compatibility !) | |
3415 | a (missing-correct-output sidedata !) |
|
|||
3416 | a (missing-correct-output upgraded !) |
|
|||
3417 | b (known-bad-output sidedata !) |
|
|||
3418 | b (known-bad-output upgraded !) |
|
|||
3419 |
|
3386 | |||
3420 |
|
3387 | |||
3421 | The result from mEAm is the same for the subsequent merge: |
|
3388 | The result from mEAm is the same for the subsequent merge: | |
@@ -3435,7 +3402,5 b' The result from mEAm is the same for the' | |||||
3435 | $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mJ,EA-change-m")' f |
|
3402 | $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mJ,EA-change-m")' f | |
3436 | A f |
|
3403 | A f | |
3437 | a (filelog !) |
|
3404 | a (filelog !) | |
3438 |
b ( |
|
3405 | b (sidedata !) | |
3439 |
b ( |
|
3406 | b (upgraded !) | |
3440 | a (known-bad-output sidedata !) |
|
|||
3441 | a (known-bad-output upgraded !) |
|
General Comments 0
You need to be logged in to leave comments.
Login now