diff hgext3rd/topic/topicmap.py @ 6704:3635782b0290 stable

topic: compatibility for phase roots being revnums
author Anton Shestakov <av6@dwimlabs.net>
date Fri, 23 Feb 2024 14:52:09 -0300
parents d13cfd9eb6c0
children 920f767589df 0674b56d3526
line wrap: on
line diff
--- a/hgext3rd/topic/topicmap.py	Thu Feb 22 14:10:01 2024 -0300
+++ b/hgext3rd/topic/topicmap.py	Fri Feb 23 14:52:09 2024 -0300
@@ -68,16 +68,16 @@
 
 def _phaseshash(repo, maxrev):
     """uniq ID for a phase matching a set of rev"""
-    revs = set()
     cl = repo.changelog
     fr = cl.filteredrevs
-    getrev = compat.getgetrev(cl)
-    for n in compat.nonpublicphaseroots(repo):
-        r = getrev(n)
-        if r not in fr and r < maxrev:
-            revs.add(r)
+    nppr = compat.nonpublicphaseroots(repo)
+    # starting with hg 6.7rc0 phase roots are already revs instead of nodes
+    # hg <= 6.6 (68289ed170c7)
+    if not util.safehasattr(repo._phasecache, '_phaseroots'):
+        getrev = compat.getgetrev(cl)
+        nppr = set(getrev(n) for n in nppr)
+    revs = sorted(set(r for r in nppr if r not in fr and r < maxrev))
     key = nullid
-    revs = sorted(revs)
     if revs:
         s = hashlib.sha1()
         for rev in revs: