diff -r 41b8892a2054 -r 42a116f1cdc1 mercurial/repoview.py --- a/mercurial/repoview.py Tue Sep 03 02:13:03 2024 +0200 +++ b/mercurial/repoview.py Tue Sep 03 11:11:17 2024 +0200 @@ -310,9 +310,14 @@ # no Rust fast path implemented yet, so just loop in Python return [self.node(r) for r in self.headrevs()] - def headrevs(self, revs=None): + def headrevs(self, revs=None, stop_rev=None): if revs is None: - return self.index.headrevs(self.filteredrevs) + filtered = self.filteredrevs + if stop_rev is not None and stop_rev < len(self.index): + filtered = set(self.filteredrevs) + filtered.update(range(stop_rev, len(self.index))) + return self.index.headrevs(filtered) + assert stop_rev is None revs = self._checknofilteredinrevs(revs) return super(filteredchangelogmixin, self).headrevs(revs)