[PATCH 5 of 7] reachableroots: use internal "revstates" array to test if rev is a root
Pierre-Yves David
pierre-yves.david at ens-lyon.org
Tue Aug 18 14:26:29 CDT 2015
On 08/18/2015 07:42 AM, Yuya Nishihara wrote:
> # HG changeset patch
> # User Yuya Nishihara <yuya at tcha.org>
> # Date 1439534609 -32400
> # Fri Aug 14 15:43:29 2015 +0900
> # Node ID 93e5cd30d2ff9b63f11616054cb647d6ac998053
> # Parent 2ca0b48b6de1c79bc205e7a660a5531c125cad9e
> reachableroots: use internal "revstates" array to test if rev is a root
>
> The main goal of this patch series is to reduce the use of PyXxx() function
> that is likely to require ugly error handling and inc/decref. Plus, this is
> faster than using PySet_Contains().
>
> revset #0: 0::tip
> 0) 0.004168
> 1) 0.003678 88%
>
> This patch ignores out-of-range roots as they are in the pure implementation.
> Because reachable sets are calculated from heads, and out-of-range heads raise
> IndexError, we can just take out-of-range roots as unreachable. Otherwise,
> the test of "hg log -Gr '. + wdir()'" would fail.
>
> "heads" argument is changed to a list. Should we have to rename the C function
> as its signature is changed?
Do we actually need (take advantage of) theses argument being a list?
Could it take an arbitrary iterable? This would allow use to pass
arbitrary smartset.
--
Pierre-Yves David
More information about the Mercurial-devel
mailing list