changeset 35272:70e86db6a913

dagop: yield intro filectx by filectxancestors() This is the convention of dagop.*ancestors() functions.
author Yuya Nishihara <yuya@tcha.org>
date Thu, 22 Sep 2016 17:48:46 +0900
parents d90c534099b1
children 8dee2080f35c
files mercurial/dagop.py mercurial/revset.py
diffstat 2 files changed, 3 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/dagop.py	Sun Oct 22 17:23:34 2017 +0900
+++ b/mercurial/dagop.py	Thu Sep 22 17:48:46 2016 +0900
@@ -76,7 +76,7 @@
                     heapq.heappush(pendingheap, (heapsign * prev, pdepth))
 
 def filectxancestors(fctx, followfirst=False):
-    """Like filectx.ancestors()"""
+    """Like filectx.ancestors(), but includes the given fctx itself"""
     visit = {}
     c = fctx
     if followfirst:
@@ -84,6 +84,7 @@
     else:
         cut = None
 
+    yield c
     while True:
         for parent in c.parents()[:cut]:
             visit[(parent.linkrev(), parent.filenode())] = parent
--- a/mercurial/revset.py	Sun Oct 22 17:23:34 2017 +0900
+++ b/mercurial/revset.py	Thu Sep 22 17:48:46 2016 +0900
@@ -929,11 +929,9 @@
 
         s = set()
         for fname in files:
-            fctx = c[fname]
+            fctx = c[fname].introfilectx()
             a = dagop.filectxancestors(fctx, followfirst)
             s = s.union(set(c.rev() for c in a))
-            # include the revision responsible for the most recent version
-            s.add(fctx.introrev())
     else:
         s = dagop.revancestors(repo, baseset([c.rev()]), followfirst)