[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