mercurial/dirstate.py
changeset 47742 f51aaa0f1485
parent 47741 9f19d9f2d191
child 47744 372ff4638cb4
equal deleted inserted replaced
47741:9f19d9f2d191 47742:f51aaa0f1485
   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(