phases: keep internal state as rev-num instead of node-id
Node-id are expensive to work with, dealing with revision is much simple and
faster.
The fact we still used node-id here shows how few effort have been put into
making the phase logic fast. We tend to no longer use node-id internally for
about ten years.
This has a large impact of repository with many draft roots. For example this
Mozilla-try copy have ½ Million draft roots and `perf::unbundle` see a
significant improvement.
### data-env-vars.name = mozilla-try-2023-03-22-zstd-sparse-revlog
# benchmark.name = hg.perf.perf-unbundle
# bin-env-vars.hg.flavor = no-rust
# bin-env-vars.hg.py-re2-module = default
# benchmark.variants.issue6528 = disabled
# benchmark.variants.revs = last-1
before:: 1.746791 seconds
after:: 1.278379 seconds (-26.82%)
# benchmark.variants.revs = last-10
before:: 3.145774 seconds
after:: 2.103735 seconds (-33.13%)
# benchmark.variants.revs = last-100
before:: 3.487635 seconds
after:: 2.446749 seconds (-29.85%)
# benchmark.variants.revs = last-1000
before:: 5.007568 seconds
after:: 3.989923 seconds (-20.32%)
Test admin::verify
$ hg init admin-verify
$ cd admin-verify
Test normal output
$ hg admin::verify -c dirstate
running 1 checks
running working-copy.dirstate
checking dirstate
Quiet works
$ hg admin::verify -c dirstate --quiet
Test no check no options
$ hg admin::verify
abort: `checks` required
[255]
Test single check without options
$ hg admin::verify -c working-copy.dirstate
running 1 checks
running working-copy.dirstate
checking dirstate
Test single check (alias) without options
$ hg admin::verify -c dirstate
running 1 checks
running working-copy.dirstate
checking dirstate
Test wrong check name without options
$ hg admin::verify -c working-copy.dir
abort: unknown check working-copy.dir
(did you mean working-copy.dirstate?)
[10]
Test wrong alias without options
$ hg admin::verify -c dir
abort: unknown check dir
[10]