# HG changeset patch # User Pierre-Yves David # Date 1709946435 -3600 # 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 -r 94f821490645 -r 659f766629c8 mercurial/branchmap.py --- a/mercurial/branchmap.py Fri Mar 08 16:47:32 2024 +0100 +++ b/mercurial/branchmap.py Sat Mar 09 02:07:15 2024 +0100 @@ -157,7 +157,9 @@ 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