[PATCH 3 of 5] revset-children: call `getset` on a `fullreposet`

Pierre-Yves David pierre-yves.david at ens-lyon.org
Fri Oct 17 12:49:29 CDT 2014


# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at fb.com>
# Date 1413526457 25200
#      Thu Oct 16 23:14:17 2014 -0700
# Node ID bdcaab9d99c21ac793437f1ad90cb1a9cb8033e7
# Parent  088da6eacbda46121b3dc3dae6c5509dfd9ea474
revset-children: call `getset` on a `fullreposet`

Calling `baseset(repo.changelog)` build a list for all revision in the repo. And
we already have the lazy and efficient `fullreposet` class for this purpose.

This gives us the usual benefits of the fullreposet:

revset) children(tip~100)
before) wall 0.007469 comb 0.010000 user 0.010000 sys 0.000000 (best of 338)
after)  wall 0.003356 comb 0.000000 user 0.000000 sys 0.000000 (best of 755)

diff --git a/mercurial/revset.py b/mercurial/revset.py
--- a/mercurial/revset.py
+++ b/mercurial/revset.py
@@ -569,11 +569,11 @@ def _children(repo, narrow, parentset):
 
 def children(repo, subset, x):
     """``children(set)``
     Child changesets of changesets in set.
     """
-    s = getset(repo, baseset(repo), x)
+    s = getset(repo, fullreposet(repo), x)
     cs = _children(repo, subset, s)
     return subset & cs
 
 def closed(repo, subset, x):
     """``closed()``


More information about the Mercurial-devel mailing list