diff -r 5d68c4eedd66 -r a660d8a53267 mercurial/dirstatemap.py --- a/mercurial/dirstatemap.py Wed Sep 22 15:17:12 2021 +0200 +++ b/mercurial/dirstatemap.py Wed Sep 22 17:46:29 2021 +0200 @@ -441,26 +441,11 @@ continue # Discard "merged" markers when moving away from a merge state - if s.merged: - source = self.copymap.get(f) + if s.merged or s.from_p2: + source = self.copymap.pop(f, None) if source: copies[f] = source - self.reset_state( - f, - wc_tracked=True, - p1_tracked=True, - possibly_dirty=True, - ) - # Also fix up otherparent markers - elif s.from_p2: - source = self.copymap.get(f) - if source: - copies[f] = source - self.reset_state( - f, - p1_tracked=False, - wc_tracked=True, - ) + s.drop_merge_data() return copies def read(self):