Show More
@@ -4935,8 +4935,7 b' def resolve(ui, repo, *pats, **opts):' | |||||
4935 |
|
4935 | |||
4936 | if mark: |
|
4936 | if mark: | |
4937 | if markcheck: |
|
4937 | if markcheck: | |
4938 |
|
|
4938 | fdata = repo.wvfs.tryread(f) | |
4939 | fdata = fobj.read() |
|
|||
4940 | if filemerge.hasconflictmarkers(fdata) and \ |
|
4939 | if filemerge.hasconflictmarkers(fdata) and \ | |
4941 | ms[f] != mergemod.MERGE_RECORD_RESOLVED: |
|
4940 | ms[f] != mergemod.MERGE_RECORD_RESOLVED: | |
4942 | hasconflictmarkers.append(f) |
|
4941 | hasconflictmarkers.append(f) |
@@ -629,3 +629,169 b' Test that commands.resolve.confirm respe' | |||||
629 |
|
629 | |||
630 | Done with commands.resolve.confirm tests: |
|
630 | Done with commands.resolve.confirm tests: | |
631 | $ cd .. |
|
631 | $ cd .. | |
|
632 | ||||
|
633 | Test that commands.resolve.mark-check works even if there are deleted files: | |||
|
634 | $ hg init resolve-deleted | |||
|
635 | $ cd resolve-deleted | |||
|
636 | $ echo r0 > file1 | |||
|
637 | $ hg ci -qAm r0 | |||
|
638 | $ echo r1 > file1 | |||
|
639 | $ hg ci -qm r1 | |||
|
640 | $ hg co -qr 0 | |||
|
641 | $ hg rm file1 | |||
|
642 | $ hg ci -qm "r2 (delete file1)" | |||
|
643 | ||||
|
644 | (At this point we have r0 creating file1, and sibling commits r1 and r2, which | |||
|
645 | modify and delete file1, respectively) | |||
|
646 | ||||
|
647 | $ hg merge -r 1 | |||
|
648 | file 'file1' was deleted in local [working copy] but was modified in other [merge rev]. | |||
|
649 | What do you want to do? | |||
|
650 | use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u | |||
|
651 | 0 files updated, 0 files merged, 0 files removed, 1 files unresolved | |||
|
652 | use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon | |||
|
653 | [1] | |||
|
654 | $ hg resolve --list | |||
|
655 | U file1 | |||
|
656 | Because we left it as 'unresolved' the file should still exist. | |||
|
657 | $ [ -f file1 ] || echo "File does not exist?" | |||
|
658 | BC behavior: `hg resolve --mark` accepts that the file is still there, and | |||
|
659 | doesn't have a problem with this situation. | |||
|
660 | $ hg resolve --mark --config commands.resolve.mark-check=abort | |||
|
661 | (no more unresolved files) | |||
|
662 | $ hg resolve --list | |||
|
663 | R file1 | |||
|
664 | The file is still there: | |||
|
665 | $ [ -f file1 ] || echo "File does not exist?" | |||
|
666 | Let's check mark-check=warn: | |||
|
667 | $ hg resolve --unmark file1 | |||
|
668 | $ hg resolve --mark --config commands.resolve.mark-check=warn | |||
|
669 | (no more unresolved files) | |||
|
670 | $ hg resolve --list | |||
|
671 | R file1 | |||
|
672 | The file is still there: | |||
|
673 | $ [ -f file1 ] || echo "File does not exist?" | |||
|
674 | Let's resolve the issue by deleting the file via `hg resolve` | |||
|
675 | $ hg resolve --unmark file1 | |||
|
676 | $ echo 'd' | hg resolve file1 --config ui.interactive=1 | |||
|
677 | file 'file1' was deleted in local [working copy] but was modified in other [merge rev]. | |||
|
678 | What do you want to do? | |||
|
679 | use (c)hanged version, leave (d)eleted, or leave (u)nresolved? d | |||
|
680 | (no more unresolved files) | |||
|
681 | $ hg resolve --list | |||
|
682 | R file1 | |||
|
683 | The file is deleted: | |||
|
684 | $ [ -f file1 ] && echo "File still exists?" || true | |||
|
685 | Doing `hg resolve --mark` doesn't break now that the file is missing: | |||
|
686 | $ hg resolve --mark --config commands.resolve.mark-check=abort | |||
|
687 | (no more unresolved files) | |||
|
688 | $ hg resolve --mark --config commands.resolve.mark-check=warn | |||
|
689 | (no more unresolved files) | |||
|
690 | Resurrect the file, and delete it outside of hg: | |||
|
691 | $ hg resolve --unmark file1 | |||
|
692 | $ hg resolve file1 | |||
|
693 | file 'file1' was deleted in local [working copy] but was modified in other [merge rev]. | |||
|
694 | What do you want to do? | |||
|
695 | use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u | |||
|
696 | [1] | |||
|
697 | $ [ -f file1 ] || echo "File does not exist?" | |||
|
698 | $ hg resolve --list | |||
|
699 | U file1 | |||
|
700 | $ rm file1 | |||
|
701 | $ hg resolve --mark --config commands.resolve.mark-check=abort | |||
|
702 | (no more unresolved files) | |||
|
703 | $ hg resolve --list | |||
|
704 | R file1 | |||
|
705 | $ hg resolve --unmark file1 | |||
|
706 | $ hg resolve file1 | |||
|
707 | file 'file1' was deleted in local [working copy] but was modified in other [merge rev]. | |||
|
708 | What do you want to do? | |||
|
709 | use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u | |||
|
710 | [1] | |||
|
711 | $ [ -f file1 ] || echo "File does not exist?" | |||
|
712 | $ hg resolve --list | |||
|
713 | U file1 | |||
|
714 | $ rm file1 | |||
|
715 | $ hg resolve --mark --config commands.resolve.mark-check=warn | |||
|
716 | (no more unresolved files) | |||
|
717 | $ hg resolve --list | |||
|
718 | R file1 | |||
|
719 | ||||
|
720 | ||||
|
721 | For completeness, let's try that in the opposite direction (merging r2 into r1, | |||
|
722 | instead of r1 into r2): | |||
|
723 | $ hg update -qCr 1 | |||
|
724 | $ hg merge -r 2 | |||
|
725 | file 'file1' was deleted in other [merge rev] but was modified in local [working copy]. | |||
|
726 | What do you want to do? | |||
|
727 | use (c)hanged version, (d)elete, or leave (u)nresolved? u | |||
|
728 | 0 files updated, 0 files merged, 0 files removed, 1 files unresolved | |||
|
729 | use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon | |||
|
730 | [1] | |||
|
731 | $ hg resolve --list | |||
|
732 | U file1 | |||
|
733 | Because we left it as 'unresolved' the file should still exist. | |||
|
734 | $ [ -f file1 ] || echo "File does not exist?" | |||
|
735 | BC behavior: `hg resolve --mark` accepts that the file is still there, and | |||
|
736 | doesn't have a problem with this situation. | |||
|
737 | $ hg resolve --mark --config commands.resolve.mark-check=abort | |||
|
738 | (no more unresolved files) | |||
|
739 | $ hg resolve --list | |||
|
740 | R file1 | |||
|
741 | The file is still there: | |||
|
742 | $ [ -f file1 ] || echo "File does not exist?" | |||
|
743 | Let's check mark-check=warn: | |||
|
744 | $ hg resolve --unmark file1 | |||
|
745 | $ hg resolve --mark --config commands.resolve.mark-check=warn | |||
|
746 | (no more unresolved files) | |||
|
747 | $ hg resolve --list | |||
|
748 | R file1 | |||
|
749 | The file is still there: | |||
|
750 | $ [ -f file1 ] || echo "File does not exist?" | |||
|
751 | Let's resolve the issue by deleting the file via `hg resolve` | |||
|
752 | $ hg resolve --unmark file1 | |||
|
753 | $ echo 'd' | hg resolve file1 --config ui.interactive=1 | |||
|
754 | file 'file1' was deleted in other [merge rev] but was modified in local [working copy]. | |||
|
755 | What do you want to do? | |||
|
756 | use (c)hanged version, (d)elete, or leave (u)nresolved? d | |||
|
757 | (no more unresolved files) | |||
|
758 | $ hg resolve --list | |||
|
759 | R file1 | |||
|
760 | The file is deleted: | |||
|
761 | $ [ -f file1 ] && echo "File still exists?" || true | |||
|
762 | Doing `hg resolve --mark` doesn't break now that the file is missing: | |||
|
763 | $ hg resolve --mark --config commands.resolve.mark-check=abort | |||
|
764 | (no more unresolved files) | |||
|
765 | $ hg resolve --mark --config commands.resolve.mark-check=warn | |||
|
766 | (no more unresolved files) | |||
|
767 | Resurrect the file, and delete it outside of hg: | |||
|
768 | $ hg resolve --unmark file1 | |||
|
769 | $ hg resolve file1 | |||
|
770 | file 'file1' was deleted in other [merge rev] but was modified in local [working copy]. | |||
|
771 | What do you want to do? | |||
|
772 | use (c)hanged version, (d)elete, or leave (u)nresolved? u | |||
|
773 | [1] | |||
|
774 | $ [ -f file1 ] || echo "File does not exist?" | |||
|
775 | $ hg resolve --list | |||
|
776 | U file1 | |||
|
777 | $ rm file1 | |||
|
778 | $ hg resolve --mark --config commands.resolve.mark-check=abort | |||
|
779 | (no more unresolved files) | |||
|
780 | $ hg resolve --list | |||
|
781 | R file1 | |||
|
782 | $ hg resolve --unmark file1 | |||
|
783 | $ hg resolve file1 | |||
|
784 | file 'file1' was deleted in other [merge rev] but was modified in local [working copy]. | |||
|
785 | What do you want to do? | |||
|
786 | use (c)hanged version, (d)elete, or leave (u)nresolved? u | |||
|
787 | [1] | |||
|
788 | $ [ -f file1 ] || echo "File does not exist?" | |||
|
789 | $ hg resolve --list | |||
|
790 | U file1 | |||
|
791 | $ rm file1 | |||
|
792 | $ hg resolve --mark --config commands.resolve.mark-check=warn | |||
|
793 | (no more unresolved files) | |||
|
794 | $ hg resolve --list | |||
|
795 | R file1 | |||
|
796 | ||||
|
797 | $ cd .. |
General Comments 0
You need to be logged in to leave comments.
Login now