775 if entry.merged_removed or entry.from_p2_removed: |
775 if entry.merged_removed or entry.from_p2_removed: |
776 source = self._map.copymap.get(f) |
776 source = self._map.copymap.get(f) |
777 if entry.merged_removed: |
777 if entry.merged_removed: |
778 self.merge(f) |
778 self.merge(f) |
779 elif entry.from_p2_removed: |
779 elif entry.from_p2_removed: |
780 self.otherparent(f) |
780 self._otherparent(f) |
781 if source is not None: |
781 if source is not None: |
782 self.copy(source, f) |
782 self.copy(source, f) |
783 return |
783 return |
784 elif entry.merged or entry.from_p2: |
784 elif entry.merged or entry.from_p2: |
785 return |
785 return |
786 self._addpath(f, possibly_dirty=True) |
786 self._addpath(f, possibly_dirty=True) |
787 self._map.copymap.pop(f, None) |
787 self._map.copymap.pop(f, None) |
788 |
788 |
789 def otherparent(self, f): |
789 def otherparent(self, f): |
790 '''Mark as coming from the other parent, always dirty.''' |
790 '''Mark as coming from the other parent, always dirty.''' |
|
791 if self.pendingparentchange(): |
|
792 util.nouideprecwarn( |
|
793 b"do not use `otherparent` inside of update/merge context." |
|
794 b" Use `update_file` or `update_file_p1`", |
|
795 b'6.0', |
|
796 stacklevel=2, |
|
797 ) |
|
798 else: |
|
799 util.nouideprecwarn( |
|
800 b"do not use `otherparent` outside of update/merge context." |
|
801 b"It should have been set by the update/merge code", |
|
802 b'6.0', |
|
803 stacklevel=2, |
|
804 ) |
|
805 self._otherparent(f) |
|
806 |
|
807 def _otherparent(self, f): |
791 if not self.in_merge: |
808 if not self.in_merge: |
792 msg = _(b"setting %r to other parent only allowed in merges") % f |
809 msg = _(b"setting %r to other parent only allowed in merges") % f |
793 raise error.Abort(msg) |
810 raise error.Abort(msg) |
794 entry = self._map.get(f) |
811 entry = self._map.get(f) |
795 if entry is not None and entry.tracked: |
812 if entry is not None and entry.tracked: |
842 |
859 |
843 def merge(self, f): |
860 def merge(self, f): |
844 '''Mark a file merged.''' |
861 '''Mark a file merged.''' |
845 if not self.in_merge: |
862 if not self.in_merge: |
846 return self._normallookup(f) |
863 return self._normallookup(f) |
847 return self.otherparent(f) |
864 return self._otherparent(f) |
848 |
865 |
849 def drop(self, f): |
866 def drop(self, f): |
850 '''Drop a file from the dirstate''' |
867 '''Drop a file from the dirstate''' |
851 if not self.pendingparentchange(): |
868 if not self.pendingparentchange(): |
852 util.nouideprecwarn( |
869 util.nouideprecwarn( |