branchcache: stop using `copy(…)` in `replace(…)`
authorPierre-Yves David <pierre-yves.david@octobus.net>
Sat, 09 Mar 2024 02:07:15 +0100
changeset 51489 659f766629c8
parent 51488 94f821490645
child 51490 18c2753434f2
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.
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