hgext3rd/evolve/utility.py
changeset 2086 28241509ff6f
parent 2054 f9d65d24b9f9
child 2087 0c2371542687
--- a/hgext3rd/evolve/utility.py	Sat Mar 11 08:46:21 2017 -0800
+++ b/hgext3rd/evolve/utility.py	Sat Mar 11 09:08:20 2017 -0800
@@ -4,6 +4,7 @@
 #
 # This software may be used and distributed according to the terms of the
 # GNU General Public License version 2 or any later version.
+from mercurial import node
 
 def obsexcmsg(ui, message, important=False):
     verbose = ui.configbool('experimental', 'verbose-obsolescence-exchange',
@@ -18,3 +19,20 @@
     if ui.configbool('experimental', 'verbose-obsolescence-exchange', False):
         topic = 'OBSEXC'
     ui.progress(topic, *args, **kwargs)
+
+_depthcache = {}
+def depth(repo, rev):
+    cl = repo.changelog
+    n = cl.node(rev)
+    revdepth = _depthcache.get(n, None)
+    if revdepth is None:
+        p1, p2 = cl.parentrevs(rev)
+        if p1 == node.nullrev:
+            revdepth = 1
+        elif p2 == node.nullrev:
+            revdepth = depth(repo, p1) + 1
+        else:
+            # XXX we should just find the common ancestors
+            revdepth = len(list(cl.ancestors([rev], inclusive=True)))
+        _depthcache[n] = revdepth
+    return revdepth