--- a/mercurial/scmutil.py Mon Sep 21 15:05:38 2020 -0400
+++ b/mercurial/scmutil.py Wed Sep 16 12:13:46 2020 -0700
@@ -364,13 +364,15 @@
cl = repo.changelog
if not cl.filteredrevs:
return None
- key = None
- revs = sorted(r for r in cl.filteredrevs if r <= maxrev)
- if revs:
- s = hashutil.sha1()
- for rev in revs:
- s.update(b'%d;' % rev)
- key = s.digest()
+ key = cl._filteredrevs_hashcache.get(maxrev)
+ if not key:
+ revs = sorted(r for r in cl.filteredrevs if r <= maxrev)
+ if revs:
+ s = hashutil.sha1()
+ for rev in revs:
+ s.update(b'%d;' % rev)
+ key = s.digest()
+ cl._filteredrevs_hashcache[maxrev] = key
return key