# HG changeset patch # User Pierre-Yves David # Date 1605865126 -3600 # Node ID b6b7626d3e06334d13de7eeb7514d6b0515a17f5 # Parent fada33872b5bbbd857110d53e3068456a8c7401a copies: avoid unwanted side effect from one branch to another Without this copy, change in a one descendant branch (With "remove" change only) could affect computation on another descendant branches. This was not caugh by the test because the test graph are "too simple". I started writing more test in that regards, but I a submitting this changes earlier because I want to get more code landed to allow other optimisation work to happens. Differential Revision: https://phab.mercurial-scm.org/D9416 diff -r fada33872b5b -r b6b7626d3e06 mercurial/copies.py --- a/mercurial/copies.py Thu Nov 26 09:54:16 2020 +0100 +++ b/mercurial/copies.py Fri Nov 20 10:38:46 2020 +0100 @@ -354,7 +354,9 @@ source = prev[1] newcopies[dest] = (c, source) assert newcopies is not copies - if changes is not None: + if changes is not None and changes.removed: + if newcopies is copies: + newcopies = copies.copy() for f in changes.removed: if f in newcopies: if newcopies is copies: