push: move `incoming` into the push object
The fact that there is some unknown changes on remote one of the result of
discovery. It is then used by some push validation logic.
We move it in the object to be able to extract the said logic.
push: move changeset push logic in its own function
Now that every necessary information is held in the `pushoperation` object, we
can extract the logic pushing changeset to it's own function.
This changeset is pure code movement only.
push: move `remoteheads` into the push object
The heads of the remote repository are used to detect race when pushing
changeset. We now store this information in `pushoperation` object to allow
extraction of the changeset pushing part.
revset: added lazyset implementation to matching revset
Performance Benchmarking:
$ time hg log -qr "first(matching(0))"
0:
9117c6561b0b
real 0m2.213s
user 0m2.149s
sys 0m0.055s
$ time ./hg log -qr "first(matching(0))"
0:
9117c6561b0b
real 0m0.177s
user 0m0.137s
sys 0m0.038s
revset: added lazyset implementation to _matchfiles
Performance Benchmarking:
$ time hg log -qr "first(file(README))"
0:
9117c6561b0b
real 0m2.234s
user 0m2.180s
sys 0m0.044s
$ time ./hg log -qr "first(file(README))"
0:
9117c6561b0b
real 0m0.172s
user 0m0.129s
sys 0m0.042s
revset: added lazyset implementation to checkstatus
This improves the performance of the revsets 'adds' 'modifies' and 'removes'
Performance benchmarking:
$ time hg log -qr "first(adds(README))"
0:
9117c6561b0b
real 0m2.279s
user 0m2.222s
sys 0m0.053s
$ time ./hg log -qr "first(adds(README))"
0:
9117c6561b0b
real 0m0.172s
user 0m0.131s
sys 0m0.041s
$ time hg log -qr "first(modifies(README))"
1:
273ce12ad8f1
real 0m2.292s
user 0m2.227s
sys 0m0.061s
$ time ./hg log -qr "first(modifies(README))"
1:
273ce12ad8f1
real 0m0.178s
user 0m0.130s
sys 0m0.038s
$ time hg log -qr "first(removes(README))"
2379:
e90cff87f871
real 0m2.297s
user 0m2.235s
sys 0m0.058s
$ time ./hg log -qr "first(removes(README))"
2379:
e90cff87f871
real 0m0.975s
user 0m0.797s
sys 0m0.056s
revset: added lazyset implementation to public revset
Performance Benchmarking:
$ time hg log -qr "first(public())"
...
real 0m1.184s
user 0m1.051s
sys 0m0.130s
$ time ./hg log -qr "first(public())"
...
real 0m0.548s
user 0m0.427s
sys 0m0.118s
color: add debugcolor command (
issue4094)
This patch adds a debugcolor command that prints all
colors that the extension knows about.