Arseniy Alekseyev <aalekseyev@janestreet.com> [Fri, 06 Jan 2023 16:42:24 +0000] rev 49981
pathutil: use `finddirs_rev_noroot` instead of `parts`
The benefit this brings is very tiny, if it's even there,
since we still didn't get rid of the [parts] computation.
It probably won't be worth it without the subsequent patch
that adds one more use of [finddirs_rev_noroot]
Arseniy Alekseyev <aalekseyev@janestreet.com> [Fri, 06 Jan 2023 17:29:42 +0000] rev 49980
pathutil: add the more efficient finddir iterator
(to be used in subsequent commits)
Arseniy Alekseyev <aalekseyev@janestreet.com> [Mon, 16 Jan 2023 12:10:20 +0000] rev 49979
typing: import unconditionally
This is needed if we're writing python3 signatures.
Anton Shestakov <av6@dwimlabs.net> [Wed, 11 Jan 2023 17:51:04 +0400] rev 49978
tests: check how hgweb handles HEAD requests
This test file is loosely based on test-hgweb.t.
HEAD support originally implemented in fda5a4b853ab.
Anton Shestakov <av6@dwimlabs.net> [Sun, 08 Jan 2023 16:19:10 +0400] rev 49977
tests: test hg status --all with hgext/git
There's a TODO item in git/dirstate.py about obtaining clean files in a more
straightforward way, let's first test that status can and does show clean files
at all.
Anton Shestakov <av6@dwimlabs.net> [Fri, 06 Jan 2023 17:51:55 +0400] rev 49976
tests: aborting on unknown revision emits exit code 10 even with hgext/git
Arseniy Alekseyev <aalekseyev@janestreet.com> [Fri, 06 Jan 2023 15:17:14 +0000] rev 49975
worker: avoid reading 1 byte at a time from the OS pipe
Apparently `pickle.load` does a lot of small reads, many of them
literally 1-byte, so it benefits greatly from buffering.
This change enables the buffering, at the cost of more complicated
interaction with the `selector` API.
On one repository with ~400k files this reduces the time by about ~30s,
from ~60 to ~30s. The difference is so large because the actual updating
work is parallellized, while these small reads are bottlenecking the
central hg process.
Matt Harbison <matt_harbison@yahoo.com> [Tue, 10 Jan 2023 12:55:49 -0500] rev 49974
diffutil: rewrite an ersatz ternary operator for building diffopts.text
Pytype tends to get confused by these, but the real problem here is that if the
caller passes `opts={}` as TortoiseHg has been doing, that is set as the value
for `diffopts.text` when in reality it expects a boolean. When `None` is passed
explicitly, the default value in `mdiff.defaultopts` is assigned.
Matt Harbison <matt_harbison@yahoo.com> [Mon, 09 Jan 2023 14:34:19 -0500] rev 49973
mdiff: add a __str__ method to diffopts
This makes it easier to debug by just formatting the object into `%s` to see the
members and state, instead of the class and memory address.
Matt Harbison <matt_harbison@yahoo.com> [Fri, 06 Jan 2023 11:38:13 -0500] rev 49972
debugshell: allow TortoiseHg builds to exit with the usual `quit()` command
I've long been annoyed that `quit()` only randomly worked to exit the
interpreter. When that happens, Ctrl+C doesn't work either (it simply prints
"KeyboardInterrupt"), so then you have to `import sys` and `sys.exit()`. But it
turns out that the behavior isn't random and it depended on which `hg.exe` was
picked up on PATH first, because py2exe disables site initialization.
I wasn't able to persuade the maintainer to allow an opt-in to
initialization[1], but this works around it so that the behavior is now
consistent however `hg.exe` is built. TortoiseHg 6.3.3 will be the first build
that includes the site package, so handle the ImportError.
[1] https://github.com/py2exe/py2exe/issues/154