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.
--- 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