discovery: compute newly discovered missing in a more efficient way
Calling "descendants" is expensive, instead, we bound the walk inside the know set
of undecided revision.
This help with discovery performance:
# without the revset '%ld' improvement
$ hg perfdiscovery -R pypy-left pypy-right
before: wall 0.675631 comb 0.680000 user 0.670000 sys 0.010000 (median of 15)
after: wall 0.520145 comb 0.530000 user 0.510000 sys 0.020000 (median of 19)
There is another series in flight that greatly improves performances of "%ld"
substitution in `repo.revs` call. If this changeset is applied above it, we
see a similar performance boost.
# with the revset '%ld' improvement
$ hg perfdiscovery -R pypy-left pypy-right
before: wall 0.477848 comb 0.480000 user 0.480000 sys 0.000000 (median of 22)
after: wall 0.404163 comb 0.400000 user 0.400000 sys 0.000000 (median of 24)
#require serve
$ hg clone http://localhost:$HGPORT/ copy
abort: * (glob)
[255]
$ test -d copy
[1]
$ "$PYTHON" "$TESTDIR/dumbhttp.py" -p $HGPORT --pid dumb.pid
$ cat dumb.pid >> $DAEMON_PIDS
$ hg clone http://localhost:$HGPORT/foo copy2
abort: HTTP Error 404: * (glob)
[255]
$ killdaemons.py