Thu, 14 Oct 2021 16:06:31 +0200 dirstate-v2: Extend node flags to 16 bits
Simon Sapin <simon.sapin@octobus.net> [Thu, 14 Oct 2021 16:06:31 +0200] rev 48231
dirstate-v2: Extend node flags to 16 bits Only 7 out of 8 available bits are used right now. Reserve some more. Future versions of Mercurial may assign meaning to some of these bits, with the limitation that then-older versions will always reset those bits to unset when writing nodes. (A new node is written for any mutation in its subtree, leaving the bytes of the old node unreachable until the data file is rewritten entirely.) Differential Revision: https://phab.mercurial-scm.org/D11661
Thu, 14 Oct 2021 08:58:07 -0700 narrow: raise StateError when working copy is stale (for detailed exit code)
Martin von Zweigbergk <martinvonz@google.com> [Thu, 14 Oct 2021 08:58:07 -0700] rev 48230
narrow: raise StateError when working copy is stale (for detailed exit code) Differential Revision: https://phab.mercurial-scm.org/D11663
Thu, 14 Oct 2021 15:05:04 +0200 dirstate-v2: Use attributes as intended instead of properties in v2_data()
Simon Sapin <simon.sapin@octobus.net> [Thu, 14 Oct 2021 15:05:04 +0200] rev 48229
dirstate-v2: Use attributes as intended instead of properties in v2_data() The property return other integer values instead of None, so `is not None` does not work. This fixes test-dirstate-race.t in pure-Python mode, which currently fails on the default branch. Differential Revision: https://phab.mercurial-scm.org/D11660
Thu, 14 Oct 2021 13:59:18 +0200 dirstate: Remove unused variable
Simon Sapin <simon.sapin@octobus.net> [Thu, 14 Oct 2021 13:59:18 +0200] rev 48228
dirstate: Remove unused variable This fixes test-check-pyflakes.t which is currently failing on the default branch. Differential Revision: https://phab.mercurial-scm.org/D11658
Thu, 14 Oct 2021 13:58:25 +0200 rust: Reformat source code
Simon Sapin <simon.sapin@octobus.net> [Thu, 14 Oct 2021 13:58:25 +0200] rev 48227
rust: Reformat source code This fixes test-check-rust-format.t which is currently failing on the default branch. Differential Revision: https://phab.mercurial-scm.org/D11657
Thu, 14 Oct 2021 13:34:37 +0100 rhg: do not try to open a nodemap for an inline index
Arseniy Alekseyev <aalekseyev@janestreet.com> [Thu, 14 Oct 2021 13:34:37 +0100] rev 48226
rhg: do not try to open a nodemap for an inline index This saves an [open] system call per file, which is a small saving, but it showed up in the profile at large file counts (it accounted for 30ms out of 400ms needed for catting 10000 files, on a ZFS filesystem on Linux, so ~3us per syscall). Differential Revision: https://phab.mercurial-scm.org/D11659
Tue, 05 Oct 2021 15:10:42 +0100 rhg: stop manifest traversal when no more files are needed
Arseniy Alekseyev <aalekseyev@janestreet.com> [Tue, 05 Oct 2021 15:10:42 +0100] rev 48225
rhg: stop manifest traversal when no more files are needed Stopping the traversal early can skip a significant part of the manifest traversal, to avoid some of its cost. The worst-case benchmarks are favorable, as well. Running [hg cat] on the last file in the manifest of a large repo, I'm seeing a ~4ms improvement (150ms -> 146ms), so this time is now almost indistinguishable from the baseline ("brute force") implementation. Running [hg cat] on ~220 files together with the last file of the repo is further improved by ~5ms or so. I suspect the raw performance improvements are caused by splitting the manifest search and the file data access into separate phases, instead of interleaving them. Differential Revision: https://phab.mercurial-scm.org/D11616
Mon, 04 Oct 2021 19:06:45 +0100 rhg: faster hg cat when many files are requested
Arseniy Alekseyev <aalekseyev@janestreet.com> [Mon, 04 Oct 2021 19:06:45 +0100] rev 48224
rhg: faster hg cat when many files are requested With this patch I'm seeing a ~39ms improvement (220ms -> 181ms) when running [hg cat] on ~220 files in a ~260k-file repo. The timing for [hg cat] on an individual file becomes slightly worse (losing 5ms: 145ms -> 150ms). A follow-up commit is intended to improve that. Differential Revision: https://phab.mercurial-scm.org/D11615
Fri, 16 Jul 2021 18:42:20 +0200 dirstate-v2: Add support when Rust is not enabled
Simon Sapin <simon.sapin@octobus.net> [Fri, 16 Jul 2021 18:42:20 +0200] rev 48223
dirstate-v2: Add support when Rust is not enabled This wires into `dirstatemap` the parser and serializer added in previous changesets. The memory representation is still the same, with a flat `dict` for `DirstateItem`s and another one for copy sources. Serialization always creates a new dirstate-v2 data file and does not support (when Rust is not enabled) appending to an existing one, since we don’t keep track of which tree nodes are new or modified. Instead the tree is reconstructed during serialization. Differential Revision: https://phab.mercurial-scm.org/D11520
Thu, 22 Jul 2021 17:31:37 +0200 dirstate-v2: Initial Python serializer
Raphaël Gomès <rgomes@octobus.net> [Thu, 22 Jul 2021 17:31:37 +0200] rev 48222
dirstate-v2: Initial Python serializer This adds code seralizing a `map` and `copy_map` dicts into dirstate-v2 file formate. This is not used yet. Differential Revision: https://phab.mercurial-scm.org/D11519
Sun, 03 Oct 2021 13:18:03 +0200 dirstate-v2: initial Python parser
Simon Sapin <simon.sapin@octobus.net> [Sun, 03 Oct 2021 13:18:03 +0200] rev 48221
dirstate-v2: initial Python parser The dirstate-v2 file format should be supported even if Rust extensions are not enabled. This changeset adds parsing code that is not used yet. Differential Revision: https://phab.mercurial-scm.org/D11518
Fri, 08 Oct 2021 13:15:22 +0200 dirstate: Move more methods to the _dirstatemapcommon base class
Simon Sapin <simon.sapin@octobus.net> [Fri, 08 Oct 2021 13:15:22 +0200] rev 48220
dirstate: Move more methods to the _dirstatemapcommon base class This reduces duplication slightly and will help with supporting dirstate-v2 when Rust is not enabled. Differential Revision: https://phab.mercurial-scm.org/D11621
Wed, 13 Oct 2021 17:32:52 +0200 dirstate-v2: Add storage space for nanoseconds precision in file mtimes
Simon Sapin <simon.sapin@octobus.net> [Wed, 13 Oct 2021 17:32:52 +0200] rev 48219
dirstate-v2: Add storage space for nanoseconds precision in file mtimes For now the sub-second component is always set to zero for tracked files and symlinks. (The mtime of directories for the `readdir`-skipping optimization is a different code path and already uses the full precision available.) This extra storage uses the space previously freed by replacing the 32-bit `mode` field by two bits in the existing `flags` field, so the overall size of nodes is unchanged. (This space had been left as padding for this purpose.) Also move things around in the node layout and documentation to have less duplication. Now that they have the same representation, directory mtime and file mtime are kept in the same field. (Only either one can exist for a given node.) Differential Revision: https://phab.mercurial-scm.org/D11655
Wed, 13 Oct 2021 16:21:39 +0200 status: Extract TruncatedTimestamp from fs::Metadata without SystemTime
Simon Sapin <simon.sapin@octobus.net> [Wed, 13 Oct 2021 16:21:39 +0200] rev 48218
status: Extract TruncatedTimestamp from fs::Metadata without SystemTime On Unix, the Rust standard library exposes `mtime` and `mtime_nsec` methods for `std::fs::Metada` whih is exactly what we need to construct a `TruncatedTimestamp`. This skips the computation in the conversion through `SystemTime` and `Result<Duration, Duration>`. Differential Revision: https://phab.mercurial-scm.org/D11654
Fri, 17 Sep 2021 15:07:30 -0400 pyoxidizer: add the user site to `sys.path` on macOS
Matt Harbison <matt_harbison@yahoo.com> [Fri, 17 Sep 2021 15:07:30 -0400] rev 48217
pyoxidizer: add the user site to `sys.path` on macOS This allows 3rd party extensions that are installed with `pip` to be picked up, similar to what we do on Windows. PyOxidizer has a bug that prevents this from working without this extra help (see 95af358fcdfe), though it appears there's another wrinkle here with `sys._framework` too. I needed this to see if the problem[1] loading the keyring extension on Windows also occurs on macOS (it doesn't). [1] https://github.com/indygreg/PyOxidizer/issues/445 Differential Revision: https://phab.mercurial-scm.org/D11452
Fri, 17 Sep 2021 15:02:01 -0400 pyoxidizer: don't use in-memory for resources on macOS
Matt Harbison <matt_harbison@yahoo.com> [Fri, 17 Sep 2021 15:02:01 -0400] rev 48216
pyoxidizer: don't use in-memory for resources on macOS When trying to debug something else on macOS, pyoxidized builds were failing with the following message about pywatchman (and then cext.base85 when I commented out pywatchman): "cannot be loaded from memory but memory loading required" I don't have any immediate plans to do more work on macOS, but maybe this will save someone else time debugging this. Differential Revision: https://phab.mercurial-scm.org/D11451
Tue, 12 Oct 2021 14:12:41 -0700 chistedit: rename a confusingly named variable
Martin von Zweigbergk <martinvonz@google.com> [Tue, 12 Oct 2021 14:12:41 -0700] rev 48215
chistedit: rename a confusingly named variable I would expect `ctxs` contain instances of some class from the `context` module but it actually contains instances of `histeditrule`. Differential Revision: https://phab.mercurial-scm.org/D11653
Tue, 12 Oct 2021 14:28:51 -0700 chistedit: remove some local variable and access state on self instead
Martin von Zweigbergk <martinvonz@google.com> [Tue, 12 Oct 2021 14:28:51 -0700] rev 48214
chistedit: remove some local variable and access state on self instead Now that we've replaced the state dict by a class, some of the local variables that just do `foo = self.foo` seem unnecessary. Differential Revision: https://phab.mercurial-scm.org/D11652
Tue, 12 Oct 2021 09:41:11 -0700 chistedit: move changeview() onto state class
Martin von Zweigbergk <martinvonz@google.com> [Tue, 12 Oct 2021 09:41:11 -0700] rev 48213
chistedit: move changeview() onto state class Differential Revision: https://phab.mercurial-scm.org/D11649
Tue, 12 Oct 2021 09:38:04 -0700 chistedit: move cycleaction() onto state class
Martin von Zweigbergk <martinvonz@google.com> [Tue, 12 Oct 2021 09:38:04 -0700] rev 48212
chistedit: move cycleaction() onto state class Differential Revision: https://phab.mercurial-scm.org/D11648
Tue, 12 Oct 2021 09:22:29 -0700 chistedit: move changeaction() onto state class
Martin von Zweigbergk <martinvonz@google.com> [Tue, 12 Oct 2021 09:22:29 -0700] rev 48211
chistedit: move changeaction() onto state class Differential Revision: https://phab.mercurial-scm.org/D11647
Tue, 12 Oct 2021 09:20:46 -0700 chistedit: move swap() onto state class
Martin von Zweigbergk <martinvonz@google.com> [Tue, 12 Oct 2021 09:20:46 -0700] rev 48210
chistedit: move swap() onto state class Differential Revision: https://phab.mercurial-scm.org/D11646
Tue, 12 Oct 2021 09:17:59 -0700 chistedit: move makeselection() onto state class
Martin von Zweigbergk <martinvonz@google.com> [Tue, 12 Oct 2021 09:17:59 -0700] rev 48209
chistedit: move makeselection() onto state class Differential Revision: https://phab.mercurial-scm.org/D11645
Tue, 12 Oct 2021 09:16:14 -0700 chistedit: move changemode() onto state class
Martin von Zweigbergk <martinvonz@google.com> [Tue, 12 Oct 2021 09:16:14 -0700] rev 48208
chistedit: move changemode() onto state class Differential Revision: https://phab.mercurial-scm.org/D11644
Tue, 12 Oct 2021 09:00:51 -0700 chistedit: move movecursor() onto state class
Martin von Zweigbergk <martinvonz@google.com> [Tue, 12 Oct 2021 09:00:51 -0700] rev 48207
chistedit: move movecursor() onto state class Differential Revision: https://phab.mercurial-scm.org/D11643
Tue, 12 Oct 2021 08:56:56 -0700 chistedit: move patchcontents() onto state class
Martin von Zweigbergk <martinvonz@google.com> [Tue, 12 Oct 2021 08:56:56 -0700] rev 48206
chistedit: move patchcontents() onto state class Differential Revision: https://phab.mercurial-scm.org/D11642
Tue, 12 Oct 2021 08:55:19 -0700 chistedit: move event() onto state class
Martin von Zweigbergk <martinvonz@google.com> [Tue, 12 Oct 2021 08:55:19 -0700] rev 48205
chistedit: move event() onto state class Differential Revision: https://phab.mercurial-scm.org/D11641
Mon, 11 Oct 2021 23:07:54 -0700 chistedit: move renderpatch() and dependencies onto state class
Martin von Zweigbergk <martinvonz@google.com> [Mon, 11 Oct 2021 23:07:54 -0700] rev 48204
chistedit: move renderpatch() and dependencies onto state class Differential Revision: https://phab.mercurial-scm.org/D11640
Mon, 11 Oct 2021 23:04:29 -0700 chistedit: move renderrules() onto state class
Martin von Zweigbergk <martinvonz@google.com> [Mon, 11 Oct 2021 23:04:29 -0700] rev 48203
chistedit: move renderrules() onto state class Differential Revision: https://phab.mercurial-scm.org/D11639
Mon, 11 Oct 2021 23:02:49 -0700 chistedit: move layout() and dependencies onto state class
Martin von Zweigbergk <martinvonz@google.com> [Mon, 11 Oct 2021 23:02:49 -0700] rev 48202
chistedit: move layout() and dependencies onto state class Differential Revision: https://phab.mercurial-scm.org/D11638
(0) -30000 -10000 -3000 -1000 -300 -100 -50 -30 +30 +50 +100 +300 +1000 +3000 tip