# HG changeset patch # User Pierre-Yves David # Date 2024-03-09 01:07:15 # Node ID 659f766629c8ed9c6e202060cd134fb5af3961b3 # Parent 94f821490645e0825ebc01e8574e46ab803a4289 branchcache: stop using `copy(…)` in `replace(…)` The `copy` method is mostly used for a filter level to inherit the branchmap from a subset. So we stop using (abusing) it in "replace" to ensure `copy` is used only for inheritance purposes. Since `replace` is a method of the BranchMapCache, it seems fine to do lower level operation there. diff --git a/mercurial/branchmap.py b/mercurial/branchmap.py --- a/mercurial/branchmap.py +++ b/mercurial/branchmap.py @@ -157,7 +157,9 @@ class BranchMapCache: for candidate in (b'base', b'immutable', b'served'): rview = repo.filtered(candidate) if cache.validfor(rview): - cache = self._per_filter[candidate] = cache.copy(rview) + cache._filtername = candidate + self._per_filter[candidate] = cache + cache._dirty = True cache.write(rview) return