hg-core: add basic config module
The config module exposes a `Config` struct, unused for now.
It only reads the config file local to the repository, but handles all valid
patterns and includes/unsets.
It is structured in layers instead of erasing by reverse order of precedence,
allowing us to transparently know more about the config for debugging purposes,
and potentially other things I haven't thought about yet.
This change also introduces `format_bytes!` to `hg-core`.
Differential Revision: https://phab.mercurial-scm.org/D9408
#require no-pure
A script to generate nasty diff worst-case scenarios:
$ cat > s.py <<EOF
> import random
> for x in range(100000):
> print
> if random.randint(0, 100) >= 50:
> x += 1
> print(hex(x))
> EOF
$ hg init a
$ cd a
Check in a big file:
$ "$PYTHON" ../s.py > a
$ hg ci -qAm0
Modify it:
$ "$PYTHON" ../s.py > a
Time a check-in, should never take more than 10 seconds user time:
$ hg ci --time -m1 --config worker.enabled=no
time: real .* secs .user [0-9][.].* sys .* (re)