432 > |
429 > |
433 > # content of the file in "base" and "parent" |
430 > # content of the file in "base" and "parent" |
434 > # None means no file at all |
431 > # None means no file at all |
435 > ctxcontent = { |
432 > ctxcontent = { |
436 > # clean: no change from base to parent |
433 > # clean: no change from base to parent |
437 > 'clean': ['base', 'base'], |
434 > 'clean': ['content1', 'content1'], |
438 > # modified: file content change from base to parent |
435 > # modified: file content change from base to parent |
439 > 'modified': ['base', 'parent'], |
436 > 'modified': ['content1', 'content2'], |
440 > # added: file is missing from base and added in parent |
437 > # added: file is missing from base and added in parent |
441 > 'added': [None, 'parent'], |
438 > 'added': [None, 'content2'], |
442 > # removed: file exist in base but is removed from parent |
439 > # removed: file exist in base but is removed from parent |
443 > 'removed': ['base', None], |
440 > 'removed': ['content1', None], |
444 > # file exist neither in base not in parent |
441 > # file exist neither in base not in parent |
445 > 'missing': [None, None], |
442 > 'missing': [None, None], |
446 > } |
443 > } |
447 > |
444 > |
448 > # content of file in working copy |
445 > # content of file in working copy |
449 > wccontent = { |
446 > wccontent = { |
450 > # clean: wc content is the same as parent |
447 > # clean: wc content is the same as parent |
451 > 'clean': lambda cc: cc[1], |
448 > 'clean': (True, lambda cc: cc[1]), |
452 > # revert: wc content is the same as base |
449 > # revert: wc content is the same as base |
453 > 'revert': lambda cc: cc[0], |
450 > 'revert': (True, lambda cc: cc[0]), |
454 > # wc: file exist with a content different from base and parent |
451 > # wc: file exist with a content different from base and parent |
455 > 'wc': lambda cc: 'wc', |
452 > 'wc': (True, lambda cc: 'content3'), |
456 > # deleted: file is recorded as tracked but missing |
453 > # deleted: file is recorded as tracked but missing |
457 > # rely on file deletion outside of this script |
454 > # rely on file deletion outside of this script |
458 > 'deleted': lambda cc:'TOBEDELETED', |
455 > 'deleted': (True, lambda cc:'TOBEDELETED'), |
459 > } |
456 > } |
460 > # untracked-X is a version of X where the file is not tracked (? unknown) |
457 > # untracked-X is a version of X where the file is not tracked (? unknown) |
461 > wccontent['untracked-clean'] = wccontent['clean'] |
458 > wccontent['untracked-clean'] = (False, wccontent['clean'][1]) |
462 > wccontent['untracked-deleted'] = wccontent['deleted'] |
459 > wccontent['untracked-deleted'] = (False, wccontent['deleted'][1]) |
463 > wccontent['untracked-revert'] = wccontent['revert'] |
460 > wccontent['untracked-revert'] = (False, wccontent['revert'][1]) |
464 > wccontent['untracked-wc'] = wccontent['wc'] |
461 > wccontent['untracked-wc'] = (False, wccontent['wc'][1]) |
465 > |
462 > |
466 > # build the combination of possible states |
463 > # build the combination of possible states |
467 > combination = [] |
464 > combination = [] |
468 > for ctxkey, ctxvalue in sorted(ctxcontent.iteritems()): |
465 > for ctxkey, ctxvalue in sorted(ctxcontent.iteritems()): |
469 > for wckey in sorted(wccontent): |
466 > for wckey, (tracked, wcfunc) in sorted(wccontent.iteritems()): |
470 > base, parent = ctxvalue |
467 > base, parent = ctxvalue |
471 > if (base == parent and 'revert' in wckey): |
468 > if (base == parent and 'revert' in wckey): |
472 > continue |
469 > continue |
473 > if not base and 'revert' in wckey: |
470 > if not base and 'revert' in wckey: |
474 > continue |
471 > continue |
475 > if not parent and 'deleted' in wckey: |
472 > if not parent and 'deleted' in wckey: |
476 > continue |
473 > continue |
477 > filename = "%s_%s" % (ctxkey, wckey) |
474 > def statestring(content): |
478 > combination.append((filename, base, parent, |
475 > return content in (None, 'TOBEDELETED') and 'missing' or content |
479 > wccontent[wckey](ctxvalue))) |
476 > wcc = wcfunc(ctxvalue) |
|
477 > trackedstring = tracked and 'tracked' or 'untracked' |
|
478 > filename = "%s_%s_%s-%s" % (statestring(base), |
|
479 > statestring(parent), |
|
480 > statestring(wcc), |
|
481 > trackedstring) |
|
482 > combination.append((filename, base, parent, wcc)) |
480 > |
483 > |
481 > # retrieve the state we must generate |
484 > # retrieve the state we must generate |
482 > target = sys.argv[1] |
485 > target = sys.argv[1] |
483 > |
486 > |
484 > # compute file content |
487 > # compute file content |
563 |
566 |
564 Generate base changeset |
567 Generate base changeset |
565 |
568 |
566 $ python ../gen-revert-cases.py base |
569 $ python ../gen-revert-cases.py base |
567 $ hg addremove --similarity 0 |
570 $ hg addremove --similarity 0 |
568 adding clean_clean |
571 adding content1_content1_content1-tracked |
569 adding clean_deleted |
572 adding content1_content1_content1-untracked |
570 adding clean_untracked-clean |
573 adding content1_content1_content3-tracked |
571 adding clean_untracked-deleted |
574 adding content1_content1_content3-untracked |
572 adding clean_untracked-wc |
575 adding content1_content1_missing-tracked |
573 adding clean_wc |
576 adding content1_content1_missing-untracked |
574 adding modified_clean |
577 adding content1_content2_content1-tracked |
575 adding modified_deleted |
578 adding content1_content2_content1-untracked |
576 adding modified_revert |
579 adding content1_content2_content2-tracked |
577 adding modified_untracked-clean |
580 adding content1_content2_content2-untracked |
578 adding modified_untracked-deleted |
581 adding content1_content2_content3-tracked |
579 adding modified_untracked-revert |
582 adding content1_content2_content3-untracked |
580 adding modified_untracked-wc |
583 adding content1_content2_missing-tracked |
581 adding modified_wc |
584 adding content1_content2_missing-untracked |
582 adding removed_clean |
585 adding content1_missing_content1-tracked |
583 adding removed_revert |
586 adding content1_missing_content1-untracked |
584 adding removed_untracked-clean |
587 adding content1_missing_content3-tracked |
585 adding removed_untracked-revert |
588 adding content1_missing_content3-untracked |
586 adding removed_untracked-wc |
589 adding content1_missing_missing-tracked |
587 adding removed_wc |
590 adding content1_missing_missing-untracked |
588 $ hg status |
591 $ hg status |
589 A clean_clean |
592 A content1_content1_content1-tracked |
590 A clean_deleted |
593 A content1_content1_content1-untracked |
591 A clean_untracked-clean |
594 A content1_content1_content3-tracked |
592 A clean_untracked-deleted |
595 A content1_content1_content3-untracked |
593 A clean_untracked-wc |
596 A content1_content1_missing-tracked |
594 A clean_wc |
597 A content1_content1_missing-untracked |
595 A modified_clean |
598 A content1_content2_content1-tracked |
596 A modified_deleted |
599 A content1_content2_content1-untracked |
597 A modified_revert |
600 A content1_content2_content2-tracked |
598 A modified_untracked-clean |
601 A content1_content2_content2-untracked |
599 A modified_untracked-deleted |
602 A content1_content2_content3-tracked |
600 A modified_untracked-revert |
603 A content1_content2_content3-untracked |
601 A modified_untracked-wc |
604 A content1_content2_missing-tracked |
602 A modified_wc |
605 A content1_content2_missing-untracked |
603 A removed_clean |
606 A content1_missing_content1-tracked |
604 A removed_revert |
607 A content1_missing_content1-untracked |
605 A removed_untracked-clean |
608 A content1_missing_content3-tracked |
606 A removed_untracked-revert |
609 A content1_missing_content3-untracked |
607 A removed_untracked-wc |
610 A content1_missing_missing-tracked |
608 A removed_wc |
611 A content1_missing_missing-untracked |
609 $ hg commit -m 'base' |
612 $ hg commit -m 'base' |
610 |
613 |
611 (create a simple text version of the content) |
614 (create a simple text version of the content) |
612 |
615 |
613 $ python ../dircontent.py > ../content-base.txt |
616 $ python ../dircontent.py > ../content-base.txt |
614 $ cat ../content-base.txt |
617 $ cat ../content-base.txt |
615 base clean_clean |
618 content1 content1_content1_content1-tracked |
616 base clean_deleted |
619 content1 content1_content1_content1-untracked |
617 base clean_untracked-clean |
620 content1 content1_content1_content3-tracked |
618 base clean_untracked-deleted |
621 content1 content1_content1_content3-untracked |
619 base clean_untracked-wc |
622 content1 content1_content1_missing-tracked |
620 base clean_wc |
623 content1 content1_content1_missing-untracked |
621 base modified_clean |
624 content1 content1_content2_content1-tracked |
622 base modified_deleted |
625 content1 content1_content2_content1-untracked |
623 base modified_revert |
626 content1 content1_content2_content2-tracked |
624 base modified_untracked-clean |
627 content1 content1_content2_content2-untracked |
625 base modified_untracked-deleted |
628 content1 content1_content2_content3-tracked |
626 base modified_untracked-revert |
629 content1 content1_content2_content3-untracked |
627 base modified_untracked-wc |
630 content1 content1_content2_missing-tracked |
628 base modified_wc |
631 content1 content1_content2_missing-untracked |
629 base removed_clean |
632 content1 content1_missing_content1-tracked |
630 base removed_revert |
633 content1 content1_missing_content1-untracked |
631 base removed_untracked-clean |
634 content1 content1_missing_content3-tracked |
632 base removed_untracked-revert |
635 content1 content1_missing_content3-untracked |
633 base removed_untracked-wc |
636 content1 content1_missing_missing-tracked |
634 base removed_wc |
637 content1 content1_missing_missing-untracked |
635 |
638 |
636 Create parent changeset |
639 Create parent changeset |
637 |
640 |
638 $ python ../gen-revert-cases.py parent |
641 $ python ../gen-revert-cases.py parent |
639 $ hg addremove --similarity 0 |
642 $ hg addremove --similarity 0 |
640 adding added_clean |
643 removing content1_missing_content1-tracked |
641 adding added_deleted |
644 removing content1_missing_content1-untracked |
642 adding added_untracked-clean |
645 removing content1_missing_content3-tracked |
643 adding added_untracked-deleted |
646 removing content1_missing_content3-untracked |
644 adding added_untracked-wc |
647 removing content1_missing_missing-tracked |
645 adding added_wc |
648 removing content1_missing_missing-untracked |
646 removing removed_clean |
649 adding missing_content2_content2-tracked |
647 removing removed_revert |
650 adding missing_content2_content2-untracked |
648 removing removed_untracked-clean |
651 adding missing_content2_content3-tracked |
649 removing removed_untracked-revert |
652 adding missing_content2_content3-untracked |
650 removing removed_untracked-wc |
653 adding missing_content2_missing-tracked |
651 removing removed_wc |
654 adding missing_content2_missing-untracked |
652 $ hg status |
655 $ hg status |
653 M modified_clean |
656 M content1_content2_content1-tracked |
654 M modified_deleted |
657 M content1_content2_content1-untracked |
655 M modified_revert |
658 M content1_content2_content2-tracked |
656 M modified_untracked-clean |
659 M content1_content2_content2-untracked |
657 M modified_untracked-deleted |
660 M content1_content2_content3-tracked |
658 M modified_untracked-revert |
661 M content1_content2_content3-untracked |
659 M modified_untracked-wc |
662 M content1_content2_missing-tracked |
660 M modified_wc |
663 M content1_content2_missing-untracked |
661 A added_clean |
664 A missing_content2_content2-tracked |
662 A added_deleted |
665 A missing_content2_content2-untracked |
663 A added_untracked-clean |
666 A missing_content2_content3-tracked |
664 A added_untracked-deleted |
667 A missing_content2_content3-untracked |
665 A added_untracked-wc |
668 A missing_content2_missing-tracked |
666 A added_wc |
669 A missing_content2_missing-untracked |
667 R removed_clean |
670 R content1_missing_content1-tracked |
668 R removed_revert |
671 R content1_missing_content1-untracked |
669 R removed_untracked-clean |
672 R content1_missing_content3-tracked |
670 R removed_untracked-revert |
673 R content1_missing_content3-untracked |
671 R removed_untracked-wc |
674 R content1_missing_missing-tracked |
672 R removed_wc |
675 R content1_missing_missing-untracked |
673 $ hg commit -m 'parent' |
676 $ hg commit -m 'parent' |
674 |
677 |
675 (create a simple text version of the content) |
678 (create a simple text version of the content) |
676 |
679 |
677 $ python ../dircontent.py > ../content-parent.txt |
680 $ python ../dircontent.py > ../content-parent.txt |
678 $ cat ../content-parent.txt |
681 $ cat ../content-parent.txt |
679 parent added_clean |
682 content1 content1_content1_content1-tracked |
680 parent added_deleted |
683 content1 content1_content1_content1-untracked |
681 parent added_untracked-clean |
684 content1 content1_content1_content3-tracked |
682 parent added_untracked-deleted |
685 content1 content1_content1_content3-untracked |
683 parent added_untracked-wc |
686 content1 content1_content1_missing-tracked |
684 parent added_wc |
687 content1 content1_content1_missing-untracked |
685 base clean_clean |
688 content2 content1_content2_content1-tracked |
686 base clean_deleted |
689 content2 content1_content2_content1-untracked |
687 base clean_untracked-clean |
690 content2 content1_content2_content2-tracked |
688 base clean_untracked-deleted |
691 content2 content1_content2_content2-untracked |
689 base clean_untracked-wc |
692 content2 content1_content2_content3-tracked |
690 base clean_wc |
693 content2 content1_content2_content3-untracked |
691 parent modified_clean |
694 content2 content1_content2_missing-tracked |
692 parent modified_deleted |
695 content2 content1_content2_missing-untracked |
693 parent modified_revert |
696 content2 missing_content2_content2-tracked |
694 parent modified_untracked-clean |
697 content2 missing_content2_content2-untracked |
695 parent modified_untracked-deleted |
698 content2 missing_content2_content3-tracked |
696 parent modified_untracked-revert |
699 content2 missing_content2_content3-untracked |
697 parent modified_untracked-wc |
700 content2 missing_content2_missing-tracked |
698 parent modified_wc |
701 content2 missing_content2_missing-untracked |
699 |
702 |
700 Setup working directory |
703 Setup working directory |
701 |
704 |
702 $ python ../gen-revert-cases.py wc |
705 $ python ../gen-revert-cases.py wc |
703 $ hg addremove --similarity 0 |
706 $ hg addremove --similarity 0 |
704 adding missing_untracked-wc |
707 adding content1_missing_content1-tracked |
705 adding missing_wc |
708 adding content1_missing_content1-untracked |
706 adding removed_revert |
709 adding content1_missing_content3-tracked |
707 adding removed_untracked-revert |
710 adding content1_missing_content3-untracked |
708 adding removed_untracked-wc |
711 adding missing_missing_content3-tracked |
709 adding removed_wc |
712 adding missing_missing_content3-untracked |
710 $ hg forget *untracked* |
713 $ hg forget *_*_*-untracked |
711 $ rm *deleted* |
714 $ rm *_*_missing-* |
712 $ hg status |
715 $ hg status |
713 M added_wc |
716 M content1_content1_content3-tracked |
714 M clean_wc |
717 M content1_content2_content1-tracked |
715 M modified_revert |
718 M content1_content2_content3-tracked |
716 M modified_wc |
719 M missing_content2_content3-tracked |
717 A missing_wc |
720 A content1_missing_content1-tracked |
718 A removed_revert |
721 A content1_missing_content3-tracked |
719 A removed_wc |
722 A missing_missing_content3-tracked |
720 R added_untracked-clean |
723 R content1_content1_content1-untracked |
721 R added_untracked-deleted |
724 R content1_content1_content3-untracked |
722 R added_untracked-wc |
725 R content1_content1_missing-untracked |
723 R clean_untracked-clean |
726 R content1_content2_content1-untracked |
724 R clean_untracked-deleted |
727 R content1_content2_content2-untracked |
725 R clean_untracked-wc |
728 R content1_content2_content3-untracked |
726 R modified_untracked-clean |
729 R content1_content2_missing-untracked |
727 R modified_untracked-deleted |
730 R missing_content2_content2-untracked |
728 R modified_untracked-revert |
731 R missing_content2_content3-untracked |
729 R modified_untracked-wc |
732 R missing_content2_missing-untracked |
730 ! added_deleted |
733 ! content1_content1_missing-tracked |
731 ! clean_deleted |
734 ! content1_content2_missing-tracked |
732 ! modified_deleted |
735 ! missing_content2_missing-tracked |
733 ? missing_untracked-wc |
736 ? content1_missing_content1-untracked |
734 ? removed_untracked-revert |
737 ? content1_missing_content3-untracked |
735 ? removed_untracked-wc |
738 ? missing_missing_content3-untracked |
736 |
739 |
737 $ hg status --rev 'desc("base")' |
740 $ hg status --rev 'desc("base")' |
738 M clean_wc |
741 M content1_content1_content3-tracked |
739 M modified_clean |
742 M content1_content2_content2-tracked |
740 M modified_wc |
743 M content1_content2_content3-tracked |
741 M removed_wc |
744 M content1_missing_content3-tracked |
742 A added_clean |
745 A missing_content2_content2-tracked |
743 A added_wc |
746 A missing_content2_content3-tracked |
744 A missing_wc |
747 A missing_missing_content3-tracked |
745 R clean_untracked-clean |
748 R content1_content1_content1-untracked |
746 R clean_untracked-deleted |
749 R content1_content1_content3-untracked |
747 R clean_untracked-wc |
750 R content1_content1_missing-untracked |
748 R modified_untracked-clean |
751 R content1_content2_content1-untracked |
749 R modified_untracked-deleted |
752 R content1_content2_content2-untracked |
750 R modified_untracked-revert |
753 R content1_content2_content3-untracked |
751 R modified_untracked-wc |
754 R content1_content2_missing-untracked |
752 R removed_clean |
755 R content1_missing_content1-untracked |
753 R removed_untracked-clean |
756 R content1_missing_content3-untracked |
754 R removed_untracked-revert |
757 R content1_missing_missing-tracked |
755 R removed_untracked-wc |
758 R content1_missing_missing-untracked |
756 ! added_deleted |
759 ! content1_content1_missing-tracked |
757 ! clean_deleted |
760 ! content1_content2_missing-tracked |
758 ! modified_deleted |
761 ! missing_content2_missing-tracked |
759 ? missing_untracked-wc |
762 ? missing_missing_content3-untracked |
760 |
763 |
761 (create a simple text version of the content) |
764 (create a simple text version of the content) |
762 |
765 |
763 $ python ../dircontent.py > ../content-wc.txt |
766 $ python ../dircontent.py > ../content-wc.txt |
764 $ cat ../content-wc.txt |
767 $ cat ../content-wc.txt |
765 parent added_clean |
768 content1 content1_content1_content1-tracked |
766 parent added_untracked-clean |
769 content1 content1_content1_content1-untracked |
767 wc added_untracked-wc |
770 content3 content1_content1_content3-tracked |
768 wc added_wc |
771 content3 content1_content1_content3-untracked |
769 base clean_clean |
772 content1 content1_content2_content1-tracked |
770 base clean_untracked-clean |
773 content1 content1_content2_content1-untracked |
771 wc clean_untracked-wc |
774 content2 content1_content2_content2-tracked |
772 wc clean_wc |
775 content2 content1_content2_content2-untracked |
773 wc missing_untracked-wc |
776 content3 content1_content2_content3-tracked |
774 wc missing_wc |
777 content3 content1_content2_content3-untracked |
775 parent modified_clean |
778 content1 content1_missing_content1-tracked |
776 base modified_revert |
779 content1 content1_missing_content1-untracked |
777 parent modified_untracked-clean |
780 content3 content1_missing_content3-tracked |
778 base modified_untracked-revert |
781 content3 content1_missing_content3-untracked |
779 wc modified_untracked-wc |
782 content2 missing_content2_content2-tracked |
780 wc modified_wc |
783 content2 missing_content2_content2-untracked |
781 base removed_revert |
784 content3 missing_content2_content3-tracked |
782 base removed_untracked-revert |
785 content3 missing_content2_content3-untracked |
783 wc removed_untracked-wc |
786 content3 missing_missing_content3-tracked |
784 wc removed_wc |
787 content3 missing_missing_content3-untracked |
785 |
788 |
786 $ cd .. |
789 $ cd .. |
787 |
790 |
788 Test revert --all to parent content |
791 Test revert --all to parent content |
789 ----------------------------------- |
792 ----------------------------------- |
794 $ cd revert-parent-all |
797 $ cd revert-parent-all |
795 |
798 |
796 check revert output |
799 check revert output |
797 |
800 |
798 $ hg revert --all |
801 $ hg revert --all |
799 reverting added_deleted |
802 undeleting content1_content1_content1-untracked |
800 undeleting added_untracked-clean |
803 reverting content1_content1_content3-tracked |
801 undeleting added_untracked-deleted |
804 undeleting content1_content1_content3-untracked |
802 undeleting added_untracked-wc |
805 reverting content1_content1_missing-tracked |
803 reverting added_wc |
806 undeleting content1_content1_missing-untracked |
804 reverting clean_deleted |
807 reverting content1_content2_content1-tracked |
805 undeleting clean_untracked-clean |
808 undeleting content1_content2_content1-untracked |
806 undeleting clean_untracked-deleted |
809 undeleting content1_content2_content2-untracked |
807 undeleting clean_untracked-wc |
810 reverting content1_content2_content3-tracked |
808 reverting clean_wc |
811 undeleting content1_content2_content3-untracked |
809 forgetting missing_wc |
812 reverting content1_content2_missing-tracked |
810 reverting modified_deleted |
813 undeleting content1_content2_missing-untracked |
811 reverting modified_revert |
814 forgetting content1_missing_content1-tracked |
812 undeleting modified_untracked-clean |
815 forgetting content1_missing_content3-tracked |
813 undeleting modified_untracked-deleted |
816 undeleting missing_content2_content2-untracked |
814 undeleting modified_untracked-revert |
817 reverting missing_content2_content3-tracked |
815 undeleting modified_untracked-wc |
818 undeleting missing_content2_content3-untracked |
816 reverting modified_wc |
819 reverting missing_content2_missing-tracked |
817 forgetting removed_revert |
820 undeleting missing_content2_missing-untracked |
818 forgetting removed_wc |
821 forgetting missing_missing_content3-tracked |
819 |
822 |
820 Compare resulting directory with revert target. |
823 Compare resulting directory with revert target. |
821 |
824 |
822 The diff is filtered to include change only. The only difference should be |
825 The diff is filtered to include change only. The only difference should be |
823 additional `.orig` backup file when applicable. |
826 additional `.orig` backup file when applicable. |
824 |
827 |
825 $ python ../dircontent.py > ../content-parent-all.txt |
828 $ python ../dircontent.py > ../content-parent-all.txt |
826 $ cd .. |
829 $ cd .. |
827 $ diff -U 0 -- content-parent.txt content-parent-all.txt | grep _ |
830 $ diff -U 0 -- content-parent.txt content-parent-all.txt | grep _ |
828 +wc added_untracked-wc.orig |
831 +content3 content1_content1_content3-tracked.orig |
829 +wc added_wc.orig |
832 +content3 content1_content1_content3-untracked.orig |
830 +wc clean_untracked-wc.orig |
833 +content1 content1_content2_content1-tracked.orig |
831 +wc clean_wc.orig |
834 +content1 content1_content2_content1-untracked.orig |
832 +wc missing_untracked-wc |
835 +content3 content1_content2_content3-tracked.orig |
833 +wc missing_wc |
836 +content3 content1_content2_content3-untracked.orig |
834 +base modified_revert.orig |
837 +content1 content1_missing_content1-tracked |
835 +base modified_untracked-revert.orig |
838 +content1 content1_missing_content1-untracked |
836 +wc modified_untracked-wc.orig |
839 +content3 content1_missing_content3-tracked |
837 +wc modified_wc.orig |
840 +content3 content1_missing_content3-untracked |
838 +base removed_revert |
841 +content3 missing_content2_content3-tracked.orig |
839 +base removed_untracked-revert |
842 +content3 missing_content2_content3-untracked.orig |
840 +wc removed_untracked-wc |
843 +content3 missing_missing_content3-tracked |
841 +wc removed_wc |
844 +content3 missing_missing_content3-untracked |
842 |
845 |
843 Test revert --all to "base" content |
846 Test revert --all to "base" content |
844 ----------------------------------- |
847 ----------------------------------- |
845 |
848 |
846 (setup from reference repo) |
849 (setup from reference repo) |
849 $ cd revert-base-all |
852 $ cd revert-base-all |
850 |
853 |
851 check revert output |
854 check revert output |
852 |
855 |
853 $ hg revert --all --rev 'desc(base)' |
856 $ hg revert --all --rev 'desc(base)' |
854 removing added_clean |
857 undeleting content1_content1_content1-untracked |
855 removing added_deleted |
858 reverting content1_content1_content3-tracked |
856 removing added_wc |
859 undeleting content1_content1_content3-untracked |
857 reverting clean_deleted |
860 reverting content1_content1_missing-tracked |
858 undeleting clean_untracked-clean |
861 undeleting content1_content1_missing-untracked |
859 undeleting clean_untracked-deleted |
862 undeleting content1_content2_content1-untracked |
860 undeleting clean_untracked-wc |
863 reverting content1_content2_content2-tracked |
861 reverting clean_wc |
864 undeleting content1_content2_content2-untracked |
862 forgetting missing_wc |
865 reverting content1_content2_content3-tracked |
863 reverting modified_clean |
866 undeleting content1_content2_content3-untracked |
864 reverting modified_deleted |
867 reverting content1_content2_missing-tracked |
865 undeleting modified_untracked-clean |
868 undeleting content1_content2_missing-untracked |
866 undeleting modified_untracked-deleted |
869 adding content1_missing_content1-untracked |
867 undeleting modified_untracked-revert |
870 reverting content1_missing_content3-tracked |
868 undeleting modified_untracked-wc |
871 adding content1_missing_content3-untracked |
869 reverting modified_wc |
872 adding content1_missing_missing-tracked |
870 adding removed_clean |
873 adding content1_missing_missing-untracked |
871 adding removed_untracked-clean |
874 removing missing_content2_content2-tracked |
872 adding removed_untracked-revert |
875 removing missing_content2_content3-tracked |
873 adding removed_untracked-wc |
876 removing missing_content2_missing-tracked |
874 reverting removed_wc |
877 forgetting missing_missing_content3-tracked |
875 |
878 |
876 Compare resulting directory with revert target. |
879 Compare resulting directory with revert target. |
877 |
880 |
878 The diff is filtered to include change only. The only difference should be |
881 The diff is filtered to include change only. The only difference should be |
879 additional `.orig` backup file when applicable. |
882 additional `.orig` backup file when applicable. |
880 |
883 |
881 $ python ../dircontent.py > ../content-base-all.txt |
884 $ python ../dircontent.py > ../content-base-all.txt |
882 $ cd .. |
885 $ cd .. |
883 $ diff -U 0 -- content-base.txt content-base-all.txt | grep _ |
886 $ diff -U 0 -- content-base.txt content-base-all.txt | grep _ |
884 +parent added_untracked-clean |
887 +content3 content1_content1_content3-tracked.orig |
885 +wc added_untracked-wc |
888 +content3 content1_content1_content3-untracked.orig |
886 +wc added_wc.orig |
889 +content2 content1_content2_content2-untracked.orig |
887 +wc clean_untracked-wc.orig |
890 +content3 content1_content2_content3-tracked.orig |
888 +wc clean_wc.orig |
891 +content3 content1_content2_content3-untracked.orig |
889 +wc missing_untracked-wc |
892 +content3 content1_missing_content3-tracked.orig |
890 +wc missing_wc |
893 +content3 content1_missing_content3-untracked.orig |
891 +parent modified_untracked-clean.orig |
894 +content2 missing_content2_content2-untracked |
892 +wc modified_untracked-wc.orig |
895 +content3 missing_content2_content3-tracked.orig |
893 +wc modified_wc.orig |
896 +content3 missing_content2_content3-untracked |
894 +wc removed_untracked-wc.orig |
897 +content3 missing_missing_content3-tracked |
895 +wc removed_wc.orig |
898 +content3 missing_missing_content3-untracked |
896 |
899 |
897 Test revert to parent content with explicit file name |
900 Test revert to parent content with explicit file name |
898 ----------------------------------------------------- |
901 ----------------------------------------------------- |
899 |
902 |
900 (setup from reference repo) |
903 (setup from reference repo) |
908 $ for file in `python ../gen-revert-cases.py filelist`; do |
911 $ for file in `python ../gen-revert-cases.py filelist`; do |
909 > echo '### revert for:' $file; |
912 > echo '### revert for:' $file; |
910 > hg revert $file; |
913 > hg revert $file; |
911 > echo |
914 > echo |
912 > done |
915 > done |
913 ### revert for: added_clean |
916 ### revert for: missing_content2_content2-tracked |
914 no changes needed to added_clean |
917 no changes needed to missing_content2_content2-tracked |
915 |
918 |
916 ### revert for: added_deleted |
919 ### revert for: missing_content2_missing-tracked |
917 |
920 |
918 ### revert for: added_untracked-clean |
921 ### revert for: missing_content2_content2-untracked |
919 |
922 |
920 ### revert for: added_untracked-deleted |
923 ### revert for: missing_content2_missing-untracked |
921 |
924 |
922 ### revert for: added_untracked-wc |
925 ### revert for: missing_content2_content3-untracked |
923 |
926 |
924 ### revert for: added_wc |
927 ### revert for: missing_content2_content3-tracked |
925 |
928 |
926 ### revert for: clean_clean |
929 ### revert for: content1_content1_content1-tracked |
927 no changes needed to clean_clean |
930 no changes needed to content1_content1_content1-tracked |
928 |
931 |
929 ### revert for: clean_deleted |
932 ### revert for: content1_content1_missing-tracked |
930 |
933 |
931 ### revert for: clean_untracked-clean |
934 ### revert for: content1_content1_content1-untracked |
932 |
935 |
933 ### revert for: clean_untracked-deleted |
936 ### revert for: content1_content1_missing-untracked |
934 |
937 |
935 ### revert for: clean_untracked-wc |
938 ### revert for: content1_content1_content3-untracked |
936 |
939 |
937 ### revert for: clean_wc |
940 ### revert for: content1_content1_content3-tracked |
938 |
941 |
939 ### revert for: missing_clean |
942 ### revert for: missing_missing_missing-tracked |
940 missing_clean: no such file in rev * (glob) |
943 missing_missing_missing-tracked: no such file in rev * (glob) |
941 |
944 |
942 ### revert for: missing_untracked-clean |
945 ### revert for: missing_missing_missing-untracked |
943 missing_untracked-clean: no such file in rev * (glob) |
946 missing_missing_missing-untracked: no such file in rev * (glob) |
944 |
947 |
945 ### revert for: missing_untracked-wc |
948 ### revert for: missing_missing_content3-untracked |
946 file not managed: missing_untracked-wc |
949 file not managed: missing_missing_content3-untracked |
947 |
950 |
948 ### revert for: missing_wc |
951 ### revert for: missing_missing_content3-tracked |
949 |
952 |
950 ### revert for: modified_clean |
953 ### revert for: content1_content2_content2-tracked |
951 no changes needed to modified_clean |
954 no changes needed to content1_content2_content2-tracked |
952 |
955 |
953 ### revert for: modified_deleted |
956 ### revert for: content1_content2_missing-tracked |
954 |
957 |
955 ### revert for: modified_revert |
958 ### revert for: content1_content2_content1-tracked |
956 |
959 |
957 ### revert for: modified_untracked-clean |
960 ### revert for: content1_content2_content2-untracked |
958 |
961 |
959 ### revert for: modified_untracked-deleted |
962 ### revert for: content1_content2_missing-untracked |
960 |
963 |
961 ### revert for: modified_untracked-revert |
964 ### revert for: content1_content2_content1-untracked |
962 |
965 |
963 ### revert for: modified_untracked-wc |
966 ### revert for: content1_content2_content3-untracked |
964 |
967 |
965 ### revert for: modified_wc |
968 ### revert for: content1_content2_content3-tracked |
966 |
969 |
967 ### revert for: removed_clean |
970 ### revert for: content1_missing_missing-tracked |
968 removed_clean: no such file in rev * (glob) |
971 content1_missing_missing-tracked: no such file in rev * (glob) |
969 |
972 |
970 ### revert for: removed_revert |
973 ### revert for: content1_missing_content1-tracked |
971 |
974 |
972 ### revert for: removed_untracked-clean |
975 ### revert for: content1_missing_missing-untracked |
973 removed_untracked-clean: no such file in rev * (glob) |
976 content1_missing_missing-untracked: no such file in rev * (glob) |
974 |
977 |
975 ### revert for: removed_untracked-revert |
978 ### revert for: content1_missing_content1-untracked |
976 file not managed: removed_untracked-revert |
979 file not managed: content1_missing_content1-untracked |
977 |
980 |
978 ### revert for: removed_untracked-wc |
981 ### revert for: content1_missing_content3-untracked |
979 file not managed: removed_untracked-wc |
982 file not managed: content1_missing_content3-untracked |
980 |
983 |
981 ### revert for: removed_wc |
984 ### revert for: content1_missing_content3-tracked |
982 |
985 |
983 |
986 |
984 check resulting directory against the --all run |
987 check resulting directory against the --all run |
985 (There should be no difference) |
988 (There should be no difference) |
986 |
989 |
1003 $ for file in `python ../gen-revert-cases.py filelist`; do |
1006 $ for file in `python ../gen-revert-cases.py filelist`; do |
1004 > echo '### revert for:' $file; |
1007 > echo '### revert for:' $file; |
1005 > hg revert $file --rev 'desc(base)'; |
1008 > hg revert $file --rev 'desc(base)'; |
1006 > echo |
1009 > echo |
1007 > done |
1010 > done |
1008 ### revert for: added_clean |
1011 ### revert for: missing_content2_content2-tracked |
1009 |
1012 |
1010 ### revert for: added_deleted |
1013 ### revert for: missing_content2_missing-tracked |
1011 |
1014 |
1012 ### revert for: added_untracked-clean |
1015 ### revert for: missing_content2_content2-untracked |
1013 no changes needed to added_untracked-clean |
1016 no changes needed to missing_content2_content2-untracked |
1014 |
1017 |
1015 ### revert for: added_untracked-deleted |
1018 ### revert for: missing_content2_missing-untracked |
1016 no changes needed to added_untracked-deleted |
1019 no changes needed to missing_content2_missing-untracked |
1017 |
1020 |
1018 ### revert for: added_untracked-wc |
1021 ### revert for: missing_content2_content3-untracked |
1019 no changes needed to added_untracked-wc |
1022 no changes needed to missing_content2_content3-untracked |
1020 |
1023 |
1021 ### revert for: added_wc |
1024 ### revert for: missing_content2_content3-tracked |
1022 |
1025 |
1023 ### revert for: clean_clean |
1026 ### revert for: content1_content1_content1-tracked |
1024 no changes needed to clean_clean |
1027 no changes needed to content1_content1_content1-tracked |
1025 |
1028 |
1026 ### revert for: clean_deleted |
1029 ### revert for: content1_content1_missing-tracked |
1027 |
1030 |
1028 ### revert for: clean_untracked-clean |
1031 ### revert for: content1_content1_content1-untracked |
1029 |
1032 |
1030 ### revert for: clean_untracked-deleted |
1033 ### revert for: content1_content1_missing-untracked |
1031 |
1034 |
1032 ### revert for: clean_untracked-wc |
1035 ### revert for: content1_content1_content3-untracked |
1033 |
1036 |
1034 ### revert for: clean_wc |
1037 ### revert for: content1_content1_content3-tracked |
1035 |
1038 |
1036 ### revert for: missing_clean |
1039 ### revert for: missing_missing_missing-tracked |
1037 missing_clean: no such file in rev * (glob) |
1040 missing_missing_missing-tracked: no such file in rev * (glob) |
1038 |
1041 |
1039 ### revert for: missing_untracked-clean |
1042 ### revert for: missing_missing_missing-untracked |
1040 missing_untracked-clean: no such file in rev * (glob) |
1043 missing_missing_missing-untracked: no such file in rev * (glob) |
1041 |
1044 |
1042 ### revert for: missing_untracked-wc |
1045 ### revert for: missing_missing_content3-untracked |
1043 file not managed: missing_untracked-wc |
1046 file not managed: missing_missing_content3-untracked |
1044 |
1047 |
1045 ### revert for: missing_wc |
1048 ### revert for: missing_missing_content3-tracked |
1046 |
1049 |
1047 ### revert for: modified_clean |
1050 ### revert for: content1_content2_content2-tracked |
1048 |
1051 |
1049 ### revert for: modified_deleted |
1052 ### revert for: content1_content2_missing-tracked |
1050 |
1053 |
1051 ### revert for: modified_revert |
1054 ### revert for: content1_content2_content1-tracked |
1052 no changes needed to modified_revert |
1055 no changes needed to content1_content2_content1-tracked |
1053 |
1056 |
1054 ### revert for: modified_untracked-clean |
1057 ### revert for: content1_content2_content2-untracked |
1055 |
1058 |
1056 ### revert for: modified_untracked-deleted |
1059 ### revert for: content1_content2_missing-untracked |
1057 |
1060 |
1058 ### revert for: modified_untracked-revert |
1061 ### revert for: content1_content2_content1-untracked |
1059 |
1062 |
1060 ### revert for: modified_untracked-wc |
1063 ### revert for: content1_content2_content3-untracked |
1061 |
1064 |
1062 ### revert for: modified_wc |
1065 ### revert for: content1_content2_content3-tracked |
1063 |
1066 |
1064 ### revert for: removed_clean |
1067 ### revert for: content1_missing_missing-tracked |
1065 |
1068 |
1066 ### revert for: removed_revert |
1069 ### revert for: content1_missing_content1-tracked |
1067 no changes needed to removed_revert |
1070 no changes needed to content1_missing_content1-tracked |
1068 |
1071 |
1069 ### revert for: removed_untracked-clean |
1072 ### revert for: content1_missing_missing-untracked |
1070 |
1073 |
1071 ### revert for: removed_untracked-revert |
1074 ### revert for: content1_missing_content1-untracked |
1072 |
1075 |
1073 ### revert for: removed_untracked-wc |
1076 ### revert for: content1_missing_content3-untracked |
1074 |
1077 |
1075 ### revert for: removed_wc |
1078 ### revert for: content1_missing_content3-tracked |
1076 |
1079 |
1077 |
1080 |
1078 check resulting directory against the --all run |
1081 check resulting directory against the --all run |
1079 (There should be no difference) |
1082 (There should be no difference) |
1080 |
1083 |