Arseniy Alekseyev <aalekseyev@janestreet.com> [Wed, 04 Jan 2023 19:30:47 +0000] rev 49910
merge: avoid dereferencing repo fields repeatedly
Arseniy Alekseyev <aalekseyev@janestreet.com> [Fri, 06 Jan 2023 18:09:19 +0000] rev 49909
merge: skip syntactic path checks in [_checkunknownfile]
We don't need to check the paths syntactically, since they are coming from
diffing the revisions, so hopefully already checked on the way in.
We still need to check what's on the filesystem, to avoid traversing the
symlinks or subdirs, which we can't know about statically.
Also, we use the directory audit to elide [isfileorlink],
this removing ~all lstat calls from hg updates from-empty.
Arseniy Alekseyev <aalekseyev@janestreet.com> [Fri, 06 Jan 2023 16:42:24 +0000] rev 49908
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 49907
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 49906
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 49905
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 49904
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 49903
tests: aborting on unknown revision emits exit code 10 even with hgext/git
Anton Shestakov <av6@dwimlabs.net> [Fri, 13 Jan 2023 17:33:03 +0400] rev 49902
convert: replace repr() by pycompat.byterepr() in cvsps.py (
issue6789)
Anton Shestakov <av6@dwimlabs.net> [Fri, 13 Jan 2023 00:56:37 +0400] rev 49901
convert: change socket mode from b'r+' to 'rwb' in cvs.py (
issue6789)
'r+' mode used to open sockets for read/write operations, but '+' is not
supported in Python 3. We're using bytes with these sockets everywhere, so the
mode should have 'b'. But the mode argument has to be str, not bytes.
Anton Shestakov <av6@dwimlabs.net> [Thu, 12 Jan 2023 19:59:01 +0400] rev 49900
convert: turn the last str regex into bytes in cvs.py (
issue6789)
Since root is bytes, the regular expression should also be bytes.
Arseniy Alekseyev <aalekseyev@janestreet.com> [Fri, 06 Jan 2023 15:17:14 +0000] rev 49899
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.