[PATCH v7] transplant: convert applied() algorithm from nodes to revs

Joshua Redstone joshua.redstone at fb.com
Fri Jun 8 16:40:18 CDT 2012


# HG changeset patch
# User Joshua Redstone <joshua.redstone at fb.com>
# Date 1339190492 25200
# Node ID 0615828ea2b589c3605afc23b6d4a09e75b124c5
# Parent  11ddfec95abc3ca5905cac95d41075cc3e4fdc79
transplant: convert applied() algorithm from nodes to revs

After a recent switch from revlog.reachable to revlog.ancestors,
clean up the code a bit to use revs rather than nodes.

diff -r 11ddfec95abc -r 0615828ea2b5 hgext/transplant.py
--- a/hgext/transplant.py	Fri Jun 08 08:39:44 2012 -0700
+++ b/hgext/transplant.py	Fri Jun 08 14:21:32 2012 -0700
@@ -89,24 +89,21 @@
 
     def applied(self, repo, node, parent):
         '''returns True if a node is already an ancestor of parent
-        or has already been transplanted'''
+        or is parent or has already been transplanted'''
+        if hasnode(repo, parent):
+            parentrev = repo.changelog.rev(parent)
         if hasnode(repo, node):
-            reachablerevs = repo.changelog.incancestors(
-                [repo.changelog.rev(parent)],
-                stoprev=repo.changelog.rev(node))
-            reachable = (repo.changelog.node(rev) for rev in reachablerevs)
-            if node in reachable:
+            rev = repo.changelog.rev(node)
+            reachable = repo.changelog.incancestors([parentrev], rev)
+            if rev in reachable:
                 return True
         for t in self.transplants.get(node):
             # it might have been stripped
             if not hasnode(repo, t.lnode):
                 self.transplants.remove(t)
                 return False
-            reachablerevs = repo.changelog.incancestors(
-                [repo.changelog.rev(parent)],
-                stoprev=repo.changelog.rev(t.lnode))
-            reachable = (repo.changelog.node(rev) for rev in reachablerevs)
-            if t.lnode in reachable:
+            lnoderev = repo.changelog.rev(t.lnode)
+            if lnoderev in repo.changelog.incancestors([parentrev], lnoderev):
                 return True
         return False
 


More information about the Mercurial-devel mailing list