diff -r 15f04d652b62 -r e7c55e24d6bf mercurial/copies.py --- a/mercurial/copies.py Fri Jun 21 09:33:57 2019 -0700 +++ b/mercurial/copies.py Wed Jun 19 23:14:10 2019 -0700 @@ -312,15 +312,15 @@ if match(dst)} # Copy the dict only if later iterations will also need it if i != len(children[r]) - 1: - copies = copies.copy() - if childcopies: - childcopies = _chain(copies, childcopies) + newcopies = copies.copy() else: - childcopies = copies + newcopies = copies + if childcopies: + newcopies = _chain(newcopies, childcopies) for f in childctx.filesremoved(): - if f in childcopies: - del childcopies[f] - heapq.heappush(work, (c, parent, childcopies)) + if f in newcopies: + del newcopies[f] + heapq.heappush(work, (c, parent, newcopies)) assert False def _forwardcopies(a, b, match=None):