Other revsets like secret(), draft(), _nonpublic() are using
phasescache.getrevset already. The latter is more efficient after D1606.
So let's migrate the public() revset function too.
Tested using:
$ hg debugshell --hidden --cwd hg-committed` In [1]: %timeit len(repo.revs('public()'))
- Before D1606: 10 loops, best of 3: 22.5 ms per loop
- Before this change, after D1606: 10 loops, best of 3: 28.6 ms per loop
- After this change: 10 loops, best of 3: 20.2 ms per loop
Therefore public() revset becomes even slightly faster after the data
structure change by D1606. A similar performance win could also be observed
on a large repo.
A side effect is phasecache.getrevset needs to take a subset parameter.
That was added with a default value so it won't cause BC issues.