D9416: copies: avoid unwanted side effect from one branch to another
Alphare (Raphaël Gomès)
phabricator at mercurial-scm.org
Fri Nov 27 16:11:52 UTC 2020
Alphare created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.
REVISION SUMMARY
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.
REPOSITORY
rHG Mercurial
BRANCH
default
REVISION DETAIL
https://phab.mercurial-scm.org/D9416
AFFECTED FILES
mercurial/copies.py
CHANGE DETAILS
diff --git a/mercurial/copies.py b/mercurial/copies.py
--- a/mercurial/copies.py
+++ b/mercurial/copies.py
@@ -379,7 +379,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:
To: Alphare, #hg-reviewers
Cc: mercurial-patches, mercurial-devel
More information about the Mercurial-devel
mailing list