rust-matchers: implement DifferenceMatcher
This can be generated by the sparse matcher.
rhg: support "!" syntax for disabling extensions
This makes it so that calls in test-log.t do not fall back immediately because
of the disabled extension, instead going through the CLI parsing code, which
breaks because of invalid UTF-8 in a flag.
I *think* clap 3.x+ supports this? I'm not sure, and we have to upgrade the
minimum Rust version to use clap 3.x anyway which is out of scope for this
series, so let's just kick that can down the road a little bit.
revlog: finer computation of "issnapshot"
If the parent had an empty diff, we skip of it to compute a diff against the
parent base. This create shorter and simpler chain.
However these case could be wrongly detected as snapshot. So we improve the code
doing this detection.
In practice nobody care as when tried on a copy of mozilla-try and we got the
same number of snapshot (1315) in both case.
Performance where equivalent.
perf: make perf::bundle compatible down to 5.2
A another small change to make it compatible with a wider set of revision.
I did not check compatibility in the python-2 territory yet.
perf: make perf::bundle compatible before
61ba04693d65
A small change to make it compatible with a wider set of revision.