diff -r 41b8892a2054 -r 42a116f1cdc1 mercurial/revlog.py --- a/mercurial/revlog.py Tue Sep 03 02:13:03 2024 +0200 +++ b/mercurial/revlog.py Tue Sep 03 11:11:17 2024 +0200 @@ -2380,9 +2380,15 @@ assert heads return (orderedout, roots, heads) - def headrevs(self, revs=None): + def headrevs(self, revs=None, stop_rev=None): if revs is None: - return self.index.headrevs() + excluded = None + if stop_rev is not None and stop_rev < len(self.index): + # We should let the native code handle it, but that a + # simple enough first step. + excluded = range(stop_rev, len(self.index)) + return self.index.headrevs(excluded) + assert stop_rev is None if rustdagop is not None and self.index.rust_ext_compat: return rustdagop.headrevs(self.index, revs) return dagop.headrevs(revs, self._uncheckedparentrevs)