# HG changeset patch # User Pierre-Yves David # Date 2023-07-12 10:47:08 # Node ID 1680ef94ad2b48479d819dc97b5cce24a1258117 # Parent d2457318100373049ae48e3d8e67c60adc3220fe repoview: fix the filter created by `extrafilter` The `name` variable was updated in each interaction of the loop, making all new filters inheriting from the same base (the last one iterated), leading to terrible terrible misbehavior. diff --git a/mercurial/repoview.py b/mercurial/repoview.py --- a/mercurial/repoview.py +++ b/mercurial/repoview.py @@ -209,16 +209,18 @@ def extrafilter(ui): subsettable = repoviewutil.subsettable if combine(b'base') not in filtertable: - for name in _basefiltername: + for base_name in _basefiltername: - def extrafilteredrevs(repo, *args, **kwargs): + def extrafilteredrevs(repo, *args, name=base_name, **kwargs): baserevs = filtertable[name](repo, *args, **kwargs) extrarevs = frozenset(repo.revs(frevs)) return baserevs | extrarevs - filtertable[combine(name)] = extrafilteredrevs - if name in subsettable: - subsettable[combine(name)] = combine(subsettable[name]) + filtertable[combine(base_name)] = extrafilteredrevs + if base_name in subsettable: + subsettable[combine(base_name)] = combine( + subsettable[base_name] + ) return fid diff --git a/tests/test-server-view.t b/tests/test-server-view.t --- a/tests/test-server-view.t +++ b/tests/test-server-view.t @@ -108,11 +108,11 @@ add more content and complexity to the r r3 r4 r5 - r6 (missing-correct-output !) - r7 (missing-correct-output !) - r8 (missing-correct-output !) - r11 (missing-correct-output !) - r12 (missing-correct-output !) + r6 + r7 + r8 + r11 + r12 cleanups