[PATCH 11 of 11] revset: use `subset &` in bare `p2()`

Pierre-Yves David pierre-yves.david at ens-lyon.org
Tue Sep 23 17:47:57 CDT 2014


# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at fb.com>
# Date 1410976803 25200
#      Wed Sep 17 11:00:03 2014 -0700
# Node ID 62f989f177ba1effe2b86833a1f0ca5715434675
# Parent  d2ac8f8e413275de8d61978f1653c8d1019e95da
revset: use `subset &` in bare `p2()`

This take advantage of the `fullreposet` smartness with a nice speedup.
Except similar speedup than for p1 when on a merge. (non merge are equally
lightning fast anyway)

diff --git a/mercurial/revset.py b/mercurial/revset.py
--- a/mercurial/revset.py
+++ b/mercurial/revset.py
@@ -1215,11 +1215,13 @@ def p2(repo, subset, x):
     """
     if x is None:
         ps = repo[x].parents()
         try:
             p = ps[1].rev()
-            return subset.filter(lambda r: r == p)
+            if p >= 0:
+                return subset & baseset([p])
+            return baseset([])
         except IndexError:
             return baseset([])
 
     ps = set()
     cl = repo.changelog


More information about the Mercurial-devel mailing list