From patchwork Fri Oct 17 17:49:29 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [3,of,5] revset-children: call `getset` on a `fullreposet` From: Pierre-Yves David X-Patchwork-Id: 6374 Message-Id: To: mercurial-devel@selenic.com Cc: Pierre-Yves David Date: Fri, 17 Oct 2014 10:49:29 -0700 # HG changeset patch # User Pierre-Yves David # 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()``