Sat, 13 Mar 2021 00:40:46 -0500 typing: disable module attribute warnings for properly conditionalized code stable
Matt Harbison <matt_harbison@yahoo.com> [Sat, 13 Mar 2021 00:40:46 -0500] rev 46786
typing: disable module attribute warnings for properly conditionalized code Differential Revision: https://phab.mercurial-scm.org/D10208
Sat, 13 Mar 2021 00:38:59 -0500 typing: disable import error warnings that are already handled stable
Matt Harbison <matt_harbison@yahoo.com> [Sat, 13 Mar 2021 00:38:59 -0500] rev 46785
typing: disable import error warnings that are already handled I'm assuming that the cffi ones are handled somewhere, but the others definitely are. Differential Revision: https://phab.mercurial-scm.org/D10207
Fri, 12 Mar 2021 17:22:35 -0500 typing: disable a few errors when accessing Windows specific attributes stable
Matt Harbison <matt_harbison@yahoo.com> [Fri, 12 Mar 2021 17:22:35 -0500] rev 46784
typing: disable a few errors when accessing Windows specific attributes This is already guarded with conditionals. The entire win32 module is conditionally loaded. File "/mnt/c/Users/Matt/hg/mercurial/utils/procutil.py", line 162, in <module>: No attribute 'winstdout' on module 'mercurial.posix' [module-attr] File "/mnt/c/Users/Matt/hg/mercurial/utils/procutil.py", line 163, in <module>: No attribute 'winstdout' on module 'mercurial.posix' [module-attr] File "/mnt/c/Users/Matt/hg/mercurial/utils/procutil.py", line 174, in <module>: No attribute 'winstdout' on module 'mercurial.posix' [module-attr] File "/mnt/c/Users/Matt/hg/mercurial/utils/procutil.py", line 175, in <module>: No attribute 'winstdout' on module 'mercurial.posix' [module-attr] Differential Revision: https://phab.mercurial-scm.org/D10206
Fri, 12 Mar 2021 16:55:18 -0500 typing: disable a few errors calling py3.7+ functions in resourceutil.py stable
Matt Harbison <matt_harbison@yahoo.com> [Fri, 12 Mar 2021 16:55:18 -0500] rev 46783
typing: disable a few errors calling py3.7+ functions in resourceutil.py There's a graceful fallback when these methods are unavailable. Differential Revision: https://phab.mercurial-scm.org/D10205
Tue, 02 Mar 2021 00:05:22 +0100 test-copies: add a test updating file content while merging a pure overwrite
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 02 Mar 2021 00:05:22 +0100] rev 46782
test-copies: add a test updating file content while merging a pure overwrite As the current test misbehavior show, this confuse various part of the code: - the committed file is different depending of the commit source, - the upgrade code compute the wrong information on this changeset. This will be fixed in upcoming patches. Differential Revision: https://phab.mercurial-scm.org/D10087
Wed, 10 Mar 2021 13:08:41 +0530 mergestate: don't pop stateextras when there are no conflicts on filemerge
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 10 Mar 2021 13:08:41 +0530] rev 46781
mergestate: don't pop stateextras when there are no conflicts on filemerge Even if `filemerge.filemerge()` didn't result in conflicts, we should not remove stateextras for a file since we now use that for more things than just merge time information. We use stateextras to store information which is required to be used by commit. I tracked this down while finding why a patch of mine which adds more commit related information does not work as expected and looses the extras in mergestate. Differential Revision: https://phab.mercurial-scm.org/D10148
Wed, 13 Jan 2021 16:14:58 +0100 node: introduce nodeconstants class
Joerg Sonnenberger <joerg@bec.de> [Wed, 13 Jan 2021 16:14:58 +0100] rev 46780
node: introduce nodeconstants class In preparing for moving from SHA1 hashes to a modern hash function, place nullid and other constant magic vules in a class. Provide the active set of constants in the repository and push it down. Provide nullid directly in strategic places like the repository as it is accessed very often. This changeset introduces the API change, but not the mechanical replacement of the node.py attributes itself. Differential Revision: https://phab.mercurial-scm.org/D9750
Wed, 10 Mar 2021 18:09:21 +0100 revlog: guarantee that p1 != null if a non-null parent exists
Joerg Sonnenberger <joerg@bec.de> [Wed, 10 Mar 2021 18:09:21 +0100] rev 46779
revlog: guarantee that p1 != null if a non-null parent exists This change does not affect the hashing (which already did this transformation), but can change the log output in the rare case where this behavior was observed in repositories. The change can simplify iteration code where regular changesets and merges are distinct branches. Differential Revision: https://phab.mercurial-scm.org/D10150
Wed, 10 Mar 2021 05:50:20 +0100 push: allow to specify multiple destinations
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 10 Mar 2021 05:50:20 +0100] rev 46778
push: allow to specify multiple destinations I end up needing that on a regular basis and it turn out to be very simple to implement. See documentation and test for details. Differential Revision: https://phab.mercurial-scm.org/D10161
Wed, 17 Mar 2021 15:20:45 +0100 push: indent the some part of the command
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 17 Mar 2021 15:20:45 +0100] rev 46777
push: indent the some part of the command That code will be put in a loop in the next changeset, pre-indenting make the next change clearer. Differential Revision: https://phab.mercurial-scm.org/D10160
Sun, 08 Nov 2020 20:17:09 +0100 bundle: optional multithreaded compression, ATM zstd-only
Joerg Sonnenberger <joerg@bec.de> [Sun, 08 Nov 2020 20:17:09 +0100] rev 46776
bundle: optional multithreaded compression, ATM zstd-only Compression type can be a huge chunk of "hg bundle", especially when using the higher compression levels. With level=22 and threads=7, the NetBSD test repository took 28:39 wall time and 157:47 user time. Before, level=22 would take 129:20 wall time and 129:07 user time. Differential Revision: https://phab.mercurial-scm.org/D9283
Sat, 13 Mar 2021 08:59:03 +0100 rust: Preallocate the returned `Vec` in `utils::files::relativize_path`
Simon Sapin <simon.sapin@octobus.net> [Sat, 13 Mar 2021 08:59:03 +0100] rev 46775
rust: Preallocate the returned `Vec` in `utils::files::relativize_path` Profiling `rhg files > /dev/null` on an old snapshot of mozilla-central (with `perf` and the Firefox Profiler: https://github.com/firefox-devtools/profiler/blob/main/docs-user/guide-perf-profiling.md) showed non-trivial time spend in this function and in `realloc`. This change makes the wall-clock time for that process on my machine go from ~190 ms to ~150 ms. Differential Revision: https://phab.mercurial-scm.org/D10199
Tue, 01 Dec 2020 12:59:33 -0500 black: merge config into main pyproject.toml now that we have it
Augie Fackler <augie@google.com> [Tue, 01 Dec 2020 12:59:33 -0500] rev 46774
black: merge config into main pyproject.toml now that we have it This means that naive contributors who just run `black` on a source file will get reasonable behavior as long as they have a recent black. Yay! This was previously D9834 but was rolled back due to test failures. nbjoerg thinks it's time to try again, so let's give it a shot. Differential Revision: https://phab.mercurial-scm.org/D10185
Tue, 01 Dec 2020 12:52:04 -0500 pyproject: add config file
Augie Fackler <augie@google.com> [Tue, 01 Dec 2020 12:52:04 -0500] rev 46773
pyproject: add config file This will tell pip et al to call our setup.py for the majority of packaging concerns, but also gives us a place to put standard config stuff like black. This was previously D9833, but was rolled back due to test breakage. nbjoerg thinks that breakage is now resolved, so we're trying again. Differential Revision: https://phab.mercurial-scm.org/D10184
Tue, 16 Mar 2021 12:52:23 +0100 perf-util: add an helper revset to use the same spec as the case search script
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 16 Mar 2021 12:52:23 +0100] rev 46772
perf-util: add an helper revset to use the same spec as the case search script This make result of the searcher script easier to use. Differential Revision: https://phab.mercurial-scm.org/D10228
Mon, 15 Mar 2021 18:01:42 +0100 perf-helpers: add a search-discovery-case script
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 Mar 2021 18:01:42 +0100] rev 46771
perf-helpers: add a search-discovery-case script This a small script I built to look for interesting discovery case. It is fairly basic but could be useful in various situation so lets put it in the main repositories. Differential Revision: https://phab.mercurial-scm.org/D10225
Tue, 16 Mar 2021 09:41:01 +0100 debugdiscovery: add missing byte string marker to some help text
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 16 Mar 2021 09:41:01 +0100] rev 46770
debugdiscovery: add missing byte string marker to some help text This is causing crash when using --help. Differential Revision: https://phab.mercurial-scm.org/D10227
Mon, 15 Mar 2021 17:09:42 +0100 debugdiscovery: also integrate the discovery output in the json one
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 Mar 2021 17:09:42 +0100] rev 46769
debugdiscovery: also integrate the discovery output in the json one We add a way for formatter to informs code that free output is unwanted, and we incorporate it in the json output. Differential Revision: https://phab.mercurial-scm.org/D10224
Mon, 15 Mar 2021 16:55:03 +0100 debugdiscovery: add support for Json output
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 Mar 2021 16:55:03 +0100] rev 46768
debugdiscovery: add support for Json output They are some pre-output that will be impractical, I'll take care of it in the next changeset. Differential Revision: https://phab.mercurial-scm.org/D10223
Mon, 15 Mar 2021 16:37:11 +0100 perf-helper: add a new sampling revset based on anti-chain
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 Mar 2021 16:37:11 +0100] rev 46767
perf-helper: add a new sampling revset based on anti-chain See inline documentation for details. Differential Revision: https://phab.mercurial-scm.org/D10222
Mon, 15 Mar 2021 16:35:54 +0100 perf-helper: add a small extension with revsets to select repository subset
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 Mar 2021 16:35:54 +0100] rev 46766
perf-helper: add a small extension with revsets to select repository subset Playing with discovery requires building interesting case. To do this we need revsets to try to generate them. We start with a quite simple one. See documentation for details. Differential Revision: https://phab.mercurial-scm.org/D10221
Tue, 26 Feb 2019 15:54:20 -0800 amend: mark commit obsolete after moving working copy
Martin von Zweigbergk <martinvonz@google.com> [Tue, 26 Feb 2019 15:54:20 -0800] rev 46765
amend: mark commit obsolete after moving working copy We were doing it this way: 1. move working copy (repo.setparents) 2. add obsmarkers (scmutil.cleanupnodes) 3. fix dirstate (dirstate.normal/drop) Step 1 and 3 are closely related, so let's move them together. It seems safest to create the obsmarkers last. This patch thus makes the order 1, 3, 2. Differential Revision: https://phab.mercurial-scm.org/D10197
Wed, 10 Mar 2021 06:03:01 +0100 pull: allow to specify multiple sources
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 10 Mar 2021 06:03:01 +0100] rev 46764
pull: allow to specify multiple sources I end up needing that on a regular basis and it turn out to be very simple to implement. See documentation and test for details. Differential Revision: https://phab.mercurial-scm.org/D10159
Wed, 10 Mar 2021 06:03:55 +0100 pull: pre-indent a part of the function
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 10 Mar 2021 06:03:55 +0100] rev 46763
pull: pre-indent a part of the function We are about to run it in a loop, so lets pre-indent it to clarify the actual change in the next changesets. Differential Revision: https://phab.mercurial-scm.org/D10158
Wed, 10 Mar 2021 05:54:27 +0100 command: clarify `postincoming` return and that return handling
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 10 Mar 2021 05:54:27 +0100] rev 46762
command: clarify `postincoming` return and that return handling The command should return None or a return code. The previous code was returning boolean directly relying on the fact that `True → 1` and `False → 0`. This is a good road to troubles, so lets be explicit about that return. Differential Revision: https://phab.mercurial-scm.org/D10157
Wed, 10 Mar 2021 05:54:02 +0100 hg: make `clean` return consistent with the `update` function
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 10 Mar 2021 05:54:02 +0100] rev 46761
hg: make `clean` return consistent with the `update` function The function return a boolean and is used as such. Lets be explicit about it. Differential Revision: https://phab.mercurial-scm.org/D10156
Wed, 10 Mar 2021 16:28:46 +0100 tests: rename `test-pull` to `test-pull-network.t`
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 10 Mar 2021 16:28:46 +0100] rev 46760
tests: rename `test-pull` to `test-pull-network.t` If is mostly about ssh and http interaction so lets avoid confusion with a generic `hg pull` test Differential Revision: https://phab.mercurial-scm.org/D10155
Wed, 10 Mar 2021 16:35:17 +0100 tests: move a test about update in test-pull-update.t
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 10 Mar 2021 16:35:17 +0100] rev 46759
tests: move a test about update in test-pull-update.t Differential Revision: https://phab.mercurial-scm.org/D10154
Fri, 12 Mar 2021 09:15:40 -0800 split: close transaction in the unlikely event of a conflict while rebasing
Martin von Zweigbergk <martinvonz@google.com> [Fri, 12 Mar 2021 09:15:40 -0800] rev 46758
split: close transaction in the unlikely event of a conflict while rebasing `hg split` *should* never result in conflicts, but in case there are bugs, we should at least commit the transaction so they can continue the rebase. One of our users ran into the regression fixed by D10120. They fixed the conflict and the tried to continue the rebase, but it failed with "abort: cannot continue inconsistent rebase" because the rebase state referred to commits written in a transaction that was never committed. Side note: `hg split` should probably turn off copy tracing to reduce the impact of such bugs, and to speed it up as well. Copies made in the rebased commits should still be respected because `hg rebase` calls `copies.graftcopies()`. Differential Revision: https://phab.mercurial-scm.org/D10164
Mon, 15 Mar 2021 13:05:00 +0100 rust-status: fix issue6456 for the Rust implementation also
Raphaël Gomès <rgomes@octobus.net> [Mon, 15 Mar 2021 13:05:00 +0100] rev 46757
rust-status: fix issue6456 for the Rust implementation also This implementation is being used by a few people now, so we need it fixed, even though a big rewrite will be coming quite soon. Differential Revision: https://phab.mercurial-scm.org/D10217
Tue, 16 Mar 2021 00:07:12 +0100 README: document requirement for builtin zstd
Joerg Sonnenberger <joerg@bec.de> [Tue, 16 Mar 2021 00:07:12 +0100] rev 46756
README: document requirement for builtin zstd Differential Revision: https://phab.mercurial-scm.org/D10226
Mon, 08 Mar 2021 21:04:51 +0100 ci: Add a job testing with rhg installed as `hg`
Simon Sapin <simon.sapin@octobus.net> [Mon, 08 Mar 2021 21:04:51 +0100] rev 46755
ci: Add a job testing with rhg installed as `hg` This significantly increases test coverage of rhg, without duplicating many tests that already exist. The `cargo build` command being remove only compiled a `rhg` executable (as shown by the preceding `cd` command) but since a previous patch `run-tests.py --rhg` now takes care of that. Differential Revision: https://phab.mercurial-scm.org/D10196
Wed, 10 Mar 2021 13:54:46 +0100 run-test: install rhg if --rhg is passed
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 10 Mar 2021 13:54:46 +0100] rev 46754
run-test: install rhg if --rhg is passed Before this, --rhg was only working with --local. Differential Revision: https://phab.mercurial-scm.org/D10195
Wed, 10 Mar 2021 13:54:13 +0100 makefile: add a install option
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 10 Mar 2021 13:54:13 +0100] rev 46753
makefile: add a install option This gives and easy way to install rhg that we can use in `run-test.py` in the next changesets. Differential Revision: https://phab.mercurial-scm.org/D10194
Wed, 10 Mar 2021 13:54:00 +0100 makefile: add a build-rhg option
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 10 Mar 2021 13:54:00 +0100] rev 46752
makefile: add a build-rhg option This gives an easy action to build the rhg-binary. This will be useful for the `install-rhg` action in the next changeset. Differential Revision: https://phab.mercurial-scm.org/D10193
Wed, 10 Mar 2021 13:53:47 +0100 makefile: add a install-chg option
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 10 Mar 2021 13:53:47 +0100] rev 46751
makefile: add a install-chg option This is done as a gratuitous improvement on the way to add makefile entry to build and install rhg. It seems saner to have equivalent entry for chg too. Differential Revision: https://phab.mercurial-scm.org/D10192
Wed, 10 Mar 2021 13:53:31 +0100 makefile: add a build-chg option
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 10 Mar 2021 13:53:31 +0100] rev 46750
makefile: add a build-chg option This is done as a gratuitous improvement on the way to add makefile entry to build and install rhg. It seems saner to have equivalent entry for chg too. Differential Revision: https://phab.mercurial-scm.org/D10191
Fri, 12 Mar 2021 23:04:56 +0100 tests: Disable for rhg remaining tests that fail in that mode
Simon Sapin <simon.sapin@octobus.net> [Fri, 12 Mar 2021 23:04:56 +0100] rev 46749
tests: Disable for rhg remaining tests that fail in that mode These cases are in features not yet implemented by rhg for which triggering a fallback is not practical. Disabling some tests allows us to reach passing CI and catch any future regression in the rest of the tests. Differential Revision: https://phab.mercurial-scm.org/D10190
Fri, 12 Mar 2021 21:44:07 +0100 rhg: Remove `rhg.fallback-executable=hg` default configuration
Simon Sapin <simon.sapin@octobus.net> [Fri, 12 Mar 2021 21:44:07 +0100] rev 46748
rhg: Remove `rhg.fallback-executable=hg` default configuration When `rhg.on-unsupported` is configured to `fallback` and an unsupported feature is encountered, the previous default was to look for an `hg` executable in `$PATH`. This default was fragile since it was easy to end up accidentally using an older version of Mercurial installed system-wide, when a local (perhaps patched) installation was intended. Instead, it is now an error to have `rhg.on-unsupported=fallback` without also configuring an explicit path or the fallback executable. Differential Revision: https://phab.mercurial-scm.org/D10189
Tue, 09 Mar 2021 09:17:24 +0100 rhg: Return an error code for `rhg config Section.idontexist`
Simon Sapin <simon.sapin@octobus.net> [Tue, 09 Mar 2021 09:17:24 +0100] rev 46747
rhg: Return an error code for `rhg config Section.idontexist` This is what Python-based hg does. Differential Revision: https://phab.mercurial-scm.org/D10145
Mon, 08 Mar 2021 20:04:20 +0100 rhg: Fall back to Python for --version
Simon Sapin <simon.sapin@octobus.net> [Mon, 08 Mar 2021 20:04:20 +0100] rev 46746
rhg: Fall back to Python for --version Clap has some built-in support for printing something on --version, but it looks different than what Pytho-based hg does. Also, at the moment we’re not giving version numbers to rhg separate from the Mercurial version. Differential Revision: https://phab.mercurial-scm.org/D10144
Mon, 08 Mar 2021 19:25:33 +0100 rhg: Exit with an error code if `files` finds nothing
Simon Sapin <simon.sapin@octobus.net> [Mon, 08 Mar 2021 19:25:33 +0100] rev 46745
rhg: Exit with an error code if `files` finds nothing This matches the behavior of Python-based hg. Differential Revision: https://phab.mercurial-scm.org/D10143
Wed, 03 Mar 2021 16:40:03 +0100 rhg: `cat` command: print error messages for missing files
Simon Sapin <simon.sapin@octobus.net> [Wed, 03 Mar 2021 16:40:03 +0100] rev 46744
rhg: `cat` command: print error messages for missing files And exit with an error code if no file was matched. This matches the behavior of Python-based hg. Differential Revision: https://phab.mercurial-scm.org/D10142
Mon, 08 Mar 2021 19:07:29 +0100 rhg: Silently ignore missing files in config %include
Simon Sapin <simon.sapin@octobus.net> [Mon, 08 Mar 2021 19:07:29 +0100] rev 46743
rhg: Silently ignore missing files in config %include … instead of aborting with an error message. This is what Python-based hg does. Differential Revision: https://phab.mercurial-scm.org/D10141
Mon, 08 Mar 2021 15:35:32 +0100 rhg: Add support for environment variables in config include paths
Simon Sapin <simon.sapin@octobus.net> [Mon, 08 Mar 2021 15:35:32 +0100] rev 46742
rhg: Add support for environment variables in config include paths Some tests rely on this. Differential Revision: https://phab.mercurial-scm.org/D10140
Mon, 08 Mar 2021 08:55:48 +0100 rhg: Add support for the HGRCSKIPREPO environment variable
Simon Sapin <simon.sapin@octobus.net> [Mon, 08 Mar 2021 08:55:48 +0100] rev 46741
rhg: Add support for the HGRCSKIPREPO environment variable It’s easy enough and affects tests, well, that test that feature. Differential Revision: https://phab.mercurial-scm.org/D10139
Mon, 08 Mar 2021 08:35:43 +0100 rhg: Don’t make repository path absolute too early
Simon Sapin <simon.sapin@octobus.net> [Mon, 08 Mar 2021 08:35:43 +0100] rev 46740
rhg: Don’t make repository path absolute too early Some error messages want to include a relative path, which affects the output of some tests. Differential Revision: https://phab.mercurial-scm.org/D10138
Fri, 05 Mar 2021 13:28:49 +0100 rhg: Fall back to Python if ui.relative-paths is configured
Simon Sapin <simon.sapin@octobus.net> [Fri, 05 Mar 2021 13:28:49 +0100] rev 46739
rhg: Fall back to Python if ui.relative-paths is configured This feature is not supported yet, and affects the output of some tests. Differential Revision: https://phab.mercurial-scm.org/D10137
Mon, 08 Mar 2021 17:32:22 +0100 tests: clarify some missing output in test-merge-subrepos
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 08 Mar 2021 17:32:22 +0100] rev 46738
tests: clarify some missing output in test-merge-subrepos This makes the test behavior clearer, especially, why the output are inconsistent. Differential Revision: https://phab.mercurial-scm.org/D10136
Fri, 05 Mar 2021 11:39:21 +0100 tests: Adapt expected output for minor differences with rhg
Simon Sapin <simon.sapin@octobus.net> [Fri, 05 Mar 2021 11:39:21 +0100] rev 46737
tests: Adapt expected output for minor differences with rhg Differential Revision: https://phab.mercurial-scm.org/D10135
Fri, 05 Mar 2021 11:21:15 +0100 rhg: Add support for --cwd
Simon Sapin <simon.sapin@octobus.net> [Fri, 05 Mar 2021 11:21:15 +0100] rev 46736
rhg: Add support for --cwd This affect the meaning of relative paths in `--repository`, which are resolved "early" by rhg in order to load config which is needed before fallback to Python is considered. An incorrect path could cause errors when loading a non-existent repo, leading to failing tests even when fallback is enabled. Differential Revision: https://phab.mercurial-scm.org/D10134
Thu, 04 Mar 2021 13:30:20 +0100 rhg: Align with Python on some more error messages
Simon Sapin <simon.sapin@octobus.net> [Thu, 04 Mar 2021 13:30:20 +0100] rev 46735
rhg: Align with Python on some more error messages Differences can cause some tests to fail Differential Revision: https://phab.mercurial-scm.org/D10133
Fri, 12 Mar 2021 22:38:40 +0100 rhg: Add an allow-list of ignored extensions
Simon Sapin <simon.sapin@octobus.net> [Fri, 12 Mar 2021 22:38:40 +0100] rev 46734
rhg: Add an allow-list of ignored extensions Because rhg doesn’t know how a Python extension would affect behavior it implements in Rust, when an unsupported extension is enabled it conservatively falls back to Python-based hg. However many users will have unsupported extensions enabled in practice. Maybe they don’t actually affect rhg behavior, but we don’t know. This adds a `rhg.ignored-extensions` configuration that lets users list extensions that rhg can safely ignore and proceed even if they’re not supported in Rust. Differential Revision: https://phab.mercurial-scm.org/D10188
Thu, 04 Mar 2021 10:58:43 +0100 rhg: Fall back to Python if unsupported extensions are enabled
Simon Sapin <simon.sapin@octobus.net> [Thu, 04 Mar 2021 10:58:43 +0100] rev 46733
rhg: Fall back to Python if unsupported extensions are enabled Extensions might affect behavior in ways we can’t anticipate, so just ignoring them is not correct. Later we’ll add opt-in configuration to ignore specific extensions. Differential Revision: https://phab.mercurial-scm.org/D10112
Wed, 03 Mar 2021 20:02:07 +0100 rhg: Sort config files when adding a directory
Simon Sapin <simon.sapin@octobus.net> [Wed, 03 Mar 2021 20:02:07 +0100] rev 46732
rhg: Sort config files when adding a directory For example in `/etc/mercurial/hgrc.d/` or with `HGRCPATH=some-directory`. Previously files where parsed in the order returned by the filesystem, which is undefined. But order is significant when multiple files define the same configuration key: the "last" one wins. Differential Revision: https://phab.mercurial-scm.org/D10111
Wed, 03 Mar 2021 19:47:48 +0100 rhg: Align config file parse error formatting with Python
Simon Sapin <simon.sapin@octobus.net> [Wed, 03 Mar 2021 19:47:48 +0100] rev 46731
rhg: Align config file parse error formatting with Python Differences can cause tests to fail Differential Revision: https://phab.mercurial-scm.org/D10110
Wed, 03 Mar 2021 19:08:27 +0100 rhg: Fall back to Python for bundle repositories
Simon Sapin <simon.sapin@octobus.net> [Wed, 03 Mar 2021 19:08:27 +0100] rev 46730
rhg: Fall back to Python for bundle repositories rhg does not support bundles at all, yet. Differential Revision: https://phab.mercurial-scm.org/D10102
Wed, 03 Mar 2021 19:02:06 +0100 rhg: Fall back to Python on --repository with an URL
Simon Sapin <simon.sapin@octobus.net> [Wed, 03 Mar 2021 19:02:06 +0100] rev 46729
rhg: Fall back to Python on --repository with an URL A low-hanging fruit to improve on this would be to properly parse and handle `file:` URLs. But other Python-based hg supports some other URL schemes for features that rhg does not support yet. Differential Revision: https://phab.mercurial-scm.org/D10101
Wed, 03 Mar 2021 18:43:05 +0100 rhg: Print non-absolutized path in "repository {} not found" errors
Simon Sapin <simon.sapin@octobus.net> [Wed, 03 Mar 2021 18:43:05 +0100] rev 46728
rhg: Print non-absolutized path in "repository {} not found" errors … like Python does. Differences in ouput can cause tests to fail. Differential Revision: https://phab.mercurial-scm.org/D10100
Wed, 03 Mar 2021 18:40:17 +0100 rhg: Align "malformed --config" error message with Python
Simon Sapin <simon.sapin@octobus.net> [Wed, 03 Mar 2021 18:40:17 +0100] rev 46727
rhg: Align "malformed --config" error message with Python Differences in error message formatting can cause tests to fail. Differential Revision: https://phab.mercurial-scm.org/D10099
Wed, 03 Mar 2021 18:38:22 +0100 rhg: Fall back to Python on unsupported `rhg config <section>`
Simon Sapin <simon.sapin@octobus.net> [Wed, 03 Mar 2021 18:38:22 +0100] rev 46726
rhg: Fall back to Python on unsupported `rhg config <section>` Printing an entire section (as opposed to a single value with `rhg config foo.bar`) is not supported yet in Rust only. Differential Revision: https://phab.mercurial-scm.org/D10098
Tue, 02 Mar 2021 23:18:23 +0100 rhg: Fall back to Python for unsupported revset syntax
Simon Sapin <simon.sapin@octobus.net> [Tue, 02 Mar 2021 23:18:23 +0100] rev 46725
rhg: Fall back to Python for unsupported revset syntax rhg only supports a small subset of the syntax. On parse error, this gives Python a chance instead of aborting immediately. Differential Revision: https://phab.mercurial-scm.org/D10097
Wed, 03 Mar 2021 18:00:54 +0100 tests: Add `rhg` and `no-rhg` for #require and #if in .t files
Simon Sapin <simon.sapin@octobus.net> [Wed, 03 Mar 2021 18:00:54 +0100] rev 46724
tests: Add `rhg` and `no-rhg` for #require and #if in .t files With this we can allow some small differences in expected output between Rust-based and Python-based code paths. Differential Revision: https://phab.mercurial-scm.org/D10096
Tue, 02 Mar 2021 22:42:10 +0100 tests: Enable rhg fallback to Python by default in tests
Simon Sapin <simon.sapin@octobus.net> [Tue, 02 Mar 2021 22:42:10 +0100] rev 46723
tests: Enable rhg fallback to Python by default in tests This premise of `run-tests.py --rhg`: fallback should make `rhg` behave the same as `hg`, except faster in some cases. To test run the whole test suite with installed `rhg` as `hg` and with fallback enabled. Differential Revision: https://phab.mercurial-scm.org/D10187
Fri, 12 Mar 2021 18:45:32 +0100 rhg: Add environment variables for fallback configuration
Simon Sapin <simon.sapin@octobus.net> [Fri, 12 Mar 2021 18:45:32 +0100] rev 46722
rhg: Add environment variables for fallback configuration For the `rust-tests.py --rhg` we want every `hg` command in tests to run `rhg` with fallback enabled, but other methods of setting configuration are limited or disruptive as discussed in code comment. Differential Revision: https://phab.mercurial-scm.org/D10186
Thu, 11 Mar 2021 11:22:54 +0100 paths: add a `*` special path to define default sub option
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 11 Mar 2021 11:22:54 +0100] rev 46721
paths: add a `*` special path to define default sub option Differential Revision: https://phab.mercurial-scm.org/D10163
Thu, 11 Mar 2021 17:26:49 +0100 ui: pass a `ui` object to `paths.getpath`
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 11 Mar 2021 17:26:49 +0100] rev 46720
ui: pass a `ui` object to `paths.getpath` I want to introduce more path's suboption and make it possible to use default value for them. Processing theses sub-options might result in warnings. We need a `ui` object to issue such warnings. To make things simpler, we add an helper method on the `ui` object. Differential Revision: https://phab.mercurial-scm.org/D10162
Mon, 15 Mar 2021 10:57:02 +0100 configitems: add TODOs blocking the move out of experimental for revlogv2
Raphaël Gomès <rgomes@octobus.net> [Mon, 15 Mar 2021 10:57:02 +0100] rev 46719
configitems: add TODOs blocking the move out of experimental for revlogv2 These are the todos so far, we probably will have more, but we might as well list them while they're fresh in our minds. Differential Revision: https://phab.mercurial-scm.org/D10216
Fri, 19 Feb 2021 11:24:50 +0100 sidedata-exchange: rewrite sidedata on-the-fly whenever possible
Raphaël Gomès <rgomes@octobus.net> [Fri, 19 Feb 2021 11:24:50 +0100] rev 46718
sidedata-exchange: rewrite sidedata on-the-fly whenever possible When a A exchanges with B, the difference of their supported sidedata categories is made, and the responsibility is always with the client to generated it: - If A pushes to B and B requires category `foo` that A does not have, A will need to generate it when sending it to B. - If A pulls from B and A needs category `foo`, it will generate `foo` before the end of the transaction. - Any category that is not required is removed. If peers are not compatible, abort. It is forbidden to rewrite sidedata for a rev that already has sidedata, since that would introduce unreachable (garbage) data in the data file, something we're not prepared for yet. Differential Revision: https://phab.mercurial-scm.org/D10032
Mon, 15 Feb 2021 11:08:28 +0100 revlog-index: add `replace_sidedata_info` method
Raphaël Gomès <rgomes@octobus.net> [Mon, 15 Feb 2021 11:08:28 +0100] rev 46717
revlog-index: add `replace_sidedata_info` method During a `pull` operation where the server does not provide sidedata, the client that requires it should generate them on-the-fly. In the generic case, we need to wait for the changelog + manifests + filelogs to be added, since we don't know what the sidedata computers might need: this means rewriting the sidedata of index entries from within the pull transaction (and no further back) right after we've added them. Both Python and C implementations only allow for rewriting the sidedata offset and length for revs within the transaction where they were created. Differential Revision: https://phab.mercurial-scm.org/D10031
Fri, 19 Feb 2021 11:04:17 +0100 revlogv2: temporarily forbid inline revlogs
Raphaël Gomès <rgomes@octobus.net> [Fri, 19 Feb 2021 11:04:17 +0100] rev 46716
revlogv2: temporarily forbid inline revlogs See inline comments. I plan to fix the underlying issue before revlogv2 is stabilized. Differential Revision: https://phab.mercurial-scm.org/D10030
Fri, 19 Feb 2021 11:15:42 +0100 changegroupv4: add sidedata helpers
Raphaël Gomès <rgomes@octobus.net> [Fri, 19 Feb 2021 11:15:42 +0100] rev 46715
changegroupv4: add sidedata helpers These helpers carry the information and computers needed to rewrite sidedata when generating/applying patches. We will be making use of them soon. Differential Revision: https://phab.mercurial-scm.org/D10029
Wed, 10 Mar 2021 19:33:18 +0100 revlog: add attribute on revlogs that specifies its kind
Raphaël Gomès <rgomes@octobus.net> [Wed, 10 Mar 2021 19:33:18 +0100] rev 46714
revlog: add attribute on revlogs that specifies its kind The sidedata logic needs to check whether the revlog it's working on is a changelog, a manifest or a filelog. Furthermore, future versions of the revlog format will most likely see a split between the three types (i.e. they will store different information), so having this will be useful for other future endeavors as well. Differential Revision: https://phab.mercurial-scm.org/D10151
Fri, 19 Feb 2021 10:53:27 +0100 sidedata-exchange: add `wanted_sidedata` and `sidedata_computers` to repos
Raphaël Gomès <rgomes@octobus.net> [Fri, 19 Feb 2021 10:53:27 +0100] rev 46713
sidedata-exchange: add `wanted_sidedata` and `sidedata_computers` to repos Each repo will advertise the sidedata categories it requires (categories being unique and canonical), and have a set of "computers", functions to generate sidedata from `(repo, revlog, rev, previous_sidedata)`, for a given category. The set of computers can be a superset of the set of the wanted categories, but not smaller: repos are expected to be coherent in their handling of sidedata. Differential Revision: https://phab.mercurial-scm.org/D10028
Thu, 18 Feb 2021 18:18:35 +0100 delta: add sidedata field to revision delta
Raphaël Gomès <rgomes@octobus.net> [Thu, 18 Feb 2021 18:18:35 +0100] rev 46712
delta: add sidedata field to revision delta When emitting revision delta, we need to also emit the sidedata information just added in the revlogv2 format if appropriate. Differential Revision: https://phab.mercurial-scm.org/D10027
Thu, 18 Feb 2021 17:36:52 +0100 changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net> [Thu, 18 Feb 2021 17:36:52 +0100] rev 46711
changegroup: add v4 changegroup for revlog v2 exchange This change only adds the required infrastructure for the new changegroup format and does not do any actual exchange. This will be done in the next patches. Differential Revision: https://phab.mercurial-scm.org/D10026
Fri, 19 Feb 2021 11:07:10 +0100 revlogv2: don't assume that the sidedata of the last rev is right after data
Raphaël Gomès <rgomes@octobus.net> [Fri, 19 Feb 2021 11:07:10 +0100] rev 46710
revlogv2: don't assume that the sidedata of the last rev is right after data We are going to be rewriting sidedata soon, it's going to be appended to the revlog data file, meaning that the data and the sidedata might not be contiguous. Differential Revision: https://phab.mercurial-scm.org/D10025
Mon, 18 Jan 2021 11:44:51 +0100 sidedata: move to new sidedata storage in revlogv2
Raphaël Gomès <rgomes@octobus.net> [Mon, 18 Jan 2021 11:44:51 +0100] rev 46709
sidedata: move to new sidedata storage in revlogv2 The current (experimental) sidedata system uses flagprocessors to signify the presence and store/retrieve sidedata from the raw revlog data. This proved to be quite fragile from an exchange perspective and a lot more complex than simply having a dedicated space in the new revlog format. This change does not handle exchange (ironically), so the test for amend - that uses a bundle - is broken. This functionality is split into the next patches. Differential Revision: https://phab.mercurial-scm.org/D9993
Wed, 20 Jan 2021 18:35:12 +0100 cext: add support for revlogv2
Raphaël Gomès <rgomes@octobus.net> [Wed, 20 Jan 2021 18:35:12 +0100] rev 46708
cext: add support for revlogv2 This enables the C code to retrieve/create entries in the revlog v2 format. This is mainly a matter of taking into account the additional slots for sidedata, etc. Differential Revision: https://phab.mercurial-scm.org/D9846
Mon, 18 Jan 2021 10:43:12 +0100 bitmanipulation: add utils to read/write bigendian 64bit integers
Raphaël Gomès <rgomes@octobus.net> [Mon, 18 Jan 2021 10:43:12 +0100] rev 46707
bitmanipulation: add utils to read/write bigendian 64bit integers Differential Revision: https://phab.mercurial-scm.org/D9845
Thu, 04 Mar 2021 09:55:06 +0100 format: remove sidedata format variant
Raphaël Gomès <rgomes@octobus.net> [Thu, 04 Mar 2021 09:55:06 +0100] rev 46706
format: remove sidedata format variant This format variant can only exist when also using revlog v2, so it's useless now. Differential Revision: https://phab.mercurial-scm.org/D10113
Wed, 20 Jan 2021 21:14:06 +0100 revlogv2: allow upgrading to v2
Raphaël Gomès <rgomes@octobus.net> [Wed, 20 Jan 2021 21:14:06 +0100] rev 46705
revlogv2: allow upgrading to v2 Revlogv2 implies sidedata. Right now sidedata is not really used in production, and Revlogv2 will be used for the first production-ready version of sidedata support. Differential Revision: https://phab.mercurial-scm.org/D9844
Thu, 28 Jan 2021 15:28:57 +0100 revlog: introduce v2 format
Raphaël Gomès <rgomes@octobus.net> [Thu, 28 Jan 2021 15:28:57 +0100] rev 46704
revlog: introduce v2 format As documented in [1], this is still tentative and could be subject to change, but we need to lay down the foundations in order to work on the next abstraction layers. [1] https://www.mercurial-scm.org/wiki/RevlogV2Plan Differential Revision: https://phab.mercurial-scm.org/D9843
Wed, 17 Mar 2021 12:06:49 +0100 formatting: fix redundant parentheses stable
Raphaël Gomès <rgomes@octobus.net> [Wed, 17 Mar 2021 12:06:49 +0100] rev 46703
formatting: fix redundant parentheses These were introduced by 0d055849d5f9d682ef931d2566b760d5c6bf7e52. Differential Revision: https://phab.mercurial-scm.org/D10229
Fri, 12 Mar 2021 20:19:12 -0500 wsgicgi: switch the default PATH_INFO back to str stable
Matt Harbison <matt_harbison@yahoo.com> [Fri, 12 Mar 2021 20:19:12 -0500] rev 46702
wsgicgi: switch the default PATH_INFO back to str It looks like everything here is meant to be str, and regressed in 687b865b95ad. Pytype didn't flag this, but is really confused about the range of possible types for the dictionary values, and flagged missing `lower()` on various types in this area. Differential Revision: https://phab.mercurial-scm.org/D10204
Fri, 12 Mar 2021 18:55:06 -0500 crecord: convert an instance of bytes to str stable
Matt Harbison <matt_harbison@yahoo.com> [Fri, 12 Mar 2021 18:55:06 -0500] rev 46701
crecord: convert an instance of bytes to str Caught by pytype: File "/mnt/c/Users/Matt/hg/mercurial/crecord.py", line 1154, in printstring: Function _CursesWindow.addstr was called with the wrong arguments [wrong-arg-types] Expected: (self, str: str, ...) Actually passed: (self, str: bytes, ...) Differential Revision: https://phab.mercurial-scm.org/D10203
Fri, 12 Mar 2021 18:51:22 -0500 crecord: change str literals to byte literals stable
Matt Harbison <matt_harbison@yahoo.com> [Fri, 12 Mar 2021 18:51:22 -0500] rev 46700
crecord: change str literals to byte literals Differential Revision: https://phab.mercurial-scm.org/D10202
Fri, 12 Mar 2021 17:59:02 -0500 bisect: replace a missing method on the list primitive stable
Matt Harbison <matt_harbison@yahoo.com> [Fri, 12 Mar 2021 17:59:02 -0500] rev 46699
bisect: replace a missing method on the list primitive Caught by pytype: File "/mnt/c/Users/Matt/hg/mercurial/commands.py", line 1095, in bisect: No attribute 'last' on list [attribute-error] In list Differential Revision: https://phab.mercurial-scm.org/D10201
Thu, 11 Mar 2021 21:09:55 -0500 typing: disable a module-attr warning in the worker module's py2 code stable
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 21:09:55 -0500] rev 46698
typing: disable a module-attr warning in the worker module's py2 code Differential Revision: https://phab.mercurial-scm.org/D10183
Thu, 11 Mar 2021 21:07:04 -0500 wireprotoserver: convert ErrorResponse to bytes stable
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 21:07:04 -0500] rev 46697
wireprotoserver: convert ErrorResponse to bytes Caught by pytype: File "/mnt/c/Users/Matt/hg/mercurial/wireprotoserver.py", line 236, in handlewsgirequest: Function _bytestr.__init__ was called with the wrong arguments [wrong-arg-types] Expected: (self, ints: Iterable[int]) Actually passed: (self, ints: mercurial.hgweb.common.ErrorResponse) The following methods aren't implemented on mercurial.hgweb.common.ErrorResponse: __iter__ File "/mnt/c/Users/Matt/hg/mercurial/wireprotoserver.py", line 239, in handlewsgirequest: Function _bytestr.__init__ was called with the wrong arguments [wrong-arg-types] Expected: (self, ints: Iterable[int]) Actually passed: (self, ints: mercurial.hgweb.common.ErrorResponse) The following methods aren't implemented on mercurial.hgweb.common.ErrorResponse: __iter__ File "/mnt/c/Users/Matt/hg/mercurial/wireprotov2server.py", line 91, in handlehttpv2request: Function _bytestr.__init__ was called with the wrong arguments [wrong-arg-types] Expected: (self, ints: Iterable[int]) Actually passed: (self, ints: mercurial.hgweb.common.ErrorResponse) The following methods aren't implemented on mercurial.hgweb.common.ErrorResponse: __iter__ Differential Revision: https://phab.mercurial-scm.org/D10182
Thu, 11 Mar 2021 21:02:03 -0500 verify: convert an exception to bytes before logging stable
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 21:02:03 -0500] rev 46696
verify: convert an exception to bytes before logging I'm not entirely sure why this code appears to be trying to convert twice, but it was flagged by pytype: File "/mnt/c/Users/Matt/hg/mercurial/verify.py", line 84, in _exc: Function _bytestr.__init__ was called with the wrong arguments [wrong-arg-types] Expected: (self, ints: Iterable[int]) Actually passed: (self, ints: Exception) The following methods aren't implemented on Exception: __iter__ Differential Revision: https://phab.mercurial-scm.org/D10181
Thu, 11 Mar 2021 19:50:14 -0500 typing: add an assertion to the upgrade engine to help pytype stable
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 19:50:14 -0500] rev 46695
typing: add an assertion to the upgrade engine to help pytype Differential Revision: https://phab.mercurial-scm.org/D10180
Thu, 11 Mar 2021 19:21:58 -0500 subrepo: handle unexpected file types from git gracefully stable
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 19:21:58 -0500] rev 46694
subrepo: handle unexpected file types from git gracefully This was flagged by pytype because `tar.extractfile(...)` can return None if the entry is not a file or symlink. I don't think that git supports other types, but better safe than sorry. Differential Revision: https://phab.mercurial-scm.org/D10179
Thu, 11 Mar 2021 18:45:18 -0500 patch: convert a UI message to bytes when editing a patch stable
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 18:45:18 -0500] rev 46693
patch: convert a UI message to bytes when editing a patch Differential Revision: https://phab.mercurial-scm.org/D10178
Thu, 11 Mar 2021 18:33:39 -0500 merge: force an exception message to bytes before printing as a warning stable
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 18:33:39 -0500] rev 46692
merge: force an exception message to bytes before printing as a warning Caught by pytype: File "/mnt/c/Users/Matt/hg/mercurial/merge.py", line 1346, in batchremove: Function _bytestr.__init__ was called with the wrong arguments [wrong-arg-types] Expected: (self, ints: Iterable[int]) Actually passed: (self, ints: str) Differential Revision: https://phab.mercurial-scm.org/D10177
Thu, 11 Mar 2021 18:09:55 -0500 hg: convert an exception to bytes in the repo creation exception handler stable
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 18:09:55 -0500] rev 46691
hg: convert an exception to bytes in the repo creation exception handler Caught by pytype: File "/mnt/c/Users/Matt/hg/mercurial/hg.py", line 77, in _local: Function _bytestr.__init__ was called with the wrong arguments [wrong-arg-types] Expected: (self, ints: Iterable[int]) Actually passed: (self, ints: Union[TypeError, ValueError]) Differential Revision: https://phab.mercurial-scm.org/D10176
Thu, 11 Mar 2021 17:55:52 -0500 typing: add an assertion instead of blacklisting mercurial/extensions.py stable
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 17:55:52 -0500] rev 46690
typing: add an assertion instead of blacklisting mercurial/extensions.py Differential Revision: https://phab.mercurial-scm.org/D10175
Thu, 11 Mar 2021 17:27:31 -0500 debug: convert a few exceptions to bytes before wrapping in another error stable
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 17:27:31 -0500] rev 46689
debug: convert a few exceptions to bytes before wrapping in another error Caught by pytype: File "/mnt/c/Users/Matt/hg/mercurial/debugcommands.py", line 2118, in debugmanifestfulltextcache: Function Abort.__init__ was called with the wrong arguments [wrong-arg-types] Expected: (self, message: Union[bytearray, bytes, memoryview], ...) Actually passed: (self, message: mercurial.error.LookupError, ...) File "/mnt/c/Users/Matt/hg/mercurial/debugcommands.py", line 2453, in debugobsolete: Function _bytestr.__init__ was called with the wrong arguments [wrong-arg-types] Expected: (self, ints: Iterable[int]) Actually passed: (self, ints: ValueError) The following methods aren't implemented on ValueError: __iter__ Differential Revision: https://phab.mercurial-scm.org/D10174
Thu, 11 Mar 2021 17:16:29 -0500 grep: convert an exception to bytes for a warning message stable
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 17:16:29 -0500] rev 46688
grep: convert an exception to bytes for a warning message Caught by pytype: File "/mnt/c/Users/Matt/hg/mercurial/commands.py", line 3457, in grep: Function _bytestr.__init__ was called with the wrong arguments [wrong-arg-types] Expected: (self, ints: Iterable[int]) Actually passed: (self, ints: re.error) The following methods aren't implemented on re.error: __iter__ Differential Revision: https://phab.mercurial-scm.org/D10173
Thu, 11 Mar 2021 17:14:30 -0500 morestatus: convert a UI message about merge conflicts to bytes stable
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 17:14:30 -0500] rev 46687
morestatus: convert a UI message about merge conflicts to bytes Differential Revision: https://phab.mercurial-scm.org/D10172
Thu, 11 Mar 2021 17:12:08 -0500 changegroup: convert a warning message to bytes stable
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 17:12:08 -0500] rev 46686
changegroup: convert a warning message to bytes Differential Revision: https://phab.mercurial-scm.org/D10171
Thu, 11 Mar 2021 17:10:52 -0500 branchmap: force Exception to bytes before logging stable
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 17:10:52 -0500] rev 46685
branchmap: force Exception to bytes before logging Here was an instance where `black` mangled the formatting so that `pytype` didn't recognize the suppression directive. But it seems that the error was correct, and the code should follow other recent changes around exception conversion. File "/mnt/c/Users/Matt/hg/mercurial/branchmap.py", line 303, in fromfile: Function _bytestr.__init__ was called with the wrong arguments [wrong-arg-types] Expected: (self, ints: Iterable[int]) Actually passed: (self, ints: Exception) The following methods aren't implemented on Exception: __iter__ Differential Revision: https://phab.mercurial-scm.org/D10170
Thu, 11 Mar 2021 17:05:37 -0500 nodemap: convert error message to bytes stable
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 17:05:37 -0500] rev 46684
nodemap: convert error message to bytes Differential Revision: https://phab.mercurial-scm.org/D10169
Thu, 11 Mar 2021 17:04:58 -0500 mail: convert SMTPException to bytes before passing to error.Abort() stable
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 17:04:58 -0500] rev 46683
mail: convert SMTPException to bytes before passing to error.Abort() Caught by pytype: File "/mnt/c/Users/Matt/hg/mercurial/mail.py", line 168, in _smtp: Function Abort.__init__ was called with the wrong arguments [wrong-arg-types] Expected: (self, message: Union[bytearray, bytes, memoryview], ...) Actually passed: (self, message: smtplib.SMTPException) Differential Revision: https://phab.mercurial-scm.org/D10168
Thu, 11 Mar 2021 17:02:28 -0500 typing: switch an argument type to the generic form stable
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 17:02:28 -0500] rev 46682
typing: switch an argument type to the generic form This fixes the following pytype complaint: File "/mnt/c/Users/Matt/hg/mercurial/commands.py", line 4672, in log: Function mercurial.logcmdutil.parseopts was called with the wrong arguments [wrong-arg-types] Expected: (ui, pats: List[Union[bytearray, bytes, memoryview]], ...) Actually passed: (ui, pats: tuple, ...) Differential Revision: https://phab.mercurial-scm.org/D10167
Thu, 11 Mar 2021 21:25:28 -0500 typing: ensure that error.Abort is given bytes stable
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 21:25:28 -0500] rev 46681
typing: ensure that error.Abort is given bytes There's a bunch more typing to be done here, but the list of things to fix is already long, and I know there are instances where this is being used incorrectly. Differential Revision: https://phab.mercurial-scm.org/D10166
Thu, 11 Mar 2021 21:21:41 -0500 typing: fix a suppression directive that was mangled by black formatting stable
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 21:21:41 -0500] rev 46680
typing: fix a suppression directive that was mangled by black formatting It looks like black is moving comments needed by pytype out of position, and causing some things that should be disabled to be enforced anyway. Differential Revision: https://phab.mercurial-scm.org/D10165
Thu, 04 Mar 2021 17:35:58 +0530 commit: reorder if-else conditional to give mergestate info priority stable
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 04 Mar 2021 17:35:58 +0530] rev 46679
commit: reorder if-else conditional to give mergestate info priority Looking at the code now, I was unable to find a good reason as why we only rely on mergestate extras info after checking whether a filelog parent is ancestor of other or not. I mean if we have stored in mergestate that `other` was chosed, we should blindly pick that one. This cleanup will also help introduce more cases when both `fparent1` and `fparent2` are non-null but using info from mergestate, we can fastpath. The test change actually demonstrates the point of the patch. During merge we were getting the other side of the file but on commit we were marking that as merged. Differential Revision: https://phab.mercurial-scm.org/D10147
Wed, 10 Mar 2021 15:24:52 +1000 enclink: check contents of symlinks not just size in case of fcrypt stable
Corey Schuhen <cschuhen@topcon.com> [Wed, 10 Mar 2021 15:24:52 +1000] rev 46678
enclink: check contents of symlinks not just size in case of fcrypt Check content of symlinks because st_size may indicate the size of encrypted data which does not match actual link value. Differential Revision: https://phab.mercurial-scm.org/D10146
Fri, 12 Feb 2021 16:13:34 -0800 rebase: inline simple function for finding obsolete subset of commits
Martin von Zweigbergk <martinvonz@google.com> [Fri, 12 Feb 2021 16:13:34 -0800] rev 46677
rebase: inline simple function for finding obsolete subset of commits `_filterobsoleterevs()` is just one line long. It was introduced in 2d294dada4f8 (rebase: small refactoring to allow better extensibility from extensions, 2016-01-14), for use by the "inhibit" extension. That extension was removed from the evolve repo in 87e87881059d (compat: drop the inhibit hacky extension, 2017-10-24). Differential Revision: https://phab.mercurial-scm.org/D10198
Thu, 25 Feb 2021 20:57:11 +0100 ci: hook network-io tests into the pipeline
Joerg Sonnenberger <joerg@bec.de> [Thu, 25 Feb 2021 20:57:11 +0100] rev 46676
ci: hook network-io tests into the pipeline This runs the "pip install" tests once for Python 2 and 3 each. Differential Revision: https://phab.mercurial-scm.org/D10075
Fri, 12 Mar 2021 13:13:13 -0500 merge: with stable
Augie Fackler <augie@google.com> [Fri, 12 Mar 2021 13:13:13 -0500] rev 46675
merge: with stable
Wed, 10 Mar 2021 18:24:23 +0100 test: update expected output in test-http.t
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 10 Mar 2021 18:24:23 +0100] rev 46674
test: update expected output in test-http.t The output was introduced in a4c19a162615 and is wrong and unstable. So we glob it as other part of these tests already do. Differential Revision: https://phab.mercurial-scm.org/D10153
Wed, 10 Mar 2021 18:23:24 +0100 remotefilelog: remove unused import
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 10 Mar 2021 18:23:24 +0100] rev 46673
remotefilelog: remove unused import This is no longer used since a4c19a162615. Differential Revision: https://phab.mercurial-scm.org/D10152
Thu, 25 Feb 2021 10:08:33 -0500 wireprotov1peer: don't raise internal errors in some cases
Valentin Gatien-Baron <vgatien-baron@janestreet.com> [Thu, 25 Feb 2021 10:08:33 -0500] rev 46672
wireprotov1peer: don't raise internal errors in some cases Specifically, when the peer is closed in the middle of a batch of rpcs. Differential Revision: https://phab.mercurial-scm.org/D10074
Thu, 25 Feb 2021 10:00:08 -0500 sshpeer: don't fail forwarding output from closed connections
Valentin Gatien-Baron <vgatien-baron@janestreet.com> [Thu, 25 Feb 2021 10:00:08 -0500] rev 46671
sshpeer: don't fail forwarding output from closed connections The test still shows an internal error, but one that happens further along. Differential Revision: https://phab.mercurial-scm.org/D10073
Thu, 25 Feb 2021 09:59:23 -0500 test: show internal exception with batchable rpcs over ssh
Valentin Gatien-Baron <vgatien-baron@janestreet.com> [Thu, 25 Feb 2021 09:59:23 -0500] rev 46670
test: show internal exception with batchable rpcs over ssh Differential Revision: https://phab.mercurial-scm.org/D10072
Thu, 04 Mar 2021 13:26:53 +0100 rhg: Ignore trailing newlines in .hg/sharedpath
Simon Sapin <simon.sapin@octobus.net> [Thu, 04 Mar 2021 13:26:53 +0100] rev 46669
rhg: Ignore trailing newlines in .hg/sharedpath Differential Revision: https://phab.mercurial-scm.org/D10132
Tue, 02 Mar 2021 21:31:12 +0100 tests: Add `--rhg` and `--with-rhg=<path>` options for `run-tests.py`
Simon Sapin <simon.sapin@octobus.net> [Tue, 02 Mar 2021 21:31:12 +0100] rev 46668
tests: Add `--rhg` and `--with-rhg=<path>` options for `run-tests.py` They are mostly equivalent to the corresponding `chg` options. For now, many tests are still failing in this configuration. It is *not* run on CI. Differential Revision: https://phab.mercurial-scm.org/D10095
Mon, 01 Mar 2021 20:36:06 +0100 rhg: Add support for automatic fallback to Python
Simon Sapin <simon.sapin@octobus.net> [Mon, 01 Mar 2021 20:36:06 +0100] rev 46667
rhg: Add support for automatic fallback to Python `rhg` is a command-line application that can do a small subset of what `hg` can. It is written entirely in Rust, which avoids the cost of starting a Python interpreter and importing many Python modules. In a script that runs many `hg` commands, this cost can add up. However making users decide when to use `rhg` instead of `hg` is not practical as we want the subset of supported functionality to grow over time. Instead we introduce "fallback" behavior where, when `rhg` encounters something (a sub-command, a repository format, …) that is not implemented in Rust-only, it does nothing but silently start a subprocess of Python-based `hg` running the same command. That way `rhg` becomes a drop-in replacement for `hg` that sometimes goes faster. Whether Python is used should be an implementation detail not apparent to users (other than through speed). A new `fallback` value is added to the previously introduced `rhg.on-unsupported` configuration key. When in this mode, the new `rhg.fallback-executable` config is determine what command to use to run a Python-based `hg`. The previous `rhg.on-unsupported = abort-silent` configuration was designed to let a wrapper script call `rhg` and then fall back to `hg` based on the exit code. This is still available, but having fallback behavior built-in in rhg might be easier for users instead of leaving that script "as an exercise for the reader". Using a subprocess like this is not idea, especially when `rhg` is to be installed in `$PATH` as `hg`, since the other `hg.py` executable needs to still be available… somewhere. Eventually this could be replaced by using PyOxidizer to a have a single executable that embeds a Python interpreter, but only starts it when needed. Differential Revision: https://phab.mercurial-scm.org/D10093
Mon, 01 Mar 2021 16:18:42 +0100 rhg: Add a `rhg.on-unsupported` configuration key
Simon Sapin <simon.sapin@octobus.net> [Mon, 01 Mar 2021 16:18:42 +0100] rev 46666
rhg: Add a `rhg.on-unsupported` configuration key For now the two values are: * `abort-silent`: silently exit with code 252, the previous default behavior * `abort`: print an error message about what feature is not supported, then exit with code 252. Now the default. Differential Revision: https://phab.mercurial-scm.org/D10091
Mon, 01 Mar 2021 13:51:35 +0100 rhg: Make configuration available as early as possible in main()
Simon Sapin <simon.sapin@octobus.net> [Mon, 01 Mar 2021 13:51:35 +0100] rev 46665
rhg: Make configuration available as early as possible in main() Differential Revision: https://phab.mercurial-scm.org/D10090
Tue, 02 Mar 2021 09:55:52 +0100 rust: Upgrade Cargo.lock to the newer format
Simon Sapin <simon.sapin@octobus.net> [Tue, 02 Mar 2021 09:55:52 +0100] rev 46664
rust: Upgrade Cargo.lock to the newer format As discussed in https://phab.mercurial-scm.org/D10085#153099 See https://github.com/rust-lang/cargo/pull/7070 and https://blog.rust-lang.org/2020/01/30/Rust-1.41.0.html#less-conflict-prone-cargolock-format Differential Revision: https://phab.mercurial-scm.org/D10089
Mon, 15 Feb 2021 14:48:36 -0500 sshpeer: enable+fix warning about sshpeers not being closed explicitly
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com> [Mon, 15 Feb 2021 14:48:36 -0500] rev 46663
sshpeer: enable+fix warning about sshpeers not being closed explicitly I recommend looking at this with a diff that ignores indentation. The test changes are because localrepo.close() updates some cache, which appears happens earlier now on rollbacks or strips or something. The http changes are because httppeer.close() prints stats with --verbose. Differential Revision: https://phab.mercurial-scm.org/D9999
Mon, 15 Feb 2021 14:40:17 -0500 sshpeer: add a develwarning if an sshpeer is not closed explicitly
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com> [Mon, 15 Feb 2021 14:40:17 -0500] rev 46662
sshpeer: add a develwarning if an sshpeer is not closed explicitly The warning is disabled until the next commit, because fixing it results in a noisy diff due to indentation changes. Differential Revision: https://phab.mercurial-scm.org/D9998
Mon, 15 Feb 2021 14:15:02 -0500 remotefilelog: rework workaround for sshpeer deadlocks
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com> [Mon, 15 Feb 2021 14:15:02 -0500] rev 46661
remotefilelog: rework workaround for sshpeer deadlocks The wrapping of `sshpeer.cleanup` silently broke when `cleanup` was renamed to `_cleanup`, a couple of years ago. I don't know what `orig.im_self` is, but regardless, the intention of the wrapping seems pretty clear: close stderr before sshpeer._cleanuppipes blocks on it. So do that. Differential Revision: https://phab.mercurial-scm.org/D9997
Mon, 15 Feb 2021 14:11:38 -0500 sshpeer: add a method to check if a doublepipe is closed
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com> [Mon, 15 Feb 2021 14:11:38 -0500] rev 46660
sshpeer: add a method to check if a doublepipe is closed So we can tell in a next commit if we're trying to close an already closed connection or not (in which case, we may warn). Differential Revision: https://phab.mercurial-scm.org/D9996
Mon, 15 Feb 2021 13:59:36 -0500 sshpeer: make sshpeer.close() close the underlying connection
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com> [Mon, 15 Feb 2021 13:59:36 -0500] rev 46659
sshpeer: make sshpeer.close() close the underlying connection So the connection can be closed eagerly in future commits, instead of relying on __del__. Differential Revision: https://phab.mercurial-scm.org/D9995
Mon, 11 Jan 2021 13:33:00 +0100 copies-rust: add a macro-based unit-testing framework
Simon Sapin <simon.sapin@octobus.net> [Mon, 11 Jan 2021 13:33:00 +0100] rev 46658
copies-rust: add a macro-based unit-testing framework `compare_values`, `merge_copies_dict`, and `CombineChangesetCopies` are APIs whose signatures involve non-trivial types. Calling them directly in unit tests would involve a lot of verbose setup code that obscures the meaningful parts of a given test case. This adds a macro-based test-harness with pseudo-syntax to tersely create arguments and expected return values in the correct types. For now there is only one (not particularly meaningful) test case per tested function, just to exercize the macros. Differential Revision: https://phab.mercurial-scm.org/D10071
Wed, 06 Jan 2021 23:11:59 +0100 copies-rust: rewrite ChangedFiles binary parsing
Simon Sapin <simon.sapin@octobus.net> [Wed, 06 Jan 2021 23:11:59 +0100] rev 46657
copies-rust: rewrite ChangedFiles binary parsing by using the new from-bytes-safe crate and a custom struct that encodes the expected data structure. Differential Revision: https://phab.mercurial-scm.org/D10068
Tue, 02 Mar 2021 00:02:25 +0530 tags: validate nodes in _getfnodes() and update cache in case of unknown nodes
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 02 Mar 2021 00:02:25 +0530] rev 46656
tags: validate nodes in _getfnodes() and update cache in case of unknown nodes `hgtagsfnodescache` can contain unknown nodes due to cache corruption and this lead to a traceback on operations like `hg tags` as we don't validate nodes. This patch validates that all filenodes returned after `hgtagsfnodescache` are known to the repository. If there exists any unknown filenode, we force recompute it and update the cache. The test change demonstrates the fix. Differential Revision: https://phab.mercurial-scm.org/D10083
Mon, 15 Feb 2021 17:08:18 +0530 debugtagscache: verify that filenode is correct
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 15 Feb 2021 17:08:18 +0530] rev 46655
debugtagscache: verify that filenode is correct Previous patch from Matt demonstrates that `debugtagscache` does not warn about filenode being unknown which can be caused by a corrupted cache. We start by showing that it's an unknown node. Differential Revision: https://phab.mercurial-scm.org/D10015
Thu, 24 Dec 2020 12:23:46 -0500 tests: demonstrate a case where a corrupt tag cache causes an abort
Matt Harbison <matt_harbison@yahoo.com> [Thu, 24 Dec 2020 12:23:46 -0500] rev 46654
tests: demonstrate a case where a corrupt tag cache causes an abort I happened to hit this trying to cover other cases around valid vs missing entries. I have no idea if this is something that could occur more naturally (similar to how a missing file node in `hgtagsfnodes1` can occur after a strip). There is a test just above this added in f5a7cf0adb12 mentioning it "overwrites the junk", though that tests truncation instead of actual garbage. But since this is just a cache, it probably shouldn't abort with a cryptic message like this. The two options I see both have downsides- either rebuild the cache (and potentially take a long time), or hint to the user to run a debug command. Differential Revision: https://phab.mercurial-scm.org/D9812
Tue, 16 Feb 2021 20:38:14 +0530 debugcommands: prevent using `is False`
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 16 Feb 2021 20:38:14 +0530] rev 46653
debugcommands: prevent using `is False` I was touching this code in a future patch and marmoute warned about usage of `is False` here. Quoting marmoute: ``` "is False" is going to check if the object you have the very same object in memory than the one Python allocated for False (in practice 0) This will "mostly work" on cpython because of implementation details, but is semantically wrong and can start breaking unexpectedly ``` Differential Revision: https://phab.mercurial-scm.org/D10014
Tue, 16 Feb 2021 18:43:42 +0530 hgtagsfnodes: refactor code to compute fnode into separate fn
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 16 Feb 2021 18:43:42 +0530] rev 46652
hgtagsfnodes: refactor code to compute fnode into separate fn I plan to use this code at one more place while fixing a bug caused by an invalid fnode present in cache. Differential Revision: https://phab.mercurial-scm.org/D10013
Wed, 10 Feb 2021 17:24:54 +0530 error: remove shortening of node in error message
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 10 Feb 2021 17:24:54 +0530] rev 46651
error: remove shortening of node in error message This strips the complete 20 bytes node which was not found. Having the the full node in error message is important as it makes debugging easier. If a short node is to be displayed, that should be done by callers. Differential Revision: https://phab.mercurial-scm.org/D9994
Thu, 04 Mar 2021 08:20:19 -0800 copies: filter out copies grafted from another branch
Martin von Zweigbergk <martinvonz@google.com> [Thu, 04 Mar 2021 08:20:19 -0800] rev 46650
copies: filter out copies grafted from another branch Consider this simple history: ``` @ 3 modify y | o 2 copy x to y, modify x | | o 1 copy x to y, modify x |/ o 0 add x ``` If we now rebase commit 3 onto 1, Mercurial will look for copies between commit 2 and commit 1. It does that by going backwards from 2 to 0 and then forwards from 0 to 1. It will find that x was copied to y, since that was what happened on the path between them (namely in commit 1). That leads Mercurial to do a 3-way merge between y@3 and y@1 with x@2 as base. We want to use y@2 as base instead. That's also what happened until commit 1d6d1a15. This patch fixes the regression by adding another filtering step when chaining copies via a diffbase. The new filtering step removes copies that were the same between the two branches (same source and destination, but not necessarily the same contents). Differential Revision: https://phab.mercurial-scm.org/D10120
Fri, 05 Mar 2021 14:26:56 -0800 copies: inline _backwardrenames() in pathcopies()
Martin von Zweigbergk <martinvonz@google.com> [Fri, 05 Mar 2021 14:26:56 -0800] rev 46649
copies: inline _backwardrenames() in pathcopies() I'll add another filtering step in `patchcopies()` next. I need access to the forward copies for that. Differential Revision: https://phab.mercurial-scm.org/D10119
Fri, 05 Mar 2021 14:26:52 -0800 copies: extract function _backwardcopies() for reversing renames
Martin von Zweigbergk <martinvonz@google.com> [Fri, 05 Mar 2021 14:26:52 -0800] rev 46648
copies: extract function _backwardcopies() for reversing renames I'll add another callers in the next patch. Differential Revision: https://phab.mercurial-scm.org/D10118
Fri, 05 Mar 2021 10:16:44 -0800 tests: demonstrate how grafted copies are counted when tracing across branches
Martin von Zweigbergk <martinvonz@google.com> [Fri, 05 Mar 2021 10:16:44 -0800] rev 46647
tests: demonstrate how grafted copies are counted when tracing across branches This test demonstrates a regression from 1d6d1a15. Differential Revision: https://phab.mercurial-scm.org/D10117
Sat, 06 Mar 2021 23:43:44 -0500 typing: add some type annotations to mercurial/pathutil.py
Matt Harbison <matt_harbison@yahoo.com> [Sat, 06 Mar 2021 23:43:44 -0500] rev 46646
typing: add some type annotations to mercurial/pathutil.py Differential Revision: https://phab.mercurial-scm.org/D10128
Sat, 06 Mar 2021 23:41:32 -0500 typing: add some type annotations to mercurial/util.py
Matt Harbison <matt_harbison@yahoo.com> [Sat, 06 Mar 2021 23:41:32 -0500] rev 46645
typing: add some type annotations to mercurial/util.py Differential Revision: https://phab.mercurial-scm.org/D10127
Sat, 06 Mar 2021 18:51:33 -0500 typing: add some type annotations to mercurial/phases.py
Matt Harbison <matt_harbison@yahoo.com> [Sat, 06 Mar 2021 18:51:33 -0500] rev 46644
typing: add some type annotations to mercurial/phases.py Some of these were helpful in typing other modules, and then I typed the easy-ish ones. Black forces the long `Phasedefaults` definition to be wrapped, which pytype seems OK with (as shown with `reveal_type()`), but it does seem to confuse PyCharm a bit. Differential Revision: https://phab.mercurial-scm.org/D10126
Sat, 06 Mar 2021 17:52:09 -0500 typing: add type annotations to the public methods of mercurial/subrepoutil.py
Matt Harbison <matt_harbison@yahoo.com> [Sat, 06 Mar 2021 17:52:09 -0500] rev 46643
typing: add type annotations to the public methods of mercurial/subrepoutil.py Differential Revision: https://phab.mercurial-scm.org/D10125
Sat, 06 Mar 2021 15:58:23 -0500 typing: add type annotations to mercurial/i18n.py
Matt Harbison <matt_harbison@yahoo.com> [Sat, 06 Mar 2021 15:58:23 -0500] rev 46642
typing: add type annotations to mercurial/i18n.py I'm a little unsure of this because `gettext()` clearly allows for passing unicode. But the comments seem to indicate that this is related to tests, and this was useful for catching unicode being passed to `_()` in the keyring extension. I'm also not sure why `_(None)` would make any sense, so maybe the argument shouldn't be optional? I didn't add it to the lambda in plain mode because that spilled beyond 80 characters and so black mangled it. Black and pytype disagree on where the comment to disable a check needs to go, so this has to disable and then enable the checking. Differential Revision: https://phab.mercurial-scm.org/D10124
Sat, 06 Mar 2021 15:26:46 -0500 typing: add type annotations to mercurial/utils/dateutil.py
Matt Harbison <matt_harbison@yahoo.com> [Sat, 06 Mar 2021 15:26:46 -0500] rev 46641
typing: add type annotations to mercurial/utils/dateutil.py For now, I'm just typing around the edges to help find issues with TortoiseHg. If the custom `hgdate` type is useful elsewhere as I go, I'll move it to a file dedicated to custom types. I'm not loving the ban on camelcase type names here that test-check-code.t flagged, but I'm not sure how to disable that even if everyone agreed that it's a bad idea to go against the normal convention for types. While here, fix an issue that pytype found in `parsedate` when an invalid date tuple is passed by raising a ProgrammingError instead of crashing. (Tuple doesn't have a `strip` attribute.) Differential Revision: https://phab.mercurial-scm.org/D10123
Sat, 06 Mar 2021 15:08:22 -0500 shelve: fix conversion of exceptions to strings flagged by pytype
Matt Harbison <matt_harbison@yahoo.com> [Sat, 06 Mar 2021 15:08:22 -0500] rev 46640
shelve: fix conversion of exceptions to strings flagged by pytype I've seen this done several ways and don't know what's correct. But pytype was unhappy about the previous way: FAILED: /mnt/c/Users/Matt/hg/tests/.pytype/pyi/mercurial/shelve.pyi /usr/bin/python3.6 -m pytype.single --imports_info /mnt/c/Users/Matt/hg/tests/.pytype/imports/mercurial.shelve.imports --module-name mercurial.shelve -V 3.6 -o /mnt/c/Users/Matt/hg/tests/.pytype/pyi/mercurial/shelve.pyi --analyze-annotated --nofail --quick /mnt/c/Users/Matt/hg/mercurial/shelve.py File "/mnt/c/Users/Matt/hg/mercurial/shelve.py", line 244, in _verifyandtransform: Function bytestr.__init__ was called with the wrong arguments [wrong-arg-types] Expected: (self, ints: Iterable[int]) Actually passed: (self, ints: Union[KeyError, TypeError, ValueError]) File "/mnt/c/Users/Matt/hg/mercurial/shelve.py", line 253, in _getversion: Function bytestr.__init__ was called with the wrong arguments [wrong-arg-types] Expected: (self, ints: Iterable[int]) Actually passed: (self, ints: ValueError) The following methods aren't implemented on ValueError: __iter__ Differential Revision: https://phab.mercurial-scm.org/D10122
Sat, 06 Mar 2021 06:32:25 +0100 releasenotes: use the right API to access the 'sections'
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 06 Mar 2021 06:32:25 +0100] rev 46639
releasenotes: use the right API to access the 'sections' Preventing direct access to the underlying dict fix a breakage introduced by the refactoring in d3df397e7a59. This changeset is similar to 271dfcb98544, 5272542196cc and f7621fa14b84. The breackage of `releasenotes.py` stayed under my radar as the CI did not have fuzzywuzzy installed. (Something that is about to be fixed). Differential Revision: https://phab.mercurial-scm.org/D10121
Wed, 03 Mar 2021 12:37:13 +0100 requirements: also add a fncache constant
Raphaël Gomès <rgomes@octobus.net> [Wed, 03 Mar 2021 12:37:13 +0100] rev 46638
requirements: also add a fncache constant Continue the cleanup to the remaining requirements Differential Revision: https://phab.mercurial-scm.org/D10109
Wed, 03 Mar 2021 12:35:29 +0100 requirements: also add a store constant
Raphaël Gomès <rgomes@octobus.net> [Wed, 03 Mar 2021 12:35:29 +0100] rev 46637
requirements: also add a store constant Continue the cleanup to the remaining requirements Differential Revision: https://phab.mercurial-scm.org/D10108
Wed, 03 Mar 2021 12:33:24 +0100 requirements: also add a dotencode constant
Raphaël Gomès <rgomes@octobus.net> [Wed, 03 Mar 2021 12:33:24 +0100] rev 46636
requirements: also add a dotencode constant Continue the cleanup to the remaining requirements Differential Revision: https://phab.mercurial-scm.org/D10107
Tue, 02 Mar 2021 18:51:18 +0100 pure-parsers: document index class constants
Raphaël Gomès <rgomes@octobus.net> [Tue, 02 Mar 2021 18:51:18 +0100] rev 46635
pure-parsers: document index class constants This also adds the big endian prefix `>` to make the constants truly platform-independent, even if no issue with this has been reported in the wild. Differential Revision: https://phab.mercurial-scm.org/D10104
Thu, 04 Mar 2021 16:06:55 -0800 copies: choose target directory based on longest match
Martin von Zweigbergk <martinvonz@google.com> [Thu, 04 Mar 2021 16:06:55 -0800] rev 46634
copies: choose target directory based on longest match If one side of a merge renames `dir1/` to `dir2/` and the subdirectory `dir1/subdir1/` to `dir2/subdir2/`, and the other side of the merge adds a file in `dir1/subdir1/`, we should clearly move that into `dir2/subdir2/`. We already detect the directories correctly before this patch, but we iterate over them in arbitrary order. That results in the new file sometimes ending up in `dir2/subdir1/` instead. This patch fixes it by iterating over the source directories by visiting subdirectories first. That's achieved by simply iterating over them in reverse lexicographical order. Without the fix, the test case still passes on Python 2 but fails on Python 3. It depends on the iteration order of the dict. I did not look into how it's built up and why it behaved differently before the fix. I could probably have gotten it to fail on Python 2 as well by choosing different directory names. Differential Revision: https://phab.mercurial-scm.org/D10115
Thu, 04 Mar 2021 21:58:55 +0100 exchange: stop advertising rev-branch-cache bundle capability
Joerg Sonnenberger <joerg@bec.de> [Thu, 04 Mar 2021 21:58:55 +0100] rev 46633
exchange: stop advertising rev-branch-cache bundle capability Since Mercurial 5.7, the corresponding bundle part is ignored as redundant. Stop advertising it so that peers don't have to spend time creating or transfering it. Differential Revision: https://phab.mercurial-scm.org/D10114
Fri, 29 Jan 2021 16:33:12 -0800 errors: use more specific errors in rebase extension
Martin von Zweigbergk <martinvonz@google.com> [Fri, 29 Jan 2021 16:33:12 -0800] rev 46632
errors: use more specific errors in rebase extension Differential Revision: https://phab.mercurial-scm.org/D9914
Mon, 01 Mar 2021 16:54:51 +0100 changelog: rename parameters to reflect semantics
Joerg Sonnenberger <joerg@bec.de> [Mon, 01 Mar 2021 16:54:51 +0100] rev 46631
changelog: rename parameters to reflect semantics `read` and `readfiles` can be used with a revision just as well, so follow the naming convention in revlog to reflect this. Differential Revision: https://phab.mercurial-scm.org/D10081
Thu, 25 Feb 2021 21:29:12 +0100 rhg: Don’t attempt to read persistent nodemap without .hg/requires opt-in
Simon Sapin <simon.sapin@octobus.net> [Thu, 25 Feb 2021 21:29:12 +0100] rev 46630
rhg: Don’t attempt to read persistent nodemap without .hg/requires opt-in Differential Revision: https://phab.mercurial-scm.org/D10077
Thu, 04 Feb 2021 17:34:20 -0800 debian: support a "chg-first" installation mechanism (hg is actually chg)
Kyle Lippincott <spectral@google.com> [Thu, 04 Feb 2021 17:34:20 -0800] rev 46629
debian: support a "chg-first" installation mechanism (hg is actually chg) This mechanism builds chg such that it looks for `hg` to be available at /usr/lib/mercurial/hg instead of in the $PATH as `hg`, and makes the `hg` in /usr/bin be a symlink to `chg`. It's important to note that the hg binary must continue to be named `hg`. If we wanted to instead place it at /usr/bin/pyhg or something similar, we would need to modify Mercurial to allow that basename. Failure to do so would break Mercurial's shell aliases that use `hg`, `chg`, or `$HG`. I don't know if we should ever have a setup like this be the default setup, but I'm willing to get more information on our experience with it for making such a determination. Actually making it the default might be rather involved, as we don't maintain the official debian packaging rules. Differential Revision: https://phab.mercurial-scm.org/D10020
Thu, 04 Mar 2021 00:31:18 +0100 relnotes: document a number of node->revision type changes
Joerg Sonnenberger <joerg@bec.de> [Thu, 04 Mar 2021 00:31:18 +0100] rev 46628
relnotes: document a number of node->revision type changes Differential Revision: https://phab.mercurial-scm.org/D10103
Wed, 03 Mar 2021 12:30:23 +0100 requirements: also add a generaldelta constant
Raphaël Gomès <rgomes@octobus.net> [Wed, 03 Mar 2021 12:30:23 +0100] rev 46627
requirements: also add a generaldelta constant Continue the cleanup to the remaining requirements Differential Revision: https://phab.mercurial-scm.org/D10106
Wed, 03 Mar 2021 14:00:45 +0100 requirements: add constant for revlog v1 requirement
Raphaël Gomès <rgomes@octobus.net> [Wed, 03 Mar 2021 14:00:45 +0100] rev 46626
requirements: add constant for revlog v1 requirement Since this series is adding a new requirement, we might as well clean up while we're here. Differential Revision: https://phab.mercurial-scm.org/D10105
Thu, 18 Feb 2021 15:07:45 +0100 error: add `hint` attribute to `SidedataHashError`
Raphaël Gomès <rgomes@octobus.net> [Thu, 18 Feb 2021 15:07:45 +0100] rev 46625
error: add `hint` attribute to `SidedataHashError` This prevents an exception within an exception because `hint` does not exist. Differential Revision: https://phab.mercurial-scm.org/D10024
Fri, 19 Feb 2021 11:17:16 +0100 changegroup: use the local variable instead of reaching through self
Raphaël Gomès <rgomes@octobus.net> [Fri, 19 Feb 2021 11:17:16 +0100] rev 46624
changegroup: use the local variable instead of reaching through self Gratuitous cleanup while I was here. Differential Revision: https://phab.mercurial-scm.org/D10023
Fri, 29 Jan 2021 12:17:11 +0100 config: use level to properly deal with value priority
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 29 Jan 2021 12:17:11 +0100] rev 46623
config: use level to properly deal with value priority A higher priority alias will now take precedence over lower priority ones. This was a requirements step before using alias more widely, especially to rename existing and established config option. Differential Revision: https://phab.mercurial-scm.org/D9927
Fri, 29 Jan 2021 11:21:49 +0100 config: track the "level" of a value
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 29 Jan 2021 11:21:49 +0100] rev 46622
config: track the "level" of a value Config value now remember the "level" of the config that loaded it. This will be used to ensure good priority management for alias. Differential Revision: https://phab.mercurial-scm.org/D9926
Fri, 29 Jan 2021 10:28:03 +0100 config: track "source" along side value
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 29 Jan 2021 10:28:03 +0100] rev 46621
config: track "source" along side value Currently the source is stored in a entirely different way than the data. This is impractical. Especially if we are about to add more of such metadata. So lets put them back together. Differential Revision: https://phab.mercurial-scm.org/D9925
Sat, 30 Jan 2021 00:32:42 +0100 config: use a new `alter` method in `fixconfig`
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 30 Jan 2021 00:32:42 +0100] rev 46620
config: use a new `alter` method in `fixconfig` The `set` function is doing various work related to metadata (eg: the source, later the level). However the `fixconfig` call only updating some values according to standard processing, not changing any of the related metadata. So we introduce a new method and use it there. Differential Revision: https://phab.mercurial-scm.org/D9924
Mon, 01 Mar 2021 14:44:29 -0800 copies-rust: remove an unnecessary format!() inside assert!()
Martin von Zweigbergk <martinvonz@google.com> [Mon, 01 Mar 2021 14:44:29 -0800] rev 46619
copies-rust: remove an unnecessary format!() inside assert!() The `assert!()` macro supports formatting. Rust 2021 no longer supports an unnecessary `format!()` inside it. I noticed because I recently update my Rust toolchain and `test-check-cargo-lock.t` started failing. Differential Revision: https://phab.mercurial-scm.org/D10085
Mon, 01 Mar 2021 20:08:26 +0100 copies: tests and fix parallel computation of changed file information
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 01 Mar 2021 20:08:26 +0100] rev 46618
copies: tests and fix parallel computation of changed file information The code was mixing variable name and misbehaving in some case. This changeset fix it and also add a tests to validate it does not regress. Without the fix, the parallel-upgrade misbehavior in random ways. Differential Revision: https://phab.mercurial-scm.org/D10084
Fri, 29 Jan 2021 13:07:00 +0100 config: test priority involving alias and cli
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 29 Jan 2021 13:07:00 +0100] rev 46617
config: test priority involving alias and cli Differential Revision: https://phab.mercurial-scm.org/D9920
Fri, 29 Jan 2021 12:03:29 +0100 config: test priority involving alias and include
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 29 Jan 2021 12:03:29 +0100] rev 46616
config: test priority involving alias and include Differential Revision: https://phab.mercurial-scm.org/D9919
Fri, 29 Jan 2021 12:02:28 +0100 config: test priority involving alias
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 29 Jan 2021 12:02:28 +0100] rev 46615
config: test priority involving alias Differential Revision: https://phab.mercurial-scm.org/D9918
Thu, 25 Feb 2021 21:25:04 +0100 rhg: Check .hg/requires for absence of required features
Simon Sapin <simon.sapin@octobus.net> [Thu, 25 Feb 2021 21:25:04 +0100] rev 46614
rhg: Check .hg/requires for absence of required features Some old repository layouts are not supported. Differential Revision: https://phab.mercurial-scm.org/D10076
Thu, 25 Feb 2021 23:14:35 +0100 rhg: Bug fix: with share-safe, always read store requirements
Simon Sapin <simon.sapin@octobus.net> [Thu, 25 Feb 2021 23:14:35 +0100] rev 46613
rhg: Bug fix: with share-safe, always read store requirements That is, the `store/requires` file, regardless of whether the repository is a shared. Differential Revision: https://phab.mercurial-scm.org/D10078
Mon, 11 Jan 2021 12:17:16 +0100 copies-rust: pass closures and iterators instead of `&ChangedFiles`
Simon Sapin <simon.sapin@octobus.net> [Mon, 11 Jan 2021 12:17:16 +0100] rev 46612
copies-rust: pass closures and iterators instead of `&ChangedFiles` … to some functions that only use one method. This will makes it easier to unit-test them. Differential Revision: https://phab.mercurial-scm.org/D10070
Fri, 08 Jan 2021 11:58:16 +0100 copies-rust: pass `PathToken` around by value
Simon Sapin <simon.sapin@octobus.net> [Fri, 08 Jan 2021 11:58:16 +0100] rev 46611
copies-rust: pass `PathToken` around by value It’s just a `usize`. Differential Revision: https://phab.mercurial-scm.org/D10069
Wed, 24 Feb 2021 09:27:33 -0800 tests: correct a commit description in test-copies-chain-merge.t
Martin von Zweigbergk <martinvonz@google.com> [Wed, 24 Feb 2021 09:27:33 -0800] rev 46610
tests: correct a commit description in test-copies-chain-merge.t Differential Revision: https://phab.mercurial-scm.org/D10065
Wed, 24 Feb 2021 12:40:54 -0500 fuzz: if the caller of our makefile sets CC and CXX, trust them
Augie Fackler <augie@google.com> [Wed, 24 Feb 2021 12:40:54 -0500] rev 46609
fuzz: if the caller of our makefile sets CC and CXX, trust them This should fix the broken fuzzing build, because we've been explicitly using clang++ but are now being given a CXX=afl++, which does extra stuff. Differential Revision: https://phab.mercurial-scm.org/D10066
Fri, 26 Feb 2021 12:16:43 +0100 rhg: Use clap’s support for global CLI arguments
Simon Sapin <simon.sapin@octobus.net> [Fri, 26 Feb 2021 12:16:43 +0100] rev 46608
rhg: Use clap’s support for global CLI arguments By default, clap only accepts app-level arguments (as opposed to sub-command level) to be specified before a sub-command: `rhg -R ./foo log`. Specifying them after would be rejected: `rhg log -R ./foo`. Previously we worked around that by registering global arguments both at the app level and on each sub-command, but that required looking for their value in two places. It turns out that Clap has built-in support for what we want to do, so let’s use it. Also, Clap "settings" turn out to be either global or not too. Let’s make `AllowInvalidUtf8` apply to sub-commands too. Differential Revision: https://phab.mercurial-scm.org/D10080
Wed, 03 Feb 2021 16:33:10 -0800 revlog: add a mechanism to verify expected file position before appending
Kyle Lippincott <spectral@google.com> [Wed, 03 Feb 2021 16:33:10 -0800] rev 46607
revlog: add a mechanism to verify expected file position before appending If someone uses `hg debuglocks`, or some non-hg process writes to the .hg directory without respecting the locks, or if the repo's on a networked filesystem, it's possible for the revlog code to write out corrupted data. The form of this corruption can vary depending on what data was written and how that happened. We are in the "networked filesystem" case (though I've had users also do this to themselves with the "`hg debuglocks`" scenario), and most often see this with the changelog. What ends up happening is we produce two items (let's call them rev1 and rev2) in the .i file that have the same linkrev, baserev, and offset into the .d file, while the data in the .d file is appended properly. rev2's compressed_size is accurate for rev2, but when we go to decompress the data in the .d file, we use the offset that's recorded in the index file, which is the same as rev1, and attempt to decompress rev2.compressed_size bytes of rev1's data. This usually does not succeed. :) When using inline data, this also fails, though I haven't investigated why too closely. This shows up as a "patch decode" error. I believe what's happening there is that we're basically ignoring the offset field, getting the data properly, but since baserev != rev, it thinks this is a delta based on rev (instead of a full text) and can't actually apply it as such. For now, I'm going to make this an optional component and default it to entirely off. I may increase the default severity of this in the future, once I've enabled it for my users and we gain more experience with it. Luckily, most of my users have a versioned filesystem and can roll back to before the corruption has been written, it's just a hassle to do so and not everyone knows how (so it's a support burden). Users on other filesystems will not have that luxury, and this can cause them to have a corrupted repository that they are unlikely to know how to resolve, and they'll see this as a data-loss event. Refusing to create the corruption is a much better user experience. This mechanism is not perfect. There may be false-negatives (racy writes that are not detected). There should not be any false-positives (non-racy writes that are detected as such). This is not a mechanism that makes putting a repo on a networked filesystem "safe" or "supported", just *less* likely to cause corruption. Differential Revision: https://phab.mercurial-scm.org/D9952
Tue, 23 Feb 2021 22:58:30 -0800 narrow: remove assertion about working copy being clean
Martin von Zweigbergk <martinvonz@google.com> [Tue, 23 Feb 2021 22:58:30 -0800] rev 46606
narrow: remove assertion about working copy being clean The user can always modify the working copy, including while they're running `hg tracked --remove-include <path>`. Nothing really bad happens when they do that, and we already have code for printing a nice warning, so we can safely remove the assertion we had. Differential Revision: https://phab.mercurial-scm.org/D10063
Tue, 23 Feb 2021 22:55:26 -0800 tests: demonstrate assertion error when modifying working copy while narrowing
Martin von Zweigbergk <martinvonz@google.com> [Tue, 23 Feb 2021 22:55:26 -0800] rev 46605
tests: demonstrate assertion error when modifying working copy while narrowing Differential Revision: https://phab.mercurial-scm.org/D10062
Thu, 04 Feb 2021 23:23:35 +0100 ci: test real dependency installation for pip
Joerg Sonnenberger <joerg@bec.de> [Thu, 04 Feb 2021 23:23:35 +0100] rev 46604
ci: test real dependency installation for pip In the past, the pip smoke test inhibited actual dependency installation, but that fails in different environments for setuptools itself. Since it isn't what we actually want to test (which is pip install), allow this to call home, if HGTESTS_ALLOW_NETIO=1 is set in the environment. Differential Revision: https://phab.mercurial-scm.org/D9950
Wed, 17 Feb 2021 20:40:19 +0100 rust: Add some unit tests for parse_byte_size in config
Simon Sapin <simon.sapin@octobus.net> [Wed, 17 Feb 2021 20:40:19 +0100] rev 46603
rust: Add some unit tests for parse_byte_size in config Differential Revision: https://phab.mercurial-scm.org/D10022
Wed, 17 Feb 2021 20:24:04 +0100 rust: Move config value parsing functions to a new module
Simon Sapin <simon.sapin@octobus.net> [Wed, 17 Feb 2021 20:24:04 +0100] rev 46602
rust: Move config value parsing functions to a new module Differential Revision: https://phab.mercurial-scm.org/D10021
Tue, 16 Feb 2021 13:08:37 +0100 rhg: Add support for the blackbox extension
Simon Sapin <simon.sapin@octobus.net> [Tue, 16 Feb 2021 13:08:37 +0100] rev 46601
rhg: Add support for the blackbox extension Only `command` and `commandfinish` events are logged. The `dirty`, `logsource`, `track` and `ignore` configuration items are not supported yet. To indicate commands executed without Python, a `(rust) ` prefix is added in corresponding log messages. Differential Revision: https://phab.mercurial-scm.org/D10012
Wed, 17 Feb 2021 13:00:25 +0100 blackbox: Remove misleading quotes in config example
Simon Sapin <simon.sapin@octobus.net> [Wed, 17 Feb 2021 13:00:25 +0100] rev 46600
blackbox: Remove misleading quotes in config example This example previously looked like quotes were part of configuration file syntax, and the parsed `date-format` value was the part inside of them. This is not the case: config syntax only parses quotes in list values. Instead using that config would result in literal quotes being written to `.hg/blackbox.log` as part of the date format. This changes the example to what was probably intended. Differential Revision: https://phab.mercurial-scm.org/D10011
Thu, 11 Feb 2021 15:51:11 +0100 rust: Add a log file rotation utility
Simon Sapin <simon.sapin@octobus.net> [Thu, 11 Feb 2021 15:51:11 +0100] rev 46599
rust: Add a log file rotation utility This is ported to Rust from `mercurial/loggingutil.py`. The "builder" pattern is used to make it visible at call sites what the two numeric parameters mean. In Python they might simply by keyword arguments. Differential Revision: https://phab.mercurial-scm.org/D10010
Tue, 16 Feb 2021 15:22:20 +0100 rust: Add a `ConfigValueParseError` variant to common errors
Simon Sapin <simon.sapin@octobus.net> [Tue, 16 Feb 2021 15:22:20 +0100] rev 46598
rust: Add a `ConfigValueParseError` variant to common errors Configuration files are parsed into sections of key/value pairs when they are read, but at that point values are still arbitrary bytes. Only when a value is accessed by various parts of the code do we know its expected type and syntax, so values are parsed at that point. Let’s make a new error type for this latter kind of parsing error, and add a variant to the common `HgError` so that most code can propagate it without much boilerplate. Differential Revision: https://phab.mercurial-scm.org/D10009
Tue, 16 Feb 2021 13:55:31 +0100 rust: Add config parsing support for more value types
Simon Sapin <simon.sapin@octobus.net> [Tue, 16 Feb 2021 13:55:31 +0100] rev 46597
rust: Add config parsing support for more value types * Rust `str` (ASCII or UTF-8) * Integer * Byte quantities Differential Revision: https://phab.mercurial-scm.org/D10008
Wed, 17 Feb 2021 11:21:34 +0100 rust: Introduce a get_bytes_from_os_str utility function
Simon Sapin <simon.sapin@octobus.net> [Wed, 17 Feb 2021 11:21:34 +0100] rev 46596
rust: Introduce a get_bytes_from_os_str utility function It does the same as get_bytes_from_path but takes an `OsStr` instead of a `Path`. The implementation is the same so using either ends up correct but the function name suggests it’s not. Differential Revision: https://phab.mercurial-scm.org/D10007
Wed, 17 Feb 2021 12:24:53 +0100 rust: Make `DirstateParents`’s fields typed `Node`s
Simon Sapin <simon.sapin@octobus.net> [Wed, 17 Feb 2021 12:24:53 +0100] rev 46595
rust: Make `DirstateParents`’s fields typed `Node`s Instead of plain byte arrays. Differential Revision: https://phab.mercurial-scm.org/D10006
Wed, 17 Feb 2021 12:06:56 +0100 rust: Rewrite dirstate parsing usin the `bytes-cast` crate
Simon Sapin <simon.sapin@octobus.net> [Wed, 17 Feb 2021 12:06:56 +0100] rev 46594
rust: Rewrite dirstate parsing usin the `bytes-cast` crate Differential Revision: https://phab.mercurial-scm.org/D10005
Mon, 15 Feb 2021 20:13:09 +0100 rhg: Move `Repo` object creation into `main()`
Simon Sapin <simon.sapin@octobus.net> [Mon, 15 Feb 2021 20:13:09 +0100] rev 46593
rhg: Move `Repo` object creation into `main()` … rather than in each sub-command that needs a local repository. This will allow accessing e.g. `.hg/blackbox.log` before dispatching to sub-commands. Differential Revision: https://phab.mercurial-scm.org/D10004
Mon, 15 Feb 2021 20:05:32 +0100 rhg: Group values passed to every sub-command into a struct
Simon Sapin <simon.sapin@octobus.net> [Mon, 15 Feb 2021 20:05:32 +0100] rev 46592
rhg: Group values passed to every sub-command into a struct The set of which values this is is evidently not stable yet, so this will make changes easier. Also it is growing, and the function signatures are getting out hand. Differential Revision: https://phab.mercurial-scm.org/D10003
Fri, 12 Feb 2021 16:54:30 +0100 rhg: Remove error message on unsupported CLI arguments
Simon Sapin <simon.sapin@octobus.net> [Fri, 12 Feb 2021 16:54:30 +0100] rev 46591
rhg: Remove error message on unsupported CLI arguments Like in other "unsupported" cases that return a specific exit code Differential Revision: https://phab.mercurial-scm.org/D10002
Tue, 05 Jan 2021 21:46:21 +0100 copies-rust: send PyBytes values back be dropped ino the parent thread
Simon Sapin <simon.sapin@octobus.net> [Tue, 05 Jan 2021 21:46:21 +0100] rev 46590
copies-rust: send PyBytes values back be dropped ino the parent thread … instead of acquiring the GIL in the Rust thread in the Drop impl This commit is based on the premise that crossbeam-channel with unbounded send and non-blocking receive is faster than a contended GIL, but that remains to be measured. Differential Revision: https://phab.mercurial-scm.org/D9686
Thu, 26 Nov 2020 18:23:51 +0100 copies-rust: introduce PyBytesWithData to reduce GIL requirement
Simon Sapin <simon-commits@exyr.org> [Thu, 26 Nov 2020 18:23:51 +0100] rev 46589
copies-rust: introduce PyBytesWithData to reduce GIL requirement See explanations in new doc-comments. Differential Revision: https://phab.mercurial-scm.org/D9685
Wed, 06 Jan 2021 14:09:01 +0100 copies-rust: move CPU-heavy Rust processing into a child thread
Simon Sapin <simon.sapin@octobus.net> [Wed, 06 Jan 2021 14:09:01 +0100] rev 46588
copies-rust: move CPU-heavy Rust processing into a child thread … that runs in parallel with the parent thread fetching data. This can be disabled through a new config. CLI example: hg --config=devel.copy-tracing.multi-thread=no For now both threads use the GIL, later commits will reduce this. Differential Revision: https://phab.mercurial-scm.org/D9684
Tue, 05 Jan 2021 21:02:00 +0100 copies-rust: split up combine_changeset_copies function into a struct
Simon Sapin <simon.sapin@octobus.net> [Tue, 05 Jan 2021 21:02:00 +0100] rev 46587
copies-rust: split up combine_changeset_copies function into a struct … such that each iteration of its former loop is now a method call, with the caller driving the loop. This entirely removes the need for the `DataHolder` hack: the method now takes a `ChangedFiles<'_>` parameter that borrows a bytes buffer that can be owned by the caller’s stack frame, just for the duration of that call. Differential Revision: https://phab.mercurial-scm.org/D9683
Wed, 23 Dec 2020 11:48:16 +0100 copies-rust: extract generic map merge logic from merge_copies_dict
Simon Sapin <simon.sapin@octobus.net> [Wed, 23 Dec 2020 11:48:16 +0100] rev 46586
copies-rust: extract generic map merge logic from merge_copies_dict This deduplicates the copy-tracing-specific logic Differential Revision: https://phab.mercurial-scm.org/D9682
Mon, 21 Dec 2020 12:34:59 +0100 copies-rust: use imrs::OrdSet instead of imrs::HashSet
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 21 Dec 2020 12:34:59 +0100] rev 46585
copies-rust: use imrs::OrdSet instead of imrs::HashSet This yield small speedup all over the board, and a large one for our slower cases: Repo Case Source-Rev Dest-Rev # of revisions old time new time Difference Factor time per rev --------------------------------------------------------------------------------------------------------------------------------------------------------------- mozilla-try x0000_revs_xx000_added_x000_copies 89294cd501d9 7ccb2fc7ccb5 : 97052 revs, 2.034596 s, 1.465264 s, -0.569332 s, × 0.7202, 15 µs/rev mozilla-try x0000_revs_x0000_added_x0000_copies e928c65095ed e951f4ad123a : 52031 revs, 0.694030 s, 0.690376 s, -0.003654 s, × 0.9947, 13 µs/rev mozilla-try x00000_revs_x_added_0_copies 6a320851d377 1ebb79acd503 : 363753 revs, 4.407723 s, 4.011322 s, -0.396401 s, × 0.9101, 11 µs/rev mozilla-try x00000_revs_x00000_added_0_copies dc8a3ca7010e d16fde900c9c : 34414 revs, 0.574355 s, 0.573541 s, -0.000814 s, × 0.9986, 16 µs/rev mozilla-try x00000_revs_x_added_x_copies 5173c4b6f97c 95d83ee7242d : 362229 revs, 4.457827 s, 3.981133 s, -0.476694 s, × 0.8931, 10 µs/rev mozilla-try x00000_revs_x000_added_x_copies 9126823d0e9c ca82787bb23c : 359344 revs, 4.351696 s, 3.996647 s, -0.355049 s, × 0.9184, 11 µs/rev mozilla-try x00000_revs_x00000_added_x0000_copies 1b661134e2ca 1ae03d022d6d : 228985 revs, 80.828689 s, 50.244975 s, -30.583714 s, × 0.6216, 219 µs/rev mozilla-try x00000_revs_x00000_added_x000_copies 9b2a99adc05e 8e29777b48e6 : 382065 revs, 34.094064 s, 20.030023 s, -14.064041 s, × 0.5875, 52 µs/rev private : 459513 revs, 27.435529 s, 24.490825 s, -2.944704 s, × 0.8927, 53 µs/rev We also got significantly faster than the implementation using is_ancestors except for one of our reference case: Repo Case Source-Rev Dest-Rev # of revisions old time new time Difference Factor time per rev --------------------------------------------------------------------------------------------------------------------------------------------------------------- mozilla-try x00000_revs_x_added_0_copies 6a320851d377 1ebb79acd503 : 363753 revs, 5.138169 s, 4.011322 s, -1.126847 s, × 0.7807, 11 µs/rev mozilla-try x00000_revs_x_added_x_copies 5173c4b6f97c 95d83ee7242d : 362229 revs, 5.127809 s, 3.981133 s, -1.146676 s, × 0.7764, 10 µs/rev mozilla-try x00000_revs_x000_added_x_copies 9126823d0e9c ca82787bb23c : 359344 revs, 4.971136 s, 3.996647 s, -0.974489 s, × 0.8040, 11 µs/rev mozilla-try x00000_revs_x0000_added_x0000_copies 8d3fafa80d4b eb884023b810 : 192665 revs, 1.741678 s, 1.520607 s, -0.221071 s, × 0.8731, 7 µs/rev private : 459513 revs, 37.179470 s, 24.490825 s, -12.688645 s, × 0.6587, 53 µs/rev mozilla-try x00000_revs_x00000_added_x0000_copies 1b661134e2ca 1ae03d022d6d : 228985 revs, 40.314822 s, 50.244975 s, +9.930153 s, × 1.2463, 219 µs/rev Below are three different benchmark comparing this changeset to: * the previous one, * the implementation based on `is_anscestors`, * the filelog copy tracing. ### Compared to the previous ones Repo Case Source-Rev Dest-Rev # of revisions old time new time Difference Factor time per rev --------------------------------------------------------------------------------------------------------------------------------------------------------------- mercurial x_revs_x_added_0_copies ad6b123de1c7 39cfcef4f463 : 1 revs, 0.000043 s, 0.000041 s, -0.000002 s, × 0.9535, 41 µs/rev mercurial x_revs_x_added_x_copies 2b1c78674230 0c1d10351869 : 6 revs, 0.000114 s, 0.000116 s, +0.000002 s, × 1.0175, 19 µs/rev mercurial x000_revs_x000_added_x_copies 81f8ff2a9bf2 dd3267698d84 : 1032 revs, 0.004899 s, 0.004933 s, +0.000034 s, × 1.0069, 4 µs/rev pypy x_revs_x_added_0_copies aed021ee8ae8 099ed31b181b : 9 revs, 0.000196 s, 0.000193 s, -0.000003 s, × 0.9847, 21 µs/rev pypy x_revs_x000_added_0_copies 4aa4e1f8e19a 359343b9ac0e : 1 revs, 0.000049 s, 0.000048 s, -0.000001 s, × 0.9796, 48 µs/rev pypy x_revs_x_added_x_copies ac52eb7bbbb0 72e022663155 : 7 revs, 0.000117 s, 0.000114 s, -0.000003 s, × 0.9744, 16 µs/rev pypy x_revs_x00_added_x_copies c3b14617fbd7 ace7255d9a26 : 1 revs, 0.6f1f4a s, 0.000319 s, -0.000003 s, × 0.9907, 319 µs/rev pypy x_revs_x000_added_x000_copies df6f7a526b60 a83dc6a2d56f : 6 revs, 0.011856 s, 0.012025 s, +0.000169 s, × 1.0143, 2004 µs/rev pypy x000_revs_xx00_added_0_copies 89a76aede314 2f22446ff07e : 4785 revs, 0.050992 s, 0.050525 s, -0.000467 s, × 0.9908, 10 µs/rev pypy x000_revs_x000_added_x_copies 8a3b5bfd266e 2c68e87c3efe : 6780 revs, 0.087444 s, 0.085713 s, -0.001731 s, × 0.9802, 12 µs/rev pypy x000_revs_x000_added_x000_copies 89a76aede314 7b3dda341c84 : 5441 revs, 0.062487 s, 0.061825 s, -0.000662 s, × 0.9894, 11 µs/rev pypy x0000_revs_x_added_0_copies d1defd0dc478 c9cb1334cc78 : 43645 revs, 0.634909 s, 0.543998 s, -0.090911 s, × 0.8568, 12 µs/rev pypy x0000_revs_xx000_added_0_copies bf2c629d0071 4ffed77c095c : 2 revs, 0.013360 s, 0.013455 s, +0.000095 s, × 1.0071, 6727 µs/rev pypy x0000_revs_xx000_added_x000_copies 08ea3258278e d9fa043f30c0 : 11316 revs, 0.120775 s, 0.117479 s, -0.003296 s, × 0.9727, 10 µs/rev netbeans x_revs_x_added_0_copies fb0955ffcbcd a01e9239f9e7 : 2 revs, 0.000085 s, 0.000084 s, -0.000001 s, × 0.9882, 42 µs/rev netbeans x_revs_x000_added_0_copies 6f360122949f 20eb231cc7d0 : 2 revs, 0.000108 s, 0.000111 s, +0.000003 s, × 1.0278, 55 µs/rev netbeans x_revs_x_added_x_copies 1ada3faf6fb6 5a39d12eecf4 : 3 revs, 0.000176 s, 0.000175 s, -0.000001 s, × 0.9943, 58 µs/rev netbeans x_revs_x00_added_x_copies 35be93ba1e2c 9eec5e90c05f : 9 revs, 0.000747 s, 0.000732 s, -0.000015 s, × 0.9799, 81 µs/rev netbeans x000_revs_xx00_added_0_copies eac3045b4fdd 51d4ae7f1290 : 1421 revs, 0.010128 s, 0.010062 s, -0.000066 s, × 0.9935, 7 µs/rev netbeans x000_revs_x000_added_x_copies e2063d266acd 6081d72689dc : 1533 revs, 0.015899 s, 0.015659 s, -0.000240 s, × 0.9849, 10 µs/rev netbeans x000_revs_x000_added_x000_copies ff453e9fee32 411350406ec2 : 5750 revs, 0.062215 s, 0.062744 s, +0.000529 s, × 1.0085, 10 µs/rev netbeans x0000_revs_xx000_added_x000_copies 588c2d1ced70 1aad62e59ddd : 66949 revs, 0.521004 s, 0.499449 s, -0.021555 s, × 0.9586, 7 µs/rev mozilla-central x_revs_x_added_0_copies 3697f962bb7b 7015fcdd43a2 : 2 revs, 0.000090 s, 0.000088 s, -0.000002 s, × 0.9778, 44 µs/rev mozilla-central x_revs_x000_added_0_copies dd390860c6c9 40d0c5bed75d : 8 revs, 0.000264 s, 0.000266 s, +0.000002 s, × 1.0076, 33 µs/rev mozilla-central x_revs_x_added_x_copies 8d198483ae3b 14207ffc2b2f : 9 revs, 0.000186 s, 0.000182 s, -0.000004 s, × 0.9785, 20 µs/rev mozilla-central x_revs_x00_added_x_copies 98cbc58cc6bc 446a150332c3 : 7 revs, 0.000660 s, 0.000656 s, -0.000004 s, × 0.9939, 93 µs/rev mozilla-central x_revs_x000_added_x000_copies 3c684b4b8f68 0a5e72d1b479 : 3 revs, 0.003542 s, 0.003389 s, -0.000153 s, × 0.9568, 1129 µs/rev mozilla-central x_revs_x0000_added_x0000_copies effb563bb7e5 c07a39dc4e80 : 6 revs, 0.071574 s, 0.075882 s, +0.004308 s, × 1.0602, 12647 µs/rev mozilla-central x000_revs_xx00_added_0_copies 6100d773079a 04a55431795e : 1593 revs, 0.006498 s, 0.006479 s, -0.000019 s, × 0.9971, 4 µs/rev mozilla-central x000_revs_x000_added_x_copies 9f17a6fc04f9 2d37b966abed : 41 revs, 0.005206 s, 0.004889 s, -0.000317 s, × 0.9391, 119 µs/rev mozilla-central x000_revs_x000_added_x000_copies 7c97034feb78 4407bd0c6330 : 7839 revs, 0.065535 s, 0.064394 s, -0.001141 s, × 0.9826, 8 µs/rev mozilla-central x0000_revs_xx000_added_0_copies 9eec5917337d 67118cc6dcad : 615 revs, 0.027139 s, 0.026815 s, -0.000324 s, × 0.9881, 43 µs/rev mozilla-central x0000_revs_xx000_added_x000_copies f78c615a656c 96a38b690156 : 30263 revs, 0.201924 s, 0.cc85eb s, +0.000940 s, × 1.0047, 6 µs/rev mozilla-central x00000_revs_x0000_added_x0000_copies 6832ae71433c 4c222a1d9a00 : 153721 revs, 1.257201 s, 1.219445 s, -0.037756 s, × 0.9700, 7 µs/rev mozilla-central x00000_revs_x00000_added_x000_copies 76caed42cf7c 1daa622bbe42 : 204976 revs, 1.663045 s, 1.613857 s, -0.049188 s, × 0.9704, 7 µs/rev mozilla-try x_revs_x_added_0_copies aaf6dde0deb8 9790f499805a : 2 revs, 0.000866 s, 0.000873 s, +0.000007 s, × 1.0081, 436 µs/rev mozilla-try x_revs_x000_added_0_copies d8d0222927b4 5bb8ce8c7450 : 2 revs, 0.000883 s, 0.000885 s, +0.000002 s, × 1.0023, 442 µs/rev mozilla-try x_revs_x_added_x_copies 092fcca11bdb 936255a0384a : 4 revs, 0.000163 s, 0.000161 s, -0.000002 s, × 0.9877, 40 µs/rev mozilla-try x_revs_x00_added_x_copies b53d2fadbdb5 017afae788ec : 2 revs, 0.001139 s, 0.001138 s, -0.000001 s, × 0.9991, 569 µs/rev mozilla-try x_revs_x000_added_x000_copies 20408ad61ce5 6f0ee96e21ad : 1 revs, 0.032753 s, 0.033399 s, +0.000646 s, × 1.0197, 33399 µs/rev mozilla-try x_revs_x0000_added_x0000_copies effb563bb7e5 c07a39dc4e80 : 6 revs, 0.073266 s, 0.075445 s, +0.002179 s, × 1.0297, 12574 µs/rev mozilla-try x000_revs_xx00_added_0_copies 6100d773079a 04a55431795e : 1593 revs, 0.006567 s, 0.006456 s, -0.000111 s, × 0.9831, 4 µs/rev mozilla-try x000_revs_x000_added_x_copies 9f17a6fc04f9 2d37b966abed : 41 revs, 0.005427 s, 0.005462 s, +0.000035 s, × 1.0064, 133 µs/rev mozilla-try x000_revs_x000_added_x000_copies 1346fd0130e4 4c65cbdabc1f : 6657 revs, 0.064058 s, 0.064117 s, +0.000059 s, × 1.0009, 9 µs/rev mozilla-try x0000_revs_x_added_0_copies 63519bfd42ee a36a2a865d92 : 40314 revs, 0.303320 s, 0.297563 s, -0.005757 s, × 0.9810, 7 µs/rev mozilla-try x0000_revs_x_added_x_copies 9fe69ff0762d bcabf2a78927 : 38690 revs, 0.288456 s, 0.282463 s, -0.005993 s, × 0.9792, 7 µs/rev mozilla-try x0000_revs_xx000_added_x_copies 156f6e2674f2 4d0f2c178e66 : 8598 revs, 0.085925 s, 0.084038 s, -0.001887 s, × 0.9780, 9 µs/rev mozilla-try x0000_revs_xx000_added_0_copies 9eec5917337d 67118cc6dcad : 615 revs, 0.027302 s, 0.027306 s, +0.000004 s, × 1.0001, 44 µs/rev mozilla-try x0000_revs_xx000_added_x000_copies 89294cd501d9 7ccb2fc7ccb5 : 97052 revs, 2.034596 s, 1.465264 s, -0.569332 s, × 0.7202, 15 µs/rev mozilla-try x0000_revs_x0000_added_x0000_copies e928c65095ed e951f4ad123a : 52031 revs, 0.694030 s, 0.690376 s, -0.003654 s, × 0.9947, 13 µs/rev mozilla-try x00000_revs_x_added_0_copies 6a320851d377 1ebb79acd503 : 363753 revs, 4.407723 s, 4.011322 s, -0.396401 s, × 0.9101, 11 µs/rev mozilla-try x00000_revs_x00000_added_0_copies dc8a3ca7010e d16fde900c9c : 34414 revs, 0.574355 s, 0.573541 s, -0.000814 s, × 0.9986, 16 µs/rev mozilla-try x00000_revs_x_added_x_copies 5173c4b6f97c 95d83ee7242d : 362229 revs, 4.457827 s, 3.981133 s, -0.476694 s, × 0.8931, 10 µs/rev mozilla-try x00000_revs_x000_added_x_copies 9126823d0e9c ca82787bb23c : 359344 revs, 4.351696 s, 3.996647 s, -0.355049 s, × 0.9184, 11 µs/rev mozilla-try x00000_revs_x0000_added_x0000_copies 8d3fafa80d4b eb884023b810 : 192665 revs, 1.570065 s, 1.520607 s, -0.049458 s, × 0.9685, 7 µs/rev mozilla-try x00000_revs_x00000_added_x0000_copies 1b661134e2ca 1ae03d022d6d : 228985 revs, 80.828689 s, 50.244975 s, -30.583714 s, × 0.6216, 219 µs/rev mozilla-try x00000_revs_x00000_added_x000_copies 9b2a99adc05e 8e29777b48e6 : 382065 revs, 34.094064 s, 20.030023 s, -14.064041 s, × 0.5875, 52 µs/rev private : 459513 revs, 27.435529 s, 24.490825 s, -2.944704 s, × 0.8927, 53 µs/rev ### Compared to the implementation using `is_anscestor` Repo Case Source-Rev Dest-Rev # of revisions old time new time Difference Factor time per rev --------------------------------------------------------------------------------------------------------------------------------------------------------------- mercurial x_revs_x_added_0_copies ad6b123de1c7 39cfcef4f463 : 1 revs, 0.000042 s, 0.000041 s, -0.000001 s, × 0.9762, 41 µs/rev mercurial x_revs_x_added_x_copies 2b1c78674230 0c1d10351869 : 6 revs, 0.000110 s, 0.000116 s, +0.000006 s, × 1.0545, 19 µs/rev mercurial x000_revs_x000_added_x_copies 81f8ff2a9bf2 dd3267698d84 : 1032 revs, 0.004945 s, 0.004933 s, -0.000012 s, × 0.9976, 4 µs/rev pypy x_revs_x_added_0_copies aed021ee8ae8 099ed31b181b : 9 revs, 0.000192 s, 0.000193 s, +0.000001 s, × 1.0052, 21 µs/rev pypy x_revs_x000_added_0_copies 4aa4e1f8e19a 359343b9ac0e : 1 revs, 0.000049 s, 0.000048 s, -0.000001 s, × 0.9796, 48 µs/rev pypy x_revs_x_added_x_copies ac52eb7bbbb0 72e022663155 : 7 revs, 0.000112 s, 0.000114 s, +0.000002 s, × 1.0179, 16 µs/rev pypy x_revs_x00_added_x_copies c3b14617fbd7 ace7255d9a26 : 1 revs, 0.000323 s, 0.000319 s, -0.000004 s, × 0.9876, 319 µs/rev pypy x_revs_x000_added_x000_copies df6f7a526b60 a83dc6a2d56f : 6 revs, 0.010042 s, 0.012025 s, +0.001983 s, × 1.1975, 2004 µs/rev pypy x000_revs_xx00_added_0_copies 89a76aede314 2f22446ff07e : 4785 revs, 0.049813 s, 0.050525 s, +0.000712 s, × 1.0143, 10 µs/rev pypy x000_revs_x000_added_x_copies 8a3b5bfd266e 2c68e87c3efe : 6780 revs, 0.079937 s, 0.085713 s, +0.005776 s, × 1.0723, 12 µs/rev pypy x000_revs_x000_added_x000_copies 89a76aede314 7b3dda341c84 : 5441 revs, 0.059412 s, 0.061825 s, +0.002413 s, × 1.0406, 11 µs/rev pypy x0000_revs_x_added_0_copies d1defd0dc478 c9cb1334cc78 : 43645 revs, 0.533769 s, 0.543998 s, +0.010229 s, × 1.0192, 12 µs/rev pypy x0000_revs_xx000_added_0_copies bf2c629d0071 4ffed77c095c : 2 revs, 0.013147 s, 0.013455 s, +0.000308 s, × 1.0234, 6727 µs/rev pypy x0000_revs_xx000_added_x000_copies 08ea3258278e d9fa043f30c0 : 11316 revs, 0.110680 s, 0.117479 s, +0.006799 s, × 1.0614, 10 µs/rev netbeans x_revs_x_added_0_copies fb0955ffcbcd a01e9239f9e7 : 2 revs, 0.000085 s, 0.000084 s, -0.000001 s, × 0.9882, 42 µs/rev netbeans x_revs_x000_added_0_copies 6f360122949f 20eb231cc7d0 : 2 revs, 0.000107 s, 0.000111 s, +0.000004 s, × 1.0374, 55 µs/rev netbeans x_revs_x_added_x_copies 1ada3faf6fb6 5a39d12eecf4 : 3 revs, 0.000175 s, 0.000175 s, +0.000000 s, × 1.0000, 58 µs/rev netbeans x_revs_x00_added_x_copies 35be93ba1e2c 9eec5e90c05f : 9 revs, 0.000720 s, 0.000732 s, +0.000012 s, × 1.0167, 81 µs/rev netbeans x000_revs_xx00_added_0_copies eac3045b4fdd 51d4ae7f1290 : 1421 revs, 0.010019 s, 0.010062 s, +0.000043 s, × 1.0043, 7 µs/rev netbeans x000_revs_x000_added_x_copies e2063d266acd 6081d72689dc : 1533 revs, 0.015602 s, 0.015659 s, +0.000057 s, × 1.0037, 10 µs/rev netbeans x000_revs_x000_added_x000_copies ff453e9fee32 411350406ec2 : 5750 revs, 0.058759 s, 0.062744 s, +0.003985 s, × 1.0678, 10 µs/rev netbeans x0000_revs_xx000_added_x000_copies 588c2d1ced70 1aad62e59ddd : 66949 revs, 0.491550 s, 0.499449 s, +0.007899 s, × 1.0161, 7 µs/rev mozilla-central x_revs_x_added_0_copies 3697f962bb7b 7015fcdd43a2 : 2 revs, 0.000087 s, 0.000088 s, +0.000001 s, × 1.0115, 44 µs/rev mozilla-central x_revs_x000_added_0_copies dd390860c6c9 40d0c5bed75d : 8 revs, 0.000268 s, 0.000266 s, -0.000002 s, × 0.9925, 33 µs/rev mozilla-central x_revs_x_added_x_copies 8d198483ae3b 14207ffc2b2f : 9 revs, 0.000181 s, 0.000182 s, +0.000001 s, × 1.0055, 20 µs/rev mozilla-central x_revs_x00_added_x_copies 98cbc58cc6bc 446a150332c3 : 7 revs, 0.000661 s, 0.000656 s, -0.000005 s, × 0.9924, 93 µs/rev mozilla-central x_revs_x000_added_x000_copies 3c684b4b8f68 0a5e72d1b479 : 3 revs, 0.003256 s, 0.003389 s, +0.000133 s, × 1.0408, 1129 µs/rev mozilla-central x_revs_x0000_added_x0000_copies effb563bb7e5 c07a39dc4e80 : 6 revs, 0.066749 s, 0.075882 s, +0.009133 s, × 1.1368, 12647 µs/rev mozilla-central x000_revs_xx00_added_0_copies 6100d773079a 04a55431795e : 1593 revs, 0.006462 s, 0.006479 s, +0.000017 s, × 1.0026, 4 µs/rev mozilla-central x000_revs_x000_added_x_copies 9f17a6fc04f9 2d37b966abed : 41 revs, 0.004919 s, 0.004889 s, -0.000030 s, × 0.9939, 119 µs/rev mozilla-central x000_revs_x000_added_x000_copies 7c97034feb78 4407bd0c6330 : 7839 revs, 0.062421 s, 0.064394 s, +0.001973 s, × 1.0316, 8 µs/rev mozilla-central x0000_revs_xx000_added_0_copies 9eec5917337d 67118cc6dcad : 615 revs, 0.026633 s, 0.026815 s, +0.000182 s, × 1.0068, 43 µs/rev mozilla-central x0000_revs_xx000_added_x000_copies f78c615a656c 96a38b690156 : 30263 revs, 0.197792 s, 0.cc85eb s, +0.005072 s, × 1.0256, 6 µs/rev mozilla-central x00000_revs_x0000_added_x0000_copies 6832ae71433c 4c222a1d9a00 : 153721 revs, 1.259970 s, 1.219445 s, -0.040525 s, × 0.9678, 7 µs/rev mozilla-central x00000_revs_x00000_added_x000_copies 76caed42cf7c 1daa622bbe42 : 204976 revs, 1.689184 s, 1.613857 s, -0.075327 s, × 0.9554, 7 µs/rev mozilla-try x_revs_x_added_0_copies aaf6dde0deb8 9790f499805a : 2 revs, 0.000865 s, 0.000873 s, +0.000008 s, × 1.0092, 436 µs/rev mozilla-try x_revs_x000_added_0_copies d8d0222927b4 5bb8ce8c7450 : 2 revs, 0.000893 s, 0.000885 s, -0.000008 s, × 0.9910, 442 µs/rev mozilla-try x_revs_x_added_x_copies 092fcca11bdb 936255a0384a : 4 revs, 0.000172 s, 0.000161 s, -0.000011 s, × 0.9360, 40 µs/rev mozilla-try x_revs_x00_added_x_copies b53d2fadbdb5 017afae788ec : 2 revs, 0.001159 s, 0.001138 s, -0.000021 s, × 0.9819, 569 µs/rev mozilla-try x_revs_x000_added_x000_copies 20408ad61ce5 6f0ee96e21ad : 1 revs, 0.031621 s, 0.033399 s, +0.001778 s, × 1.0562, 33399 µs/rev mozilla-try x_revs_x0000_added_x0000_copies effb563bb7e5 c07a39dc4e80 : 6 revs, 0.068571 s, 0.075445 s, +0.006874 s, × 1.1002, 12574 µs/rev mozilla-try x000_revs_xx00_added_0_copies 6100d773079a 04a55431795e : 1593 revs, 0.006452 s, 0.006456 s, +0.000004 s, × 1.0006, 4 µs/rev mozilla-try x000_revs_x000_added_x_copies 9f17a6fc04f9 2d37b966abed : 41 revs, 0.005443 s, 0.005462 s, +0.000019 s, × 1.0035, 133 µs/rev mozilla-try x000_revs_x000_added_x000_copies 1346fd0130e4 4c65cbdabc1f : 6657 revs, 0.063180 s, 0.064117 s, +0.000937 s, × 1.0148, 9 µs/rev mozilla-try x0000_revs_x_added_0_copies 63519bfd42ee a36a2a865d92 : 40314 revs, 0.293564 s, 0.297563 s, +0.003999 s, × 1.0136, 7 µs/rev mozilla-try x0000_revs_x_added_x_copies 9fe69ff0762d bcabf2a78927 : 38690 revs, 0.286595 s, 0.282463 s, -0.004132 s, × 0.9856, 7 µs/rev mozilla-try x0000_revs_xx000_added_x_copies 156f6e2674f2 4d0f2c178e66 : 8598 revs, 0.083256 s, 0.084038 s, +0.000782 s, × 1.0094, 9 µs/rev mozilla-try x0000_revs_xx000_added_0_copies 9eec5917337d 67118cc6dcad : 615 revs, 0.027282 s, 0.027306 s, +0.000024 s, × 1.0009, 44 µs/rev mozilla-try x0000_revs_xx000_added_x000_copies 89294cd501d9 7ccb2fc7ccb5 : 97052 revs, 1.343373 s, 1.465264 s, +0.121891 s, × 1.0907, 15 µs/rev mozilla-try x0000_revs_x0000_added_x0000_copies e928c65095ed e951f4ad123a : 52031 revs, 0.665737 s, 0.690376 s, +0.024639 s, × 1.0370, 13 µs/rev mozilla-try x00000_revs_x_added_0_copies 6a320851d377 1ebb79acd503 : 363753 revs, 5.138169 s, 4.011322 s, -1.126847 s, × 0.7807, 11 µs/rev mozilla-try x00000_revs_x00000_added_0_copies dc8a3ca7010e d16fde900c9c : 34414 revs, 0.573276 s, 0.573541 s, +0.000265 s, × 1.0005, 16 µs/rev mozilla-try x00000_revs_x_added_x_copies 5173c4b6f97c 95d83ee7242d : 362229 revs, 5.127809 s, 3.981133 s, -1.146676 s, × 0.7764, 10 µs/rev mozilla-try x00000_revs_x000_added_x_copies 9126823d0e9c ca82787bb23c : 359344 revs, 4.971136 s, 3.996647 s, -0.974489 s, × 0.8040, 11 µs/rev mozilla-try x00000_revs_x0000_added_x0000_copies 8d3fafa80d4b eb884023b810 : 192665 revs, 1.741678 s, 1.520607 s, -0.221071 s, × 0.8731, 7 µs/rev mozilla-try x00000_revs_x00000_added_x0000_copies 1b661134e2ca 1ae03d022d6d : 228985 revs, 40.314822 s, 50.244975 s, +9.930153 s, × 1.2463, 219 µs/rev mozilla-try x00000_revs_x00000_added_x000_copies 9b2a99adc05e 8e29777b48e6 : 382065 revs, 20.048029 s, 20.030023 s, -0.018006 s, × 0.9991, 52 µs/rev private : 459513 revs, 37.179470 s, 24.490825 s, -12.688645 s, × 0.6587, 53 µs/rev ### Compared to the filelog based copy tracing Repo Case Source-Rev Dest-Rev # of revisions old time new time Difference Factor time per rev --------------------------------------------------------------------------------------------------------------------------------------------------------------- mercurial x_revs_x_added_0_copies ad6b123de1c7 39cfcef4f463 : 1 revs, 0.000918 s, 0.000041 s, -0.000877 s, × 0.044662, 40 µs/rev mercurial x_revs_x_added_x_copies 2b1c78674230 0c1d10351869 : 6 revs, 0.001853 s, 0.000116 s, -0.001737 s, × 0.062601, 19 µs/rev mercurial x000_revs_x000_added_x_copies 81f8ff2a9bf2 dd3267698d84 : 1032 revs, 0.018994 s, 0.004933 s, -0.014061 s, × 0.259714, 4 µs/rev pypy x_revs_x_added_0_copies aed021ee8ae8 099ed31b181b : 9 revs, 0.001532 s, 0.000193 s, -0.001339 s, × 0.125979, 21 µs/rev pypy x_revs_x000_added_0_copies 4aa4e1f8e19a 359343b9ac0e : 1 revs, 0.210633 s, 0.000048 s, -0.210585 s, × 0.000228, 47 µs/rev pypy x_revs_x_added_x_copies ac52eb7bbbb0 72e022663155 : 7 revs, 0.017041 s, 0.000114 s, -0.016927 s, × 0.006690, 16 µs/rev pypy x_revs_x00_added_x_copies c3b14617fbd7 ace7255d9a26 : 1 revs, 0.019474 s, 0.000319 s, -0.019155 s, × 0.016381, 318 µs/rev pypy x_revs_x000_added_x000_copies df6f7a526b60 a83dc6a2d56f : 6 revs, 0.763136 s, 0.012025 s, -0.751111 s, × 0.015757, 2003 µs/rev pypy x000_revs_xx00_added_0_copies 89a76aede314 2f22446ff07e : 4785 revs, 1.226569 s, 0.050525 s, -1.176044 s, × 0.041192, 10 µs/rev pypy x000_revs_x000_added_x_copies 8a3b5bfd266e 2c68e87c3efe : 6780 revs, 1.314572 s, 0.085713 s, -1.228859 s, × 0.065202, 12 µs/rev pypy x000_revs_x000_added_x000_copies 89a76aede314 7b3dda341c84 : 5441 revs, 1.686022 s, 0.061825 s, -1.624197 s, × 0.036669, 11 µs/rev pypy x0000_revs_x_added_0_copies d1defd0dc478 c9cb1334cc78 : 43645 revs, 0.001110 s, 0.543998 s, +0.542888 s, × 490.0882, 12 µs/rev pypy x0000_revs_xx000_added_0_copies bf2c629d0071 4ffed77c095c : 2 revs, 1.106265 s, 0.013455 s, -1.092810 s, × 0.012163, 6724 µs/rev pypy x0000_revs_xx000_added_x000_copies 08ea3258278e d9fa043f30c0 : 11316 revs, 1.377398 s, 0.117479 s, -1.259919 s, × 0.085291, 10 µs/rev netbeans x_revs_x_added_0_copies fb0955ffcbcd a01e9239f9e7 : 2 revs, 0.028579 s, 0.000084 s, -0.028495 s, × 0.002939, 41 µs/rev netbeans x_revs_x000_added_0_copies 6f360122949f 20eb231cc7d0 : 2 revs, 0.133644 s, 0.000111 s, -0.133533 s, × 0.000831, 55 µs/rev netbeans x_revs_x_added_x_copies 1ada3faf6fb6 5a39d12eecf4 : 3 revs, 0.025988 s, 0.000175 s, -0.025813 s, × 0.006734, 58 µs/rev netbeans x_revs_x00_added_x_copies 35be93ba1e2c 9eec5e90c05f : 9 revs, 0.053011 s, 0.000732 s, -0.052279 s, × 0.013808, 81 µs/rev netbeans x000_revs_xx00_added_0_copies eac3045b4fdd 51d4ae7f1290 : 1421 revs, 0.037858 s, 0.010062 s, -0.027796 s, × 0.265783, 7 µs/rev netbeans x000_revs_x000_added_x_copies e2063d266acd 6081d72689dc : 1533 revs, 0.200517 s, 0.015659 s, -0.184858 s, × 0.078093, 10 µs/rev netbeans x000_revs_x000_added_x000_copies ff453e9fee32 411350406ec2 : 5750 revs, 0.964542 s, 0.062744 s, -0.901798 s, × 0.065051, 10 µs/rev netbeans x0000_revs_xx000_added_x000_copies 588c2d1ced70 1aad62e59ddd : 66949 revs, 3.976210 s, 0.499449 s, -3.476761 s, × 0.125609, 7 µs/rev mozilla-central x_revs_x_added_0_copies 3697f962bb7b 7015fcdd43a2 : 2 revs, 0.025172 s, 0.000088 s, -0.025084 s, × 0.003496, 43 µs/rev mozilla-central x_revs_x000_added_0_copies dd390860c6c9 40d0c5bed75d : 8 revs, 0.145144 s, 0.000266 s, -0.144878 s, × 0.001833, 33 µs/rev mozilla-central x_revs_x_added_x_copies 8d198483ae3b 14207ffc2b2f : 9 revs, 0.026139 s, 0.000182 s, -0.025957 s, × 0.006963, 20 µs/rev mozilla-central x_revs_x00_added_x_copies 98cbc58cc6bc 446a150332c3 : 7 revs, 0.086184 s, 0.000656 s, -0.085528 s, × 0.007612, 93 µs/rev mozilla-central x_revs_x000_added_x000_copies 3c684b4b8f68 0a5e72d1b479 : 3 revs, 0.203187 s, 0.003389 s, -0.199798 s, × 0.016679, 1129 µs/rev mozilla-central x_revs_x0000_added_x0000_copies effb563bb7e5 c07a39dc4e80 : 6 revs, 2.255675 s, 0.075882 s, -2.179793 s, × 0.033640, 12644 µs/rev mozilla-central x000_revs_xx00_added_0_copies 6100d773079a 04a55431795e : 1593 revs, 0.091147 s, 0.006479 s, -0.084668 s, × 0.071083, 4 µs/rev mozilla-central x000_revs_x000_added_x_copies 9f17a6fc04f9 2d37b966abed : 41 revs, 0.767530 s, 0.004889 s, -0.762641 s, × 0.006370, 119 µs/rev mozilla-central x000_revs_x000_added_x000_copies 7c97034feb78 4407bd0c6330 : 7839 revs, 1.185330 s, 0.064394 s, -1.120936 s, × 0.054326, 8 µs/rev mozilla-central x0000_revs_xx000_added_0_copies 9eec5917337d 67118cc6dcad : 615 revs, 6.831179 s, 0.026815 s, -6.804364 s, × 0.003925, 43 µs/rev mozilla-central x0000_revs_xx000_added_x000_copies f78c615a656c 96a38b690156 : 30263 revs, 3.373551 s, 0.cc85eb s, -3.170687 s, × 0.060134, 6 µs/rev mozilla-central x00000_revs_x0000_added_x0000_copies 6832ae71433c 4c222a1d9a00 : 153721 revs, 16.540604 s, 1.219445 s, -15.321159 s, × 0.073724, 7 µs/rev mozilla-central x00000_revs_x00000_added_x000_copies 76caed42cf7c 1daa622bbe42 : 204976 revs, 21.527155 s, 1.613857 s, -19.913298 s, × 0.074968, 7 µs/rev mozilla-try x_revs_x_added_0_copies aaf6dde0deb8 9790f499805a : 2 revs, 0.084540 s, 0.000873 s, -0.083667 s, × 0.010326, 436 µs/rev mozilla-try x_revs_x000_added_0_copies d8d0222927b4 5bb8ce8c7450 : 2 revs, 0.507151 s, 0.000885 s, -0.506266 s, × 0.001745, 442 µs/rev mozilla-try x_revs_x_added_x_copies 092fcca11bdb 936255a0384a : 4 revs, 0.021748 s, 0.000161 s, -0.021587 s, × 0.007403, 40 µs/rev mozilla-try x_revs_x00_added_x_copies b53d2fadbdb5 017afae788ec : 2 revs, 0.236786 s, 0.001138 s, -0.235648 s, × 0.004806, 568 µs/rev mozilla-try x_revs_x000_added_x000_copies 20408ad61ce5 6f0ee96e21ad : 1 revs, 1.111735 s, 0.033399 s, -1.078336 s, × 0.030042, 33365 µs/rev mozilla-try x_revs_x0000_added_x0000_copies effb563bb7e5 c07a39dc4e80 : 6 revs, 2.228030 s, 0.075445 s, -2.152585 s, × 0.033862, 12572 µs/rev mozilla-try x000_revs_xx00_added_0_copies 6100d773079a 04a55431795e : 1593 revs, 0.091289 s, 0.006456 s, -0.084833 s, × 0.070720, 4 µs/rev mozilla-try x000_revs_x000_added_x_copies 9f17a6fc04f9 2d37b966abed : 41 revs, 0.771361 s, 0.005462 s, -0.765899 s, × 0.007081, 133 µs/rev mozilla-try x000_revs_x000_added_x000_copies 1346fd0130e4 4c65cbdabc1f : 6657 revs, 1.189483 s, 0.064117 s, -1.125366 s, × 0.053903, 9 µs/rev mozilla-try x0000_revs_x_added_0_copies 63519bfd42ee a36a2a865d92 : 40314 revs, 0.089756 s, 0.297563 s, +0.207807 s, × 3.315244, 7 µs/rev mozilla-try x0000_revs_x_added_x_copies 9fe69ff0762d bcabf2a78927 : 38690 revs, 0.084888 s, 0.282463 s, +0.197575 s, × 3.327479, 7 µs/rev mozilla-try x0000_revs_xx000_added_x_copies 156f6e2674f2 4d0f2c178e66 : 8598 revs, 7.682665 s, 0.084038 s, -7.598627 s, × 0.010939, 9 µs/rev mozilla-try x0000_revs_xx000_added_0_copies 9eec5917337d 67118cc6dcad : 615 revs, 6.894680 s, 0.027306 s, -6.867374 s, × 0.003960, 44 µs/rev mozilla-try x0000_revs_xx000_added_x000_copies 89294cd501d9 7ccb2fc7ccb5 : 97052 revs, 7.650907 s, 1.465264 s, -6.185643 s, × 0.191515, 15 µs/rev mozilla-try x0000_revs_x0000_added_x0000_copies e928c65095ed e951f4ad123a : 52031 revs, 9.898788 s, 0.690376 s, -9.208412 s, × 0.069743, 13 µs/rev mozilla-try x00000_revs_x_added_0_copies 6a320851d377 1ebb79acd503 : 363753 revs, 0.092208 s, 4.011322 s, +3.919114 s, × 43.50297, 11 µs/rev mozilla-try x00000_revs_x00000_added_0_copies dc8a3ca7010e d16fde900c9c : 34414 revs, 28.130003 s, 0.573541 s, -27.556462 s, × 0.020389, 16 µs/rev mozilla-try x00000_revs_x_added_x_copies 5173c4b6f97c 95d83ee7242d : 362229 revs, 0.093366 s, 3.981133 s, +3.887767 s, × 42.64007, 10 µs/rev mozilla-try x00000_revs_x000_added_x_copies 9126823d0e9c ca82787bb23c : 359344 revs, 0.229368 s, 3.996647 s, +3.767279 s, × 17.42460, 11 µs/rev mozilla-try x00000_revs_x0000_added_x0000_copies 8d3fafa80d4b eb884023b810 : 192665 revs, 19.624851 s, 1.520607 s, -18.104244 s, × 0.077484, 7 µs/rev mozilla-try x00000_revs_x00000_added_x0000_copies 1b661134e2ca 1ae03d022d6d : 228985 revs, 22.070126 s, 50.244975 s, +28.174849 s, × 2.276606, 219 µs/rev mozilla-try x00000_revs_x00000_added_x000_copies 9b2a99adc05e 8e29777b48e6 : 382065 revs, 26.006524 s, 20.030023 s, -5.976501 s, × 0.770192, 52 µs/rev private : 459513 revs, 18.704612 s, 24.490825 s, +5.786213 s, × 1.309347, 53 µs/rev Differential Revision: https://phab.mercurial-scm.org/D9656
Mon, 21 Dec 2020 11:20:31 +0100 copies-rust: use simpler overwrite when value on both side are identical
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 21 Dec 2020 11:20:31 +0100] rev 46584
copies-rust: use simpler overwrite when value on both side are identical If the value are the same, their "overwritten" set is the same and we don't need to combine them. It helps our slower cases Repo Case Source-Rev Dest-Rev # of revisions old time new time Difference Factor time per rev --------------------------------------------------------------------------------------------------------------------------------------------------------------- mozilla-try x00000_revs_x00000_added_x0000_copies 1b661134e2ca 1ae03d022d6d : 228985 revs, 86.722016 s, 80.828689 s, -5.893327 s, × 0.9320, 352 µs/rev mozilla-try x00000_revs_x00000_added_x000_copies 9b2a99adc05e 8e29777b48e6 : 382065 revs, 35.113727 s, 34.094064 s, -1.019663 s, × 0.9710, 89 µs/rev Full comparison with the previous revision below: Repo Case Source-Rev Dest-Rev # of revisions old time new time Difference Factor time per rev --------------------------------------------------------------------------------------------------------------------------------------------------------------- mercurial x_revs_x_added_0_copies ad6b123de1c7 39cfcef4f463 : 1 revs, 0.000043 s, 0.000043 s, +0.000000 s, × 1.0000, 43 µs/rev mercurial x_revs_x_added_x_copies 2b1c78674230 0c1d10351869 : 6 revs, 0.000114 s, 0.000114 s, +0.000000 s, × 1.0000, 19 µs/rev mercurial x000_revs_x000_added_x_copies 81f8ff2a9bf2 dd3267698d84 : 1032 revs, 0.004899 s, 0.004899 s, +0.000000 s, × 1.0000, 4 µs/rev pypy x_revs_x_added_0_copies aed021ee8ae8 099ed31b181b : 9 revs, 0.000196 s, 0.000196 s, +0.000000 s, × 1.0000, 21 µs/rev pypy x_revs_x000_added_0_copies 4aa4e1f8e19a 359343b9ac0e : 1 revs, 0.000050 s, 0.000049 s, -0.000001 s, × 0.9800, 49 µs/rev pypy x_revs_x_added_x_copies ac52eb7bbbb0 72e022663155 : 7 revs, 0.000125 s, 0.000117 s, -0.000008 s, × 0.9360, 16 µs/rev pypy x_revs_x00_added_x_copies c3b14617fbd7 ace7255d9a26 : 1 revs, 0.000321 s, 0.6f1f4a s, +0.000001 s, × 1.0031, 322 µs/rev pypy x_revs_x000_added_x000_copies df6f7a526b60 a83dc6a2d56f : 6 revs, 0.011948 s, 0.011856 s, -0.000092 s, × 0.9923, 1976 µs/rev pypy x000_revs_xx00_added_0_copies 89a76aede314 2f22446ff07e : 4785 revs, 0.051267 s, 0.050992 s, -0.000275 s, × 0.9946, 10 µs/rev pypy x000_revs_x000_added_x_copies 8a3b5bfd266e 2c68e87c3efe : 6780 revs, 0.087755 s, 0.087444 s, -0.000311 s, × 0.9965, 12 µs/rev pypy x000_revs_x000_added_x000_copies 89a76aede314 7b3dda341c84 : 5441 revs, 0.061818 s, 0.062487 s, +0.000669 s, × 1.0108, 11 µs/rev pypy x0000_revs_x_added_0_copies d1defd0dc478 c9cb1334cc78 : 43645 revs, 0.634253 s, 0.634909 s, +0.000656 s, × 1.0010, 14 µs/rev pypy x0000_revs_xx000_added_0_copies bf2c629d0071 4ffed77c095c : 2 revs, 0.013179 s, 0.013360 s, +0.000181 s, × 1.0137, 6680 µs/rev pypy x0000_revs_xx000_added_x000_copies 08ea3258278e d9fa043f30c0 : 11316 revs, 0.119643 s, 0.120775 s, +0.001132 s, × 1.0095, 10 µs/rev netbeans x_revs_x_added_0_copies fb0955ffcbcd a01e9239f9e7 : 2 revs, 0.000085 s, 0.000085 s, +0.000000 s, × 1.0000, 42 µs/rev netbeans x_revs_x000_added_0_copies 6f360122949f 20eb231cc7d0 : 2 revs, 0.000107 s, 0.000108 s, +0.000001 s, × 1.0093, 54 µs/rev netbeans x_revs_x_added_x_copies 1ada3faf6fb6 5a39d12eecf4 : 3 revs, 0.000176 s, 0.000176 s, +0.000000 s, × 1.0000, 58 µs/rev netbeans x_revs_x00_added_x_copies 35be93ba1e2c 9eec5e90c05f : 9 revs, 0.000743 s, 0.000747 s, +0.000004 s, × 1.0054, 83 µs/rev netbeans x000_revs_xx00_added_0_copies eac3045b4fdd 51d4ae7f1290 : 1421 revs, 0.010246 s, 0.010128 s, -0.000118 s, × 0.9885, 7 µs/rev netbeans x000_revs_x000_added_x_copies e2063d266acd 6081d72689dc : 1533 revs, 0.015853 s, 0.015899 s, +0.000046 s, × 1.0029, 10 µs/rev netbeans x000_revs_x000_added_x000_copies ff453e9fee32 411350406ec2 : 5750 revs, 0.062971 s, 0.062215 s, -0.000756 s, × 0.9880, 10 µs/rev netbeans x0000_revs_xx000_added_x000_copies 588c2d1ced70 1aad62e59ddd : 66949 revs, 0.518337 s, 0.521004 s, +0.002667 s, × 1.0051, 7 µs/rev mozilla-central x_revs_x_added_0_copies 3697f962bb7b 7015fcdd43a2 : 2 revs, 0.000090 s, 0.000090 s, +0.000000 s, × 1.0000, 45 µs/rev mozilla-central x_revs_x000_added_0_copies dd390860c6c9 40d0c5bed75d : 8 revs, 0.000268 s, 0.000264 s, -0.000004 s, × 0.9851, 33 µs/rev mozilla-central x_revs_x_added_x_copies 8d198483ae3b 14207ffc2b2f : 9 revs, 0.000187 s, 0.000186 s, -0.000001 s, × 0.9947, 20 µs/rev mozilla-central x_revs_x00_added_x_copies 98cbc58cc6bc 446a150332c3 : 7 revs, 0.000661 s, 0.000660 s, -0.000001 s, × 0.9985, 94 µs/rev mozilla-central x_revs_x000_added_x000_copies 3c684b4b8f68 0a5e72d1b479 : 3 revs, 0.003494 s, 0.003542 s, +0.000048 s, × 1.0137, 1180 µs/rev mozilla-central x_revs_x0000_added_x0000_copies effb563bb7e5 c07a39dc4e80 : 6 revs, 0.070509 s, 0.071574 s, +0.001065 s, × 1.0151, 11929 µs/rev mozilla-central x000_revs_xx00_added_0_copies 6100d773079a 04a55431795e : 1593 revs, 0.006489 s, 0.006498 s, +0.000009 s, × 1.0014, 4 µs/rev mozilla-central x000_revs_x000_added_x_copies 9f17a6fc04f9 2d37b966abed : 41 revs, 0.005070 s, 0.005206 s, +0.000136 s, × 1.0268, 126 µs/rev mozilla-central x000_revs_x000_added_x000_copies 7c97034feb78 4407bd0c6330 : 7839 revs, 0.065241 s, 0.065535 s, +0.000294 s, × 1.0045, 8 µs/rev mozilla-central x0000_revs_xx000_added_0_copies 9eec5917337d 67118cc6dcad : 615 revs, 0.027284 s, 0.027139 s, -0.000145 s, × 0.9947, 44 µs/rev mozilla-central x0000_revs_xx000_added_x000_copies f78c615a656c 96a38b690156 : 30263 revs, 0.203671 s, 0.201924 s, -0.001747 s, × 0.9914, 6 µs/rev mozilla-central x00000_revs_x0000_added_x0000_copies 6832ae71433c 4c222a1d9a00 : 153721 revs, 1.239373 s, 1.257201 s, +0.017828 s, × 1.0144, 8 µs/rev mozilla-central x00000_revs_x00000_added_x000_copies 76caed42cf7c 1daa622bbe42 : 204976 revs, 1.649803 s, 1.663045 s, +0.013242 s, × 1.0080, 8 µs/rev mozilla-try x_revs_x_added_0_copies aaf6dde0deb8 9790f499805a : 2 revs, 0.000868 s, 0.000866 s, -0.000002 s, × 0.9977, 433 µs/rev mozilla-try x_revs_x000_added_0_copies d8d0222927b4 5bb8ce8c7450 : 2 revs, 0.000885 s, 0.000883 s, -0.000002 s, × 0.9977, 441 µs/rev mozilla-try x_revs_x_added_x_copies 092fcca11bdb 936255a0384a : 4 revs, 0.000165 s, 0.000163 s, -0.000002 s, × 0.9879, 40 µs/rev mozilla-try x_revs_x00_added_x_copies b53d2fadbdb5 017afae788ec : 2 revs, 0.001147 s, 0.001139 s, -0.000008 s, × 0.9930, 569 µs/rev mozilla-try x_revs_x000_added_x000_copies 20408ad61ce5 6f0ee96e21ad : 1 revs, 0.032885 s, 0.032753 s, -0.000132 s, × 0.9960, 32752 µs/rev mozilla-try x_revs_x0000_added_x0000_copies effb563bb7e5 c07a39dc4e80 : 6 revs, 0.071304 s, 0.073266 s, +0.001962 s, × 1.0275, 12211 µs/rev mozilla-try x000_revs_xx00_added_0_copies 6100d773079a 04a55431795e : 1593 revs, 0.006506 s, 0.006567 s, +0.000061 s, × 1.0094, 4 µs/rev mozilla-try x000_revs_x000_added_x_copies 9f17a6fc04f9 2d37b966abed : 41 revs, 0.005486 s, 0.005427 s, -0.000059 s, × 0.9892, 132 µs/rev mozilla-try x000_revs_x000_added_x000_copies 1346fd0130e4 4c65cbdabc1f : 6657 revs, 0.064677 s, 0.064058 s, -0.000619 s, × 0.9904, 9 µs/rev mozilla-try x0000_revs_x_added_0_copies 63519bfd42ee a36a2a865d92 : 40314 revs, 0.306000 s, 0.303320 s, -0.002680 s, × 0.9912, 7 µs/rev mozilla-try x0000_revs_x_added_x_copies 9fe69ff0762d bcabf2a78927 : 38690 revs, 0.288217 s, 0.288456 s, +0.000239 s, × 1.0008, 7 µs/rev mozilla-try x0000_revs_xx000_added_x_copies 156f6e2674f2 4d0f2c178e66 : 8598 revs, 0.086117 s, 0.085925 s, -0.000192 s, × 0.9978, 9 µs/rev mozilla-try x0000_revs_xx000_added_0_copies 9eec5917337d 67118cc6dcad : 615 revs, 0.027512 s, 0.027302 s, -0.000210 s, × 0.9924, 44 µs/rev mozilla-try x0000_revs_xx000_added_x000_copies 89294cd501d9 7ccb2fc7ccb5 : 97052 revs, 1.998239 s, 2.034596 s, +0.036357 s, × 1.0182, 20 µs/rev mozilla-try x0000_revs_x0000_added_x0000_copies e928c65095ed e951f4ad123a : 52031 revs, 0.688201 s, 0.694030 s, +0.005829 s, × 1.0085, 13 µs/rev mozilla-try x00000_revs_x_added_0_copies 6a320851d377 1ebb79acd503 : 363753 revs, 4.389428 s, 4.407723 s, +0.018295 s, × 1.0042, 12 µs/rev mozilla-try x00000_revs_x00000_added_0_copies dc8a3ca7010e d16fde900c9c : 34414 revs, 0.578736 s, 0.574355 s, -0.004381 s, × 0.9924, 16 µs/rev mozilla-try x00000_revs_x_added_x_copies 5173c4b6f97c 95d83ee7242d : 362229 revs, 4.363599 s, 4.457827 s, +0.094228 s, × 1.0216, 12 µs/rev mozilla-try x00000_revs_x000_added_x_copies 9126823d0e9c ca82787bb23c : 359344 revs, 4.324129 s, 4.351696 s, +0.027567 s, × 1.0064, 12 µs/rev mozilla-try x00000_revs_x0000_added_x0000_copies 8d3fafa80d4b eb884023b810 : 192665 revs, 1.565727 s, 1.570065 s, +0.004338 s, × 1.0028, 8 µs/rev mozilla-try x00000_revs_x00000_added_x0000_copies 1b661134e2ca 1ae03d022d6d : 228985 revs, 86.722016 s, 80.828689 s, -5.893327 s, × 0.9320, 352 µs/rev mozilla-try x00000_revs_x00000_added_x000_copies 9b2a99adc05e 8e29777b48e6 : 382065 revs, 35.113727 s, 34.094064 s, -1.019663 s, × 0.9710, 89 µs/rev private : 459513 revs, 27.397070 s, 27.435529 s, +0.038459 s, × 1.0014, 59 µs/rev Differential Revision: https://phab.mercurial-scm.org/D9655
Mon, 21 Dec 2020 11:15:45 +0100 copies-rust: make more use of the new comparison property
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 21 Dec 2020 11:15:45 +0100] rev 46583
copies-rust: make more use of the new comparison property We deal with the "both are the same" sooner and simplify the rest of the conditional. Differential Revision: https://phab.mercurial-scm.org/D9654
Wed, 16 Dec 2020 11:11:05 +0100 copies-rust: implement PartialEqual manually
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 16 Dec 2020 11:11:05 +0100] rev 46582
copies-rust: implement PartialEqual manually Now that we know that each (dest, rev) pair has at most a unique CopySource, we can simplify comparison a lot. This "simple" step buy a good share of the previous slowdown back in some case: Repo Case Source-Rev Dest-Rev # of revisions old time new time Difference Factor time per rev --------------------------------------------------------------------------------------------------------------------------------------------------------------- mozilla-try x00000_revs_x00000_added_x000_copies 9b2a99adc05e 8e29777b48e6 : 382065 revs, 43.304637 s, 34.443661 s, -8.860976 s, × 0.7954, 90 µs/rev Full benchmark: Repo Case Source-Rev Dest-Rev # of revisions old time new time Difference Factor time per rev --------------------------------------------------------------------------------------------------------------------------------------------------------------- mercurial x_revs_x_added_0_copies ad6b123de1c7 39cfcef4f463 : 1 revs, 0.000043 s, 0.000043 s, +0.000000 s, × 1.0000, 43 µs/rev mercurial x_revs_x_added_x_copies 2b1c78674230 0c1d10351869 : 6 revs, 0.000114 s, 0.000117 s, +0.000003 s, × 1.0263, 19 µs/rev mercurial x000_revs_x000_added_x_copies 81f8ff2a9bf2 dd3267698d84 : 1032 revs, 0.004937 s, 0.004892 s, -0.000045 s, × 0.9909, 4 µs/rev pypy x_revs_x_added_0_copies aed021ee8ae8 099ed31b181b : 9 revs, 0.000339 s, 0.000196 s, -0.000143 s, × 0.5782, 21 µs/rev pypy x_revs_x000_added_0_copies 4aa4e1f8e19a 359343b9ac0e : 1 revs, 0.000049 s, 0.000050 s, +0.000001 s, × 1.0204, 50 µs/rev pypy x_revs_x_added_x_copies ac52eb7bbbb0 72e022663155 : 7 revs, 0.000202 s, 0.000117 s, -0.000085 s, × 0.5792, 16 µs/rev pypy x_revs_x00_added_x_copies c3b14617fbd7 ace7255d9a26 : 1 revs, 0.000409 s, 0.6f1f4a s, -0.000087 s, × 0.7873, 322 µs/rev pypy x_revs_x000_added_x000_copies df6f7a526b60 a83dc6a2d56f : 6 revs, 0.011984 s, 0.011949 s, -0.000035 s, × 0.9971, 1991 µs/rev pypy x000_revs_xx00_added_0_copies 89a76aede314 2f22446ff07e : 4785 revs, 0.050820 s, 0.050802 s, -0.000018 s, × 0.9996, 10 µs/rev pypy x000_revs_x000_added_x_copies 8a3b5bfd266e 2c68e87c3efe : 6780 revs, 0.087953 s, 0.088090 s, +0.000137 s, × 1.0016, 12 µs/rev pypy x000_revs_x000_added_x000_copies 89a76aede314 7b3dda341c84 : 5441 revs, 0.062902 s, 0.062079 s, -0.000823 s, × 0.9869, 11 µs/rev pypy x0000_revs_x_added_0_copies d1defd0dc478 c9cb1334cc78 : 43645 revs, 0.679234 s, 0.635337 s, -0.043897 s, × 0.9354, 14 µs/rev pypy x0000_revs_xx000_added_0_copies bf2c629d0071 4ffed77c095c : 2 revs, 0.013095 s, 0.013262 s, +0.000167 s, × 1.0128, 6631 µs/rev pypy x0000_revs_xx000_added_x000_copies 08ea3258278e d9fa043f30c0 : 11316 revs, 0.120910 s, 0.120085 s, -0.000825 s, × 0.9932, 10 µs/rev netbeans x_revs_x_added_0_copies fb0955ffcbcd a01e9239f9e7 : 2 revs, 0.000087 s, 0.000085 s, -0.000002 s, × 0.9770, 42 µs/rev netbeans x_revs_x000_added_0_copies 6f360122949f 20eb231cc7d0 : 2 revs, 0.000107 s, 0.000110 s, +0.000003 s, × 1.0280, 55 µs/rev netbeans x_revs_x_added_x_copies 1ada3faf6fb6 5a39d12eecf4 : 3 revs, 0.000186 s, 0.000177 s, -0.000009 s, × 0.9516, 59 µs/rev netbeans x_revs_x00_added_x_copies 35be93ba1e2c 9eec5e90c05f : 9 revs, 0.000754 s, 0.000743 s, -0.000011 s, × 0.9854, 82 µs/rev netbeans x000_revs_xx00_added_0_copies eac3045b4fdd 51d4ae7f1290 : 1421 revs, 0.010443 s, 0.010168 s, -0.000275 s, × 0.9737, 7 µs/rev netbeans x000_revs_x000_added_x_copies e2063d266acd 6081d72689dc : 1533 revs, 0.015697 s, 0.015946 s, +0.000249 s, × 1.0159, 10 µs/rev netbeans x000_revs_x000_added_x000_copies ff453e9fee32 411350406ec2 : 5750 revs, 0.063528 s, 0.062712 s, -0.000816 s, × 0.9872, 10 µs/rev netbeans x0000_revs_xx000_added_x000_copies 588c2d1ced70 1aad62e59ddd : 66949 revs, 0.545515 s, 0.523832 s, -0.021683 s, × 0.9603, 7 µs/rev mozilla-central x_revs_x_added_0_copies 3697f962bb7b 7015fcdd43a2 : 2 revs, 0.000089 s, 0.000090 s, +0.000001 s, × 1.0112, 45 µs/rev mozilla-central x_revs_x000_added_0_copies dd390860c6c9 40d0c5bed75d : 8 revs, 0.000265 s, 0.000264 s, -0.000001 s, × 0.9962, 33 µs/rev mozilla-central x_revs_x_added_x_copies 8d198483ae3b 14207ffc2b2f : 9 revs, 0.000381 s, 0.000187 s, -0.000194 s, × 0.4908, 20 µs/rev mozilla-central x_revs_x00_added_x_copies 98cbc58cc6bc 446a150332c3 : 7 revs, 0.000672 s, 0.000665 s, -0.000007 s, × 0.9896, 95 µs/rev mozilla-central x_revs_x000_added_x000_copies 3c684b4b8f68 0a5e72d1b479 : 3 revs, 0.003497 s, 0.003556 s, +0.000059 s, × 1.0169, 1185 µs/rev mozilla-central x_revs_x0000_added_x0000_copies effb563bb7e5 c07a39dc4e80 : 6 revs, 0.073204 s, 0.071345 s, -0.001859 s, × 0.9746, 11890 µs/rev mozilla-central x000_revs_xx00_added_0_copies 6100d773079a 04a55431795e : 1593 revs, 0.006482 s, 0.006551 s, +0.000069 s, × 1.0106, 4 µs/rev mozilla-central x000_revs_x000_added_x_copies 9f17a6fc04f9 2d37b966abed : 41 revs, 0.005066 s, 0.005078 s, +0.000012 s, × 1.0024, 123 µs/rev mozilla-central x000_revs_x000_added_x000_copies 7c97034feb78 4407bd0c6330 : 7839 revs, 0.065707 s, 0.065823 s, +0.000116 s, × 1.0018, 8 µs/rev mozilla-central x0000_revs_xx000_added_0_copies 9eec5917337d 67118cc6dcad : 615 revs, 0.026800 s, 0.027050 s, +0.000250 s, × 1.0093, 43 µs/rev mozilla-central x0000_revs_xx000_added_x000_copies f78c615a656c 96a38b690156 : 30263 revs, 0.203856 s, 0.202443 s, -0.001413 s, × 0.9931, 6 µs/rev mozilla-central x00000_revs_x0000_added_x0000_copies 6832ae71433c 4c222a1d9a00 : 153721 revs, 1.293394 s, 1.261583 s, -0.031811 s, × 0.9754, 8 µs/rev mozilla-central x00000_revs_x00000_added_x000_copies 76caed42cf7c 1daa622bbe42 : 204976 revs, 1.698239 s, 1.643869 s, -0.054370 s, × 0.9680, 8 µs/rev mozilla-try x_revs_x_added_0_copies aaf6dde0deb8 9790f499805a : 2 revs, 0.000875 s, 0.000868 s, -0.000007 s, × 0.9920, 434 µs/rev mozilla-try x_revs_x000_added_0_copies d8d0222927b4 5bb8ce8c7450 : 2 revs, 0.000891 s, 0.000887 s, -0.000004 s, × 0.9955, 443 µs/rev mozilla-try x_revs_x_added_x_copies 092fcca11bdb 936255a0384a : 4 revs, 0.000292 s, 0.000168 s, -0.000124 s, × 0.5753, 42 µs/rev mozilla-try x_revs_x00_added_x_copies b53d2fadbdb5 017afae788ec : 2 revs, 0.003939 s, 0.001160 s, -0.002779 s, × 0.2945, 580 µs/rev mozilla-try x_revs_x000_added_x000_copies 20408ad61ce5 6f0ee96e21ad : 1 revs, 0.033027 s, 0.033016 s, -0.000011 s, × 0.9997, 33016 µs/rev mozilla-try x_revs_x0000_added_x0000_copies effb563bb7e5 c07a39dc4e80 : 6 revs, 0.073703 s, 0.073312 s, -0.39ae31 s, × 0.9947, 12218 µs/rev mozilla-try x000_revs_xx00_added_0_copies 6100d773079a 04a55431795e : 1593 revs, 0.006469 s, 0.006485 s, +0.000016 s, × 1.0025, 4 µs/rev mozilla-try x000_revs_x000_added_x_copies 9f17a6fc04f9 2d37b966abed : 41 revs, 0.005278 s, 0.005494 s, +0.000216 s, × 1.0409, 134 µs/rev mozilla-try x000_revs_x000_added_x000_copies 1346fd0130e4 4c65cbdabc1f : 6657 revs, 0.064995 s, 0.064879 s, -0.000116 s, × 0.9982, 9 µs/rev mozilla-try x0000_revs_x_added_0_copies 63519bfd42ee a36a2a865d92 : 40314 revs, 0.301041 s, 0.301469 s, +0.000428 s, × 1.0014, 7 µs/rev mozilla-try x0000_revs_x_added_x_copies 9fe69ff0762d bcabf2a78927 : 38690 revs, 0.285575 s, 0.297113 s, +0.011538 s, × 1.0404, 7 µs/rev mozilla-try x0000_revs_xx000_added_x_copies 156f6e2674f2 4d0f2c178e66 : 8598 revs, 0.085597 s, 0.085890 s, +0.000293 s, × 1.0034, 9 µs/rev mozilla-try x0000_revs_xx000_added_0_copies 9eec5917337d 67118cc6dcad : 615 revs, 0.027118 s, 0.027718 s, +0.000600 s, × 1.0221, 45 µs/rev mozilla-try x0000_revs_xx000_added_x000_copies 89294cd501d9 7ccb2fc7ccb5 : 97052 revs, 2.119204 s, 2.048949 s, -0.070255 s, × 0.9668, 21 µs/rev mozilla-try x0000_revs_x0000_added_x0000_copies e928c65095ed e951f4ad123a : 52031 revs, 0.701479 s, 0.685924 s, -0.015555 s, × 0.9778, 13 µs/rev mozilla-try x00000_revs_x_added_0_copies 6a320851d377 1ebb79acd503 : 363753 revs, 4.482399 s, 4.482891 s, +0.000492 s, × 1.0001, 12 µs/rev mozilla-try x00000_revs_x00000_added_0_copies dc8a3ca7010e d16fde900c9c : 34414 revs, 0.574082 s, 0.577633 s, +0.003551 s, × 1.0062, 16 µs/rev mozilla-try x00000_revs_x_added_x_copies 5173c4b6f97c 95d83ee7242d : 362229 revs, 4.480366 s, 4.397816 s, -0.082550 s, × 0.9816, 12 µs/rev mozilla-try x00000_revs_x000_added_x_copies 9126823d0e9c ca82787bb23c : 359344 revs, 4.369070 s, 4.370538 s, +0.001468 s, × 1.0003, 12 µs/rev mozilla-try x00000_revs_x0000_added_x0000_copies 8d3fafa80d4b eb884023b810 : 192665 revs, 1.592506 s, 1.570439 s, -0.022067 s, × 0.9861, 8 µs/rev mozilla-try x00000_revs_x00000_added_x0000_copies 1b661134e2ca 1ae03d022d6d : 228985 revs, 87.824489 s, 88.388512 s, +0.564023 s, × 1.0064, 386 µs/rev mozilla-try x00000_revs_x00000_added_x000_copies 9b2a99adc05e 8e29777b48e6 : 382065 revs, 43.304637 s, 34.443661 s, -8.860976 s, × 0.7954, 90 µs/rev private : 459513 revs, 33.853687 s, 27.370148 s, -6.483539 s, × 0.8085, 59 µs/rev Differential Revision: https://phab.mercurial-scm.org/D9653
Wed, 16 Dec 2020 11:06:58 +0100 copies-rust: record "overwritten" information from both side on delete
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 16 Dec 2020 11:06:58 +0100] rev 46581
copies-rust: record "overwritten" information from both side on delete With this change, we can ensure every (`dest`, `rev`) points to the same value, making a lots of comparison simpler. Differential Revision: https://phab.mercurial-scm.org/D9652
Wed, 16 Dec 2020 10:59:00 +0100 copies-rust: refactor the "deletion" case
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 16 Dec 2020 10:59:00 +0100] rev 46580
copies-rust: refactor the "deletion" case We rearrange the code to single out the case where information need to be overwritten on both side of the merge. This open the way to better dealing with this case. Differential Revision: https://phab.mercurial-scm.org/D9651
Wed, 16 Dec 2020 10:46:08 +0100 copies-rust: process copy information of both parent at the same time
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 16 Dec 2020 10:46:08 +0100] rev 46579
copies-rust: process copy information of both parent at the same time This avoid a double iteration and this open the way to a better handing of deletion. That better handling of deletion is the core reason we are doing this refactoring. Differential Revision: https://phab.mercurial-scm.org/D9650
Mon, 21 Dec 2020 10:24:16 +0100 copies-rust: yield both p1 and p2 copies in `ChangedFiles.actions()`
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 21 Dec 2020 10:24:16 +0100] rev 46578
copies-rust: yield both p1 and p2 copies in `ChangedFiles.actions()` Instead of filtering the relevant parent inside de ChangedFiles method, we now yield all copies information and let the caller do the filtering. Soon, the filtering will be replaced by dispatching. Differential Revision: https://phab.mercurial-scm.org/D9649
Wed, 16 Dec 2020 10:01:34 +0100 copies-rust: extract the processing of a single copy information
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 16 Dec 2020 10:01:34 +0100] rev 46577
copies-rust: extract the processing of a single copy information This will make it easy to process copy from both p1 and p2 in the same `add_from_changes` call. Differential Revision: https://phab.mercurial-scm.org/D9648
Wed, 16 Dec 2020 09:42:04 +0100 copies-rust: use matching to select the final copies information
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 16 Dec 2020 09:42:04 +0100] rev 46576
copies-rust: use matching to select the final copies information This is a bit more idiomatic and this prepare a future refactoring where InternalCopies from both parent would be updated at the same time. Differential Revision: https://phab.mercurial-scm.org/D9647
Wed, 16 Dec 2020 09:30:25 +0100 copies-rust: get the parents' copies earlier
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 16 Dec 2020 09:30:25 +0100] rev 46575
copies-rust: get the parents' copies earlier This remove some conditional nesting and prepare for future work were we will unify the handling of copies from p1 and p2. Differential Revision: https://phab.mercurial-scm.org/D9646
Tue, 09 Mar 2021 11:19:11 +0530 Added signature for changeset d5d9177c0045 stable
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 09 Mar 2021 11:19:11 +0530] rev 46574
Added signature for changeset d5d9177c0045
Tue, 09 Mar 2021 11:19:01 +0530 Added tag 5.7.1 for changeset d5d9177c0045 stable
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 09 Mar 2021 11:19:01 +0530] rev 46573
Added tag 5.7.1 for changeset d5d9177c0045
Mon, 08 Mar 2021 16:55:39 -0500 localrepo: fix conversion of exceptions to strings flagged by pytype stable 5.7.1
Matt Harbison <matt_harbison@yahoo.com> [Mon, 08 Mar 2021 16:55:39 -0500] rev 46572
localrepo: fix conversion of exceptions to strings flagged by pytype This is the same as e571fec5b606. I assume the 3 similar uses of `bytestr` in `__getitem__()` are OK (even though pytype also flags them), because there is apparently test coverage for 2 of the 3 cases. Differential Revision: https://phab.mercurial-scm.org/D10131
Mon, 08 Mar 2021 16:54:33 -0500 localrepo: fix a UI string to be bytes stable
Matt Harbison <matt_harbison@yahoo.com> [Mon, 08 Mar 2021 16:54:33 -0500] rev 46571
localrepo: fix a UI string to be bytes Flagged by pytype. Differential Revision: https://phab.mercurial-scm.org/D10130
Mon, 08 Mar 2021 12:28:53 -0500 pycompat: fix a bytes vs str issue in `unnamedtempfile()` stable
Matt Harbison <matt_harbison@yahoo.com> [Mon, 08 Mar 2021 12:28:53 -0500] rev 46570
pycompat: fix a bytes vs str issue in `unnamedtempfile()` This seems trivially correct, though the only two uses I found both took this path. So I'm guessing we're missing test coverage. Differential Revision: https://phab.mercurial-scm.org/D10129
Tue, 15 Dec 2020 18:22:57 +0100 copies-rust: remove the ancestor Oracle logic
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 15 Dec 2020 18:22:57 +0100] rev 46569
copies-rust: remove the ancestor Oracle logic We are not doing any `is_ancestor` call anymore. So we can drop that logic and associated arguments. Differential Revision: https://phab.mercurial-scm.org/D9645
Tue, 15 Dec 2020 18:04:23 +0100 copies-rust: track "overwrites" directly within CopySource
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 15 Dec 2020 18:04:23 +0100] rev 46568
copies-rust: track "overwrites" directly within CopySource Overwrite are "rare enough" that explicitly keeping track of them is going to be "cheap", or at least much cheaper that issuing many `is_ancestor` calls. Even a simple implementation using no specific optimisation (eg: using the generic HashSet type) yield good result in most cases. They are interesting optimization to can do on top of that. We will implement them in later changesets. We tried different approach to speed up the overwrite detection and this one seems the most promising. Without further optimization, we already see sizable speedup on various cases. Repo Case Source-Rev Dest-Rev # of revisions old time new time Difference Factor time per rev --------------------------------------------------------------------------------------------------------------------------------------------------------------- mozilla-try x00000_revs_x_added_0_copies 6a320851d377 1ebb79acd503 : 363753 revs, 5.138169 s, 4.482399 s, -0.655770 s, × 0.8724, 12 µs/rev mozilla-try x00000_revs_x_added_x_copies 5173c4b6f97c 95d83ee7242d : 362229 revs, 5.127809 s, 4.480366 s, -0.647443 s, × 0.8737, 12 µs/rev mozilla-try x00000_revs_x000_added_x_copies 9126823d0e9c ca82787bb23c : 359344 revs, 4.971136 s, 4.369070 s, -0.602066 s, × 0.8789, 12 µs/rev mozilla-try x00000_revs_x0000_added_x0000_copies 8d3fafa80d4b eb884023b810 : 192665 revs, 1.741678 s, 1.592506 s, -0.149172 s, × 0.9144, 8 µs/rev However, some of the case doing a lot of overwrite get significantly slower. The one with a really problematic slowdown are the special "head reducing" merge in mozilla-try so I am not too worried about them. In addition, further changeset are going to improve the performance of all this. Repo Case Source-Rev Dest-Rev # of revisions old time new time Difference Factor time per rev --------------------------------------------------------------------------------------------------------------------------------------------------------------- mozilla-try x0000_revs_xx000_added_x000_copies 89294cd501d9 7ccb2fc7ccb5 : 97052 revs, 1.343373 s, 2.119204 s, +0.775831 s, × 1.5775, 21 µs/rev mozilla-try x00000_revs_x00000_added_x0000_copies 1b661134e2ca 1ae03d022d6d : 228985 revs, 40.314822 s, 87.824489 s, +47.509667 s, × 2.1785, 383 µs/rev mozilla-try x00000_revs_x00000_added_x000_copies 9b2a99adc05e 8e29777b48e6 : 382065 revs, 20.048029 s, 43.304637 s, +23.256608 s, × 2.1600, 113 µs/rev Full benchmark below: Repo Case Source-Rev Dest-Rev # of revisions old time new time Difference Factor time per rev --------------------------------------------------------------------------------------------------------------------------------------------------------------- mercurial x_revs_x_added_0_copies ad6b123de1c7 39cfcef4f463 : 1 revs, 0.000042 s, 0.000043 s, +0.000001 s, × 1.0238, 43 µs/rev mercurial x_revs_x_added_x_copies 2b1c78674230 0c1d10351869 : 6 revs, 0.000110 s, 0.000114 s, +0.000004 s, × 1.0364, 19 µs/rev mercurial x000_revs_x000_added_x_copies 81f8ff2a9bf2 dd3267698d84 : 1032 revs, 0.004945 s, 0.004937 s, -0.000008 s, × 0.9984, 4 µs/rev pypy x_revs_x_added_0_copies aed021ee8ae8 099ed31b181b : 9 revs, 0.000192 s, 0.000339 s, +0.000147 s, × 1.7656, 37 µs/rev pypy x_revs_x000_added_0_copies 4aa4e1f8e19a 359343b9ac0e : 1 revs, 0.000049 s, 0.000049 s, +0.000000 s, × 1.0000, 49 µs/rev pypy x_revs_x_added_x_copies ac52eb7bbbb0 72e022663155 : 7 revs, 0.000112 s, 0.000202 s, +0.000090 s, × 1.8036, 28 µs/rev pypy x_revs_x00_added_x_copies c3b14617fbd7 ace7255d9a26 : 1 revs, 0.000323 s, 0.000409 s, +0.000086 s, × 1.2663, 409 µs/rev pypy x_revs_x000_added_x000_copies df6f7a526b60 a83dc6a2d56f : 6 revs, 0.010042 s, 0.011984 s, +0.001942 s, × 1.1934, 1997 µs/rev pypy x000_revs_xx00_added_0_copies 89a76aede314 2f22446ff07e : 4785 revs, 0.049813 s, 0.050820 s, +0.001007 s, × 1.0202, 10 µs/rev pypy x000_revs_x000_added_x_copies 8a3b5bfd266e 2c68e87c3efe : 6780 revs, 0.079937 s, 0.087953 s, +0.008016 s, × 1.1003, 12 µs/rev pypy x000_revs_x000_added_x000_copies 89a76aede314 7b3dda341c84 : 5441 revs, 0.059412 s, 0.062902 s, +0.003490 s, × 1.0587, 11 µs/rev pypy x0000_revs_x_added_0_copies d1defd0dc478 c9cb1334cc78 : 43645 revs, 0.533769 s, 0.679234 s, +0.145465 s, × 1.2725, 15 µs/rev pypy x0000_revs_xx000_added_0_copies bf2c629d0071 4ffed77c095c : 2 revs, 0.013147 s, 0.013095 s, -0.000052 s, × 0.9960, 6547 µs/rev pypy x0000_revs_xx000_added_x000_copies 08ea3258278e d9fa043f30c0 : 11316 revs, 0.110680 s, 0.120910 s, +0.010230 s, × 1.0924, 10 µs/rev netbeans x_revs_x_added_0_copies fb0955ffcbcd a01e9239f9e7 : 2 revs, 0.000085 s, 0.000087 s, +0.000002 s, × 1.0235, 43 µs/rev netbeans x_revs_x000_added_0_copies 6f360122949f 20eb231cc7d0 : 2 revs, 0.000107 s, 0.000107 s, +0.000000 s, × 1.0000, 53 µs/rev netbeans x_revs_x_added_x_copies 1ada3faf6fb6 5a39d12eecf4 : 3 revs, 0.000175 s, 0.000186 s, +0.000011 s, × 1.0629, 62 µs/rev netbeans x_revs_x00_added_x_copies 35be93ba1e2c 9eec5e90c05f : 9 revs, 0.000720 s, 0.000754 s, +0.000034 s, × 1.0472, 83 µs/rev netbeans x000_revs_xx00_added_0_copies eac3045b4fdd 51d4ae7f1290 : 1421 revs, 0.010019 s, 0.010443 s, +0.000424 s, × 1.0423, 7 µs/rev netbeans x000_revs_x000_added_x_copies e2063d266acd 6081d72689dc : 1533 revs, 0.015602 s, 0.015697 s, +0.000095 s, × 1.0061, 10 µs/rev netbeans x000_revs_x000_added_x000_copies ff453e9fee32 411350406ec2 : 5750 revs, 0.058759 s, 0.063528 s, +0.004769 s, × 1.0812, 11 µs/rev netbeans x0000_revs_xx000_added_x000_copies 588c2d1ced70 1aad62e59ddd : 66949 revs, 0.491550 s, 0.545515 s, +0.053965 s, × 1.1098, 8 µs/rev mozilla-central x_revs_x_added_0_copies 3697f962bb7b 7015fcdd43a2 : 2 revs, 0.000087 s, 0.000089 s, +0.000002 s, × 1.0230, 44 µs/rev mozilla-central x_revs_x000_added_0_copies dd390860c6c9 40d0c5bed75d : 8 revs, 0.000268 s, 0.000265 s, -0.000003 s, × 0.9888, 33 µs/rev mozilla-central x_revs_x_added_x_copies 8d198483ae3b 14207ffc2b2f : 9 revs, 0.000181 s, 0.000381 s, +0.000200 s, × 2.1050, 42 µs/rev mozilla-central x_revs_x00_added_x_copies 98cbc58cc6bc 446a150332c3 : 7 revs, 0.000661 s, 0.000672 s, +0.000011 s, × 1.0166, 96 µs/rev mozilla-central x_revs_x000_added_x000_copies 3c684b4b8f68 0a5e72d1b479 : 3 revs, 0.003256 s, 0.003497 s, +0.000241 s, × 1.0740, 1165 µs/rev mozilla-central x_revs_x0000_added_x0000_copies effb563bb7e5 c07a39dc4e80 : 6 revs, 0.066749 s, 0.073204 s, +0.006455 s, × 1.0967, 12200 µs/rev mozilla-central x000_revs_xx00_added_0_copies 6100d773079a 04a55431795e : 1593 revs, 0.006462 s, 0.006482 s, +0.000020 s, × 1.0031, 4 µs/rev mozilla-central x000_revs_x000_added_x_copies 9f17a6fc04f9 2d37b966abed : 41 revs, 0.004919 s, 0.005066 s, +0.000147 s, × 1.0299, 123 µs/rev mozilla-central x000_revs_x000_added_x000_copies 7c97034feb78 4407bd0c6330 : 7839 revs, 0.062421 s, 0.065707 s, +0.003286 s, × 1.0526, 8 µs/rev mozilla-central x0000_revs_xx000_added_0_copies 9eec5917337d 67118cc6dcad : 615 revs, 0.026633 s, 0.026800 s, +0.000167 s, × 1.0063, 43 µs/rev mozilla-central x0000_revs_xx000_added_x000_copies f78c615a656c 96a38b690156 : 30263 revs, 0.197792 s, 0.203856 s, +0.006064 s, × 1.0307, 6 µs/rev mozilla-central x00000_revs_x0000_added_x0000_copies 6832ae71433c 4c222a1d9a00 : 153721 revs, 1.259970 s, 1.293394 s, +0.033424 s, × 1.0265, 8 µs/rev mozilla-central x00000_revs_x00000_added_x000_copies 76caed42cf7c 1daa622bbe42 : 204976 revs, 1.689184 s, 1.698239 s, +0.009055 s, × 1.0054, 8 µs/rev mozilla-try x_revs_x_added_0_copies aaf6dde0deb8 9790f499805a : 2 revs, 0.000865 s, 0.000875 s, +0.000010 s, × 1.0116, 437 µs/rev mozilla-try x_revs_x000_added_0_copies d8d0222927b4 5bb8ce8c7450 : 2 revs, 0.000893 s, 0.000891 s, -0.000002 s, × 0.9978, 445 µs/rev mozilla-try x_revs_x_added_x_copies 092fcca11bdb 936255a0384a : 4 revs, 0.000172 s, 0.000292 s, +0.000120 s, × 1.6977, 73 µs/rev mozilla-try x_revs_x00_added_x_copies b53d2fadbdb5 017afae788ec : 2 revs, 0.001159 s, 0.003939 s, +0.002780 s, × 3.3986, 1969 µs/rev mozilla-try x_revs_x000_added_x000_copies 20408ad61ce5 6f0ee96e21ad : 1 revs, 0.031621 s, 0.033027 s, +0.001406 s, × 1.0445, 33027 µs/rev mozilla-try x_revs_x0000_added_x0000_copies effb563bb7e5 c07a39dc4e80 : 6 revs, 0.068571 s, 0.073703 s, +0.005132 s, × 1.0748, 12283 µs/rev mozilla-try x000_revs_xx00_added_0_copies 6100d773079a 04a55431795e : 1593 revs, 0.006452 s, 0.006469 s, +0.000017 s, × 1.0026, 4 µs/rev mozilla-try x000_revs_x000_added_x_copies 9f17a6fc04f9 2d37b966abed : 41 revs, 0.005443 s, 0.005278 s, -0.000165 s, × 0.9697, 128 µs/rev mozilla-try x000_revs_x000_added_x000_copies 1346fd0130e4 4c65cbdabc1f : 6657 revs, 0.063180 s, 0.064995 s, +0.001815 s, × 1.0287, 9 µs/rev mozilla-try x0000_revs_x_added_0_copies 63519bfd42ee a36a2a865d92 : 40314 revs, 0.293564 s, 0.301041 s, +0.007477 s, × 1.0255, 7 µs/rev mozilla-try x0000_revs_x_added_x_copies 9fe69ff0762d bcabf2a78927 : 38690 revs, 0.286595 s, 0.285575 s, -0.001020 s, × 0.9964, 7 µs/rev mozilla-try x0000_revs_xx000_added_x_copies 156f6e2674f2 4d0f2c178e66 : 8598 revs, 0.083256 s, 0.085597 s, +0.002341 s, × 1.0281, 9 µs/rev mozilla-try x0000_revs_xx000_added_0_copies 9eec5917337d 67118cc6dcad : 615 revs, 0.027282 s, 0.027118 s, -0.000164 s, × 0.9940, 44 µs/rev mozilla-try x0000_revs_xx000_added_x000_copies 89294cd501d9 7ccb2fc7ccb5 : 97052 revs, 1.343373 s, 2.119204 s, +0.775831 s, × 1.5775, 21 µs/rev mozilla-try x0000_revs_x0000_added_x0000_copies e928c65095ed e951f4ad123a : 52031 revs, 0.665737 s, 0.701479 s, +0.035742 s, × 1.0537, 13 µs/rev mozilla-try x00000_revs_x_added_0_copies 6a320851d377 1ebb79acd503 : 363753 revs, 5.138169 s, 4.482399 s, -0.655770 s, × 0.8724, 12 µs/rev mozilla-try x00000_revs_x00000_added_0_copies dc8a3ca7010e d16fde900c9c : 34414 revs, 0.573276 s, 0.574082 s, +0.000806 s, × 1.0014, 16 µs/rev mozilla-try x00000_revs_x_added_x_copies 5173c4b6f97c 95d83ee7242d : 362229 revs, 5.127809 s, 4.480366 s, -0.647443 s, × 0.8737, 12 µs/rev mozilla-try x00000_revs_x000_added_x_copies 9126823d0e9c ca82787bb23c : 359344 revs, 4.971136 s, 4.369070 s, -0.602066 s, × 0.8789, 12 µs/rev mozilla-try x00000_revs_x0000_added_x0000_copies 8d3fafa80d4b eb884023b810 : 192665 revs, 1.741678 s, 1.592506 s, -0.149172 s, × 0.9144, 8 µs/rev mozilla-try x00000_revs_x00000_added_x0000_copies 1b661134e2ca 1ae03d022d6d : 228985 revs, 40.314822 s, 87.824489 s, +47.509667 s, × 2.1785, 383 µs/rev mozilla-try x00000_revs_x00000_added_x000_copies 9b2a99adc05e 8e29777b48e6 : 382065 revs, 20.048029 s, 43.304637 s, +23.256608 s, × 2.1600, 113 µs/rev private : 459513 revs, 37.179470 s, 33.853687 s, -3.325783 s, × 0.9105, 73 µs/rev Differential Revision: https://phab.mercurial-scm.org/D9644
Wed, 23 Dec 2020 03:04:43 +0100 copies-rust: add methods to build and update CopySource
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 23 Dec 2020 03:04:43 +0100] rev 46567
copies-rust: add methods to build and update CopySource Having explicit method with clear semantic help to clarify the code and prepare an update to the underlying documentation without too much disruption. Differential Revision: https://phab.mercurial-scm.org/D9643
Wed, 23 Dec 2020 03:04:33 +0100 copies-rust: fix reverted argument when merging tiny minor or major
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 23 Dec 2020 03:04:33 +0100] rev 46566
copies-rust: fix reverted argument when merging tiny minor or major The argument where not passed in the right other. This is not caught by the test (yet) because it is a sub case of a special case. Am I adding this to my list of things to test. Using test directly in Rust would be appropriate here. However we don't have the ability to test this code that way yet, and I am focussing on other part of that work right now. Differential Revision: https://phab.mercurial-scm.org/D9657
Mon, 21 Dec 2020 08:42:30 +0100 copies-rust: rename TimeStampedPathCopy to CopySource
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 21 Dec 2020 08:42:30 +0100] rev 46565
copies-rust: rename TimeStampedPathCopy to CopySource Same rational as the previous changesets. CopySource is a clear descriptive name that does not depends on an implementation details that we are about to the change. Differential Revision: https://phab.mercurial-scm.org/D9642
Tue, 15 Dec 2020 17:26:00 +0100 copies-rust: rename TimeStampedPathCopies to InternalPathCopies
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 15 Dec 2020 17:26:00 +0100] rev 46564
copies-rust: rename TimeStampedPathCopies to InternalPathCopies We are looking into moving away from TimeStampedPathCopy (that use is_ancestors call to detect overwrite) in favor of an approach that does not requires is_ancestors calls. Yet we will still need an internal representation that differs from the returned result. So we call it "InternalPathCopies" which is generic but clear. Differential Revision: https://phab.mercurial-scm.org/D9641
Sat, 12 Dec 2020 19:35:08 +0100 copies: detect case when a merge decision overwrite previous data
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 12 Dec 2020 19:35:08 +0100] rev 46563
copies: detect case when a merge decision overwrite previous data We now detect and record when a merge case required special logic (eg: thing that append during the merge, ambiguity leading to picking p1 data, etc) and we explicitly mark the result as superseding the previous data. This fixes the family of test we previously added. Differential Revision: https://phab.mercurial-scm.org/D9613
Mon, 14 Dec 2020 19:26:33 +0100 copies: rearrange all value comparison conditional
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 14 Dec 2020 19:26:33 +0100] rev 46562
copies: rearrange all value comparison conditional To properly handle the newly tested case (chaining of merges) we will need to detect more accurately when an actualy merging of the copy information (and superseed the two existing data). Before starting to do so, we need to reorganise the values comparison to introduce different conditional branches when such actual merging is needed/detected. To avoid mixing too many change in this complicated code, we do the reorganisation before adding the "overwrite detection" logic in the next changesets. Differential Revision: https://phab.mercurial-scm.org/D9612
Mon, 22 Feb 2021 12:21:00 +0100 test-copies: introduce merge chains test for the P/Q merges
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 22 Feb 2021 12:21:00 +0100] rev 46561
test-copies: introduce merge chains test for the P/Q merges This is similar to the chaining test we have for the A/E merges. The current result of this tests is wrong, as for the other test of the same familly. This will be fixed by a later changesets. Differential Revision: https://phab.mercurial-scm.org/D10059
Mon, 22 Feb 2021 11:56:58 +0100 test-copies: add a case involving the `b` and a new `r` branch
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 22 Feb 2021 11:56:58 +0100] rev 46560
test-copies: add a case involving the `b` and a new `r` branch That case involve a branch overwriting copies information from the other one. It is similar to the `mBFm` / `mFBm` case except this case actual content merge is involved too. Differential Revision: https://phab.mercurial-scm.org/D10058
Fri, 19 Feb 2021 20:46:33 +0100 test-copies: introduce case combining the `p` and `q` branch
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 19 Feb 2021 20:46:33 +0100] rev 46559
test-copies: introduce case combining the `p` and `q` branch That case involves conflicting copies information from each branch. It is similar to the `mAEm` / `mEAm` case except this case actual content merge is involved too. Differential Revision: https://phab.mercurial-scm.org/D10057
Fri, 19 Feb 2021 20:47:15 +0100 test-copies: add a `q` branch similar to the `e` but on the new files
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 19 Feb 2021 20:47:15 +0100] rev 46558
test-copies: add a `q` branch similar to the `e` but on the new files This branch will be used to create merge case that mirror ones involving the `e` branch. Differential Revision: https://phab.mercurial-scm.org/D10056
Fri, 19 Feb 2021 20:47:07 +0100 test-copies: add a `p` branch similar to the `a` but on the new files
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 19 Feb 2021 20:47:07 +0100] rev 46557
test-copies: add a `p` branch similar to the `a` but on the new files This branch will be used to create merge case that mirror ones involving the `a` branch. Differential Revision: https://phab.mercurial-scm.org/D10055
Fri, 19 Feb 2021 18:57:09 +0100 test-copies: move the new files in the `i` branch
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 19 Feb 2021 18:57:09 +0100] rev 46556
test-copies: move the new files in the `i` branch The initial branch is moving some of the "same content" file around. We do the same for the "different content" before start to implement more tests. The new files have harmless impact of various existing tests. Differential Revision: https://phab.mercurial-scm.org/D10054
Fri, 19 Feb 2021 17:06:12 +0100 test-copies: add 3 new files with their own content
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 19 Feb 2021 17:06:12 +0100] rev 46555
test-copies: add 3 new files with their own content The new `p`, `q` and `r` file mirror the `a`, `b` and `h` but with different content for each files. This will be used to create "mirror" test case that involve actual merge happening. For now, we only add the file to keep patches small and easier to review. Differential Revision: https://phab.mercurial-scm.org/D10053
Fri, 19 Feb 2021 16:37:55 +0100 test-copies: introduce merge chaing test for the A/E + change tests
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 19 Feb 2021 16:37:55 +0100] rev 46554
test-copies: introduce merge chaing test for the A/E + change tests This is similar to the chaining test we have for the A/E merges (without change). The current result of this tests is wrong, as for they "without change counter part". This will be fixed by a later changesets. Differential Revision: https://phab.mercurial-scm.org/D10052
Mon, 22 Feb 2021 19:39:33 +0100 test-copies: add a "change during merge" variant to the A+E test
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 22 Feb 2021 19:39:33 +0100] rev 46553
test-copies: add a "change during merge" variant to the A+E test Checks inline comment for details.
Fri, 19 Feb 2021 22:56:46 +0100 test-copies: filter out the linkrev part of `debugindex`
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 19 Feb 2021 22:56:46 +0100] rev 46552
test-copies: filter out the linkrev part of `debugindex` It is not really useful for the tests and is a large source of churn when adding more revisions to the tests. Differential Revision: https://phab.mercurial-scm.org/D10050
Fri, 19 Feb 2021 22:27:25 +0100 test-copies: use "case-id" instead of revision number when listing sidedata
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 19 Feb 2021 22:27:25 +0100] rev 46551
test-copies: use "case-id" instead of revision number when listing sidedata The revision number are not very informative and can change when new changeset are added, creating unnecessary churn. We change the template before adding more test to improve clarify of the over changesets. Differential Revision: https://phab.mercurial-scm.org/D10049
Fri, 26 Feb 2021 15:34:22 +0530 patch: fix a formatting issue stable
Sushil khanchi <sushilkhanchi97@gmail.com> [Fri, 26 Feb 2021 15:34:22 +0530] rev 46550
patch: fix a formatting issue Differential Revision: https://phab.mercurial-scm.org/D10079
Tue, 02 Feb 2021 20:20:17 +0900 log: fix handling of root (or empty) path provided by matcher (issue6478) stable
Yuya Nishihara <yuya@tcha.org> [Tue, 02 Feb 2021 20:20:17 +0900] rev 46549
log: fix handling of root (or empty) path provided by matcher (issue6478) Since 27d6956d386b "match: use '' instead of '.' for root directory", '.' should be translated to ''. We can't blame repo.file() about this because an empty string is invalid as a file path, but I found at least two callers (_makematcher() and revset.filelog()) would crash because of this path[0]. So let's make repo.file() accept an empty string. path[0] == b'/' wouldn't work on Python 3 anyways.
Thu, 25 Feb 2021 15:18:00 +0530 tests: accept output changes by 33350debb480 stable
Sushil khanchi <sushilkhanchi97@gmail.com> [Thu, 25 Feb 2021 15:18:00 +0530] rev 46548
tests: accept output changes by 33350debb480 Differential Revision: https://phab.mercurial-scm.org/D10067
Wed, 17 Feb 2021 21:08:45 +0100 test-copies: remove revision number from log
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 17 Feb 2021 21:08:45 +0100] rev 46547
test-copies: remove revision number from log Differential Revision: https://phab.mercurial-scm.org/D10048
Mon, 14 Dec 2020 17:56:56 +0100 test-copies: add test chaining multiple merge
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 14 Dec 2020 17:56:56 +0100] rev 46546
test-copies: add test chaining multiple merge Right now, the copy tracing logic take the right decision for merges, but it does not keep track of the right information about these decision and can fall into later traps. We start with highlighting this possibility by adding new tests, and we will fix them later. Check the inline test documentation for details. Differential Revision: https://phab.mercurial-scm.org/D9611
Mon, 14 Dec 2020 17:56:30 +0100 test-copies: add test chaining multiple merges
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 14 Dec 2020 17:56:30 +0100] rev 46545
test-copies: add test chaining multiple merges Right now, the copy tracing logic take the right decision for merges, but it does not keep track of the right information about these decision and can fall into later traps. We start with highlighting this possibility by adding new tests, and we will fix them later. Check the inline test documentation for details. Differential Revision: https://phab.mercurial-scm.org/D9610
Tue, 16 Feb 2021 15:43:54 +0100 test-copies: add test chaining multiple merges
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 16 Feb 2021 15:43:54 +0100] rev 46544
test-copies: add test chaining multiple merges Right now, the copy tracing logic take the right decision for merges, but it does not keep track of the right information about these decision and can fall into later traps. We start with highlighting this possibility by adding new tests, and we will fix them later. Check the inline test documentation for details. Differential Revision: https://phab.mercurial-scm.org/D9609
Thu, 18 Feb 2021 13:49:55 +0100 test-copies: add subcase titles for various "conflicting" information variant
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 18 Feb 2021 13:49:55 +0100] rev 46543
test-copies: add subcase titles for various "conflicting" information variant This make the transitions between case clearer. Differential Revision: https://phab.mercurial-scm.org/D10047
Thu, 18 Feb 2021 12:45:16 +0100 test-copies: improve description of the B+F case
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 18 Feb 2021 12:45:16 +0100] rev 46542
test-copies: improve description of the B+F case This will make its role clearer. Differential Revision: https://phab.mercurial-scm.org/D10046
Tue, 16 Feb 2021 06:02:09 +0100 test-copies: improve description of the C+H case
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 16 Feb 2021 06:02:09 +0100] rev 46541
test-copies: improve description of the C+H case This will make its role clearer. Differential Revision: https://phab.mercurial-scm.org/D10045
Tue, 16 Feb 2021 05:58:22 +0100 test-copies: improve description of the B+C "revert/restore" case
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 16 Feb 2021 05:58:22 +0100] rev 46540
test-copies: improve description of the B+C "revert/restore" case This will make its role clearer. Differential Revision: https://phab.mercurial-scm.org/D10044
Tue, 16 Feb 2021 05:54:55 +0100 test-copies: improve description of the G+C case
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 16 Feb 2021 05:54:55 +0100] rev 46539
test-copies: improve description of the G+C case This will make its role clearer. Differential Revision: https://phab.mercurial-scm.org/D10043
Tue, 16 Feb 2021 05:46:32 +0100 test-copies: improve description of the G+F case
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 16 Feb 2021 05:46:32 +0100] rev 46538
test-copies: improve description of the G+F case This will make its role clearer. Differential Revision: https://phab.mercurial-scm.org/D10042
Tue, 16 Feb 2021 05:39:22 +0100 test-copies: improve description of the D+G case
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 16 Feb 2021 05:39:22 +0100] rev 46537
test-copies: improve description of the D+G case This will make its role clearer. Differential Revision: https://phab.mercurial-scm.org/D10041
Tue, 16 Feb 2021 05:35:18 +0100 test-copies: improve description of the A+E case
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 16 Feb 2021 05:35:18 +0100] rev 46536
test-copies: improve description of the A+E case This will make its role clearer. Differential Revision: https://phab.mercurial-scm.org/D10040
Tue, 16 Feb 2021 05:32:20 +0100 test-copies: improve description of the B+D case
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 16 Feb 2021 05:32:20 +0100] rev 46535
test-copies: improve description of the B+D case This will make its role clearer. Differential Revision: https://phab.mercurial-scm.org/D10039
Tue, 16 Feb 2021 05:29:04 +0100 test-copies: improve description of the B+C case
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 16 Feb 2021 05:29:04 +0100] rev 46534
test-copies: improve description of the B+C case This will make its role clearer. Differential Revision: https://phab.mercurial-scm.org/D10038
Tue, 16 Feb 2021 05:26:46 +0100 test-copies: improve description of the A+B case
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 16 Feb 2021 05:26:46 +0100] rev 46533
test-copies: improve description of the A+B case This will make its role clearer. Differential Revision: https://phab.mercurial-scm.org/D10037
Tue, 16 Feb 2021 05:19:23 +0100 test-copies: use intermediate variable some commit descriptions
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 16 Feb 2021 05:19:23 +0100] rev 46532
test-copies: use intermediate variable some commit descriptions Right now, everything mostly says "simple merge", we want to use something a bit more descriptive. Before doing any changes, we do most of the churn. This helps the next sets of changesets to be clearer. Differential Revision: https://phab.mercurial-scm.org/D10036
Mon, 22 Feb 2021 18:48:45 +0100 test-copies: don't use empty file for "same content" cases
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 22 Feb 2021 18:48:45 +0100] rev 46531
test-copies: don't use empty file for "same content" cases For main case (using filelog or sidedata), this lead to the following hash change. Changesets: - 01c2f5eabdc4ce2bdee42b5f86311955e6c8f573319179230cc87769ab3a861ebffe7a534ebb3d85 - 01c2f5eabdc4319179230cc8 - c72365ee036fca4fb27fd745459bfb6ea1ac69936cbc9c2b7b391dd738603173717c601648d3735f - c72365ee036f6cbc9c2b7b39 File revision for `f`: - 0dd616bc7ab1a111921d95d76f69cda5c2ac539ccedeacc5bf5d9b9be4d7f8394d33a5349bb29c6e - 0dd616bc7ab1cedeacc5bf5d - eb806e34ef6be4c264effd5933d31004ad15a793ffb76cd765422a18759a335d8a81fa2bd455be6b - eb806e34ef6bffb76cd76542 - 6da5a2eecb9c833f830b67a4972366d49a9a142c08d1ff5926fbd0285cdeb044cbe8ab651687e86a - 6da5a2eecb9c08d1ff5926fb File revision for `d`: - 7bded9d9da1f7bf9bf7cbfb24fe1e6ccf68ec440ba177bbb45ea930ee48469a55d40224537bd57a9 For the "extra in changeset" case we get the following change for file `d`: - 68d5bca9df0577b6bc2ea30ca724e13ead60da81b894de5c94aadcb4894ea7c358389819c27fbcce - 68d5bca9df05b894de5c94aa - b80de5d138758541c5f05265ad144ab9fa86d1db56647659eff080e06e45c18ea9e848836dadea71 - b80de5d1387556647659eff0
Fri, 19 Feb 2021 17:52:04 +0100 narrow: fix flaky behavior described in issue6150 stable
Raphaël Gomès <rgomes@octobus.net> [Fri, 19 Feb 2021 17:52:04 +0100] rev 46530
narrow: fix flaky behavior described in issue6150 This has been plaguing the CI for a good while, and it doesn't appear to have an easy fix proposed yet. The solution in this change is to always do an unambiguous (but expensive) lookup in case of comparison. This should always be correct, albeit suboptimal. Differential Revision: https://phab.mercurial-scm.org/D10034
Tue, 16 Feb 2021 15:44:51 +0530 patch: make diff --git to differentiate b/w file is empty or doesn't exists stable
Sushil khanchi <sushilkhanchi97@gmail.com> [Tue, 16 Feb 2021 15:44:51 +0530] rev 46529
patch: make diff --git to differentiate b/w file is empty or doesn't exists Before this patch, as we didn't differentiate the two cases of a file in a context: 1. File doesn't exists 2. File is empty which causes the blob id to be same for both the cases. Now we use `nullhex` for a file which doesn't exists in a context (aligning it with the git diff format) Changes in test file reflect the fixed behavior. Differential Revision: https://phab.mercurial-scm.org/D10001
Tue, 16 Feb 2021 15:37:19 +0530 tests: add a test to demonstrate a bug in `hg diff --git` (issue6486) stable
Sushil khanchi <sushilkhanchi97@gmail.com> [Tue, 16 Feb 2021 15:37:19 +0530] rev 46528
tests: add a test to demonstrate a bug in `hg diff --git` (issue6486) Issue url: https://bz.mercurial-scm.org/show_bug.cgi?id=6486 This will be fixed in next patch. Differential Revision: https://phab.mercurial-scm.org/D10000
Thu, 10 Dec 2020 14:25:36 +0100 test-copies: reinstall initial identical (empty) files for chained copied
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 10 Dec 2020 14:25:36 +0100] rev 46527
test-copies: reinstall initial identical (empty) files for chained copied This effectively back out changeset deeb215be337. Changeset deeb215be33 does not really include a justification for its change and make mes uncomfortable. I have been thinking about it and they are two options: - either having empty/full files does not make a difference, and deeb215be337 is a gratuitous changes. - either having empty/full files do make a difference and deeb215be33 silently change the test coverage. In such situation if we want the "not empty" case to be tested, we should add new cases to cover them In practice, we know that the "file content did not change, but merge still need to create a new filenode" case exists (for example if merging result in similar content but both parent of the file need to be recorded), and that such case are easy to miss/mess-up in the tests. Having all the file using the same (empty) content was done on purpose to increase the coverage of such corner case. As a result I am reinstalling the previous test situation. To increase the coverage of some case involving content-merge in test-copies-chain-merge.t, we will add a new, dedicated, cases later in this series, once various cleanup and test improvement have been set in place. This changeset starts with reinstalling the previous situation as (1) it is more fragile, so I am more confided getting it back in the initial situation, (2) I have specific test further down the line that are base on these one. The next changeset will slightly alter the test to use non-empty files for these tests (with identical content). It should help to make the initial intent "merge file with identical content" clearer. I am still using a two steps (backout, then change content) approach to facilitate careful validation of the output change. Doing so has a large impact on the output of the "copy info in changeset extra" variant added in 5e72827dae1e (2 changesets after deeb215be33). It seems to highlight various breakage when merge without content change are involved, this is a good example of why we want to explicitly test theses cases. Because the different -do- matters a lot. Fixing the "copy info in changeset extra" is not a priority here. Because (1) this changeset does not break anything, it only highlight that they were always broken. (2) the only people using "copy info in changeset extra" do not have merge. Differential Revision: https://phab.mercurial-scm.org/D9587
Wed, 10 Feb 2021 17:08:34 +0530 upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 10 Feb 2021 17:08:34 +0530] rev 46526
upgrade: speed up when we have only nodemap to downgrade Similar to what we do on upgrade, if we have only persistent-nodemap to downgrade we will just delete the nodemap files and update repository requirements instead of processing all the revlogs. After downgrade, we are left with unrequired docket and transaction files which seems fine but can work on deleting them if someone feels we should. Differential Revision: https://phab.mercurial-scm.org/D9992
Mon, 15 Feb 2021 15:13:20 +0530 upgrade: write nodemap for manifests too
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 15 Feb 2021 15:13:20 +0530] rev 46525
upgrade: write nodemap for manifests too In 98e39f04d60e I assumed that writing nodemap for manifests was not desirable and stopped writing it during upgrade. However in recent discussion with Pierre-Yves, I learnt that that's not true. Differential Revision: https://phab.mercurial-scm.org/D9991
Tue, 23 Feb 2021 12:29:41 -0800 windows: fix parsing of version number to match format from D9955
Martin von Zweigbergk <martinvonz@google.com> [Tue, 23 Feb 2021 12:29:41 -0800] rev 46524
windows: fix parsing of version number to match format from D9955 Differential Revision: https://phab.mercurial-scm.org/D10061
Tue, 23 Feb 2021 12:26:52 -0800 build: make version from .hg_archival.txt consistent with that from .hg/
Martin von Zweigbergk <martinvonz@google.com> [Tue, 23 Feb 2021 12:26:52 -0800] rev 46523
build: make version from .hg_archival.txt consistent with that from .hg/ D9955 changed the version format to replace "-" by "." and to add "hg" before the number representing the distance from the latest tag. However, it missed the "hg" string and added an extra "." to the version string we produce when there's a `.hg_archival.txt`. This patch makes it consistent. Differential Revision: https://phab.mercurial-scm.org/D10060
Fri, 19 Feb 2021 10:04:53 -0500 helptext: fix a recent typo stable
Matt Harbison <matt_harbison@yahoo.com> [Fri, 19 Feb 2021 10:04:53 -0500] rev 46522
helptext: fix a recent typo Differential Revision: https://phab.mercurial-scm.org/D10033
Wed, 24 Feb 2021 15:16:22 +0100 re2: byteify some regex used to get check re2 availability stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 24 Feb 2021 15:16:22 +0100] rev 46521
re2: byteify some regex used to get check re2 availability Changeset 687b865b95ad failed to properly byteify this because it was a raw string. This went undetected so far because re2 does not seems to be widely tested. Differential Revision: https://phab.mercurial-scm.org/D10064
Thu, 11 Feb 2021 11:22:53 -0800 packaging: add Provides: python3-mercurial and Homepage to debian package
Kyle Lippincott <spectral@google.com> [Thu, 11 Feb 2021 11:22:53 -0800] rev 46520
packaging: add Provides: python3-mercurial and Homepage to debian package There are other packages that depend on python3-mercurial, like debian's mercurial-git, so we should mark ourselves as providing it. I compared the control file we generate to the one that the debian maintainers generate, and noticed several differences: - the Homepage bit. I included this, because why not - a more robust Suggests list that includes a graphical merge tool - a more robust Breaks list - debian's Recommends openssh-client, we only Recommends ca-certificates - a split into `mercurial` and `mercurial-common` (and possibly others?) - a slightly different description Differential Revision: https://phab.mercurial-scm.org/D9983
Fri, 12 Feb 2021 09:53:48 +0100 bundle2: pass the operation source down to the changegroup
Raphaël Gomès <rgomes@octobus.net> [Fri, 12 Feb 2021 09:53:48 +0100] rev 46519
bundle2: pass the operation source down to the changegroup This is currently not used by anything in core (and redundant with the url), the real source information is much more useful. This is going to be used in sidedata exchange patches coming soon. Differential Revision: https://phab.mercurial-scm.org/D9986
Fri, 12 Feb 2021 13:27:03 -0800 gendoc: use an empty comment so aliases are separated from previous elements
Kyle Lippincott <spectral@google.com> [Fri, 12 Feb 2021 13:27:03 -0800] rev 46518
gendoc: use an empty comment so aliases are separated from previous elements For commands like `hg bookmarks`, where there's no `[+] marked option can be specified multiple times`, this causes the final option in the option list to not be the parent of the aliases definition. The aliases section is thus marked as a blockquote like on commands that do have text separating the option list and the aliases definition. Differential Revision: https://phab.mercurial-scm.org/D9990
Fri, 12 Feb 2021 11:06:56 -0800 gendoc: add support for loading extensions from config settings
Kyle Lippincott <spectral@google.com> [Fri, 12 Feb 2021 11:06:56 -0800] rev 46517
gendoc: add support for loading extensions from config settings We manage our installation and ship some extensions, enabled by default for our users, that are in hgext3rd or other directories not scanned by this tool by default. We want to generate docs during the build process, and having those docs include the extensions that users don't have to manually enable is desirable. This is *not* desirable for the normal build process, however, and should never be enabled by default. Differential Revision: https://phab.mercurial-scm.org/D9989
Fri, 12 Feb 2021 11:04:03 -0800 gendoc: support defaults on customopts a bit better
Kyle Lippincott <spectral@google.com> [Fri, 12 Feb 2021 11:04:03 -0800] rev 46516
gendoc: support defaults on customopts a bit better Without this, a customopt will very likely render like this: ``` -foo does foo (default: <hgext.myextension.MyOpt object at 0x7f31...>) ``` I copied this logic from how this is handled in mercurial/help.py. Differential Revision: https://phab.mercurial-scm.org/D9988
Wed, 10 Feb 2021 09:49:50 -0800 softstrip: fix a reference to an undefined variable
Martin von Zweigbergk <martinvonz@google.com> [Wed, 10 Feb 2021 09:49:50 -0800] rev 46515
softstrip: fix a reference to an undefined variable `backupfile` wasn't defined if no backup was requested. Let's set it to `None` by default, which matches what regular `repair.strip()` does. Differential Revision: https://phab.mercurial-scm.org/D9985
Wed, 10 Feb 2021 09:45:48 -0800 softstrip: move _bookmarkmovements() call to where it's needed
Martin von Zweigbergk <martinvonz@google.com> [Wed, 10 Feb 2021 09:45:48 -0800] rev 46514
softstrip: move _bookmarkmovements() call to where it's needed The call to `_bookmarkmovements()` is unrelated to the backup, so let's move it after. Differential Revision: https://phab.mercurial-scm.org/D9984
Fri, 12 Feb 2021 12:51:28 +0100 tests: fix differing output between py2 and py3
Raphaël Gomès <rgomes@octobus.net> [Fri, 12 Feb 2021 12:51:28 +0100] rev 46513
tests: fix differing output between py2 and py3 db9e33beb0fb broke the tests because of the difference in bytestring repr between py2 and py3. Rather than backout that change for so little, I figured I'd fix it myself. Hopefully Python 2 supports gets dropped very soon. Differential Revision: https://phab.mercurial-scm.org/D9987
Thu, 04 Feb 2021 23:11:42 +0100 build: fake PEP440 versions
Joerg Sonnenberger <joerg@bec.de> [Thu, 04 Feb 2021 23:11:42 +0100] rev 46512
build: fake PEP440 versions If the current version is not exactly a tag, use a local version specifier to fix it up. PEP 440 uses the "+" separator and only allows alphanumeric and dot, so use dot for further separations. Old devel build: 5.7+155-a163cc36d06b New devel build: 5.7+hg155.a163cc36d06b Differential Revision: https://phab.mercurial-scm.org/D9955
Thu, 04 Feb 2021 11:32:08 -0800 tests: add a comment in a test that will hopefully save someone some time
Kyle Lippincott <spectral@google.com> [Thu, 04 Feb 2021 11:32:08 -0800] rev 46511
tests: add a comment in a test that will hopefully save someone some time I spent at least an hour, probably closer to 1.5, trying to figure out what this was complaining about. Hopefully anyone else in my position will see this note and not waste the time. Differential Revision: https://phab.mercurial-scm.org/D9953
Wed, 27 Jan 2021 03:07:14 +0100 changegroup: don't convert revisions to node for duplicate handling
Joerg Sonnenberger <joerg@bec.de> [Wed, 27 Jan 2021 03:07:14 +0100] rev 46510
changegroup: don't convert revisions to node for duplicate handling The only consumer can handle revision lists fine. Avoid materializing a range if there are no duplicates as optimization. Differential Revision: https://phab.mercurial-scm.org/D9884
Wed, 27 Jan 2021 02:34:51 +0100 revlog: change addgroup callbacks to take revision numbers
Joerg Sonnenberger <joerg@bec.de> [Wed, 27 Jan 2021 02:34:51 +0100] rev 46509
revlog: change addgroup callbacks to take revision numbers Differential Revision: https://phab.mercurial-scm.org/D9883
Wed, 27 Jan 2021 01:43:17 +0100 revlog: change addrevision to return the new revision, not node
Joerg Sonnenberger <joerg@bec.de> [Wed, 27 Jan 2021 01:43:17 +0100] rev 46508
revlog: change addrevision to return the new revision, not node Differential Revision: https://phab.mercurial-scm.org/D9882
Wed, 27 Jan 2021 00:55:20 +0100 revlog: change addrawrevision to return the revision
Joerg Sonnenberger <joerg@bec.de> [Wed, 27 Jan 2021 00:55:20 +0100] rev 46507
revlog: change addrawrevision to return the revision Differential Revision: https://phab.mercurial-scm.org/D9881
Tue, 26 Jan 2021 23:56:11 +0100 revlog: change _addrevision to return the new revision
Joerg Sonnenberger <joerg@bec.de> [Tue, 26 Jan 2021 23:56:11 +0100] rev 46506
revlog: change _addrevision to return the new revision The node is passed as argument already, so returning it is quite pointless. The revision number on the other is useful as it decouples the caller from the revlog internals. Differential Revision: https://phab.mercurial-scm.org/D9880
Mon, 08 Feb 2021 23:41:58 +0100 rhg: add limited support for the `config` sub-command
Simon Sapin <simon.sapin@octobus.net> [Mon, 08 Feb 2021 23:41:58 +0100] rev 46505
rhg: add limited support for the `config` sub-command Only with one argument and no flag. This is mostly for testing. Differential Revision: https://phab.mercurial-scm.org/D9972
Mon, 08 Feb 2021 23:08:44 +0100 rhg: Add support for --config CLI arguments
Simon Sapin <simon.sapin@octobus.net> [Mon, 08 Feb 2021 23:08:44 +0100] rev 46504
rhg: Add support for --config CLI arguments Differential Revision: https://phab.mercurial-scm.org/D9971
Mon, 08 Feb 2021 21:37:30 +0100 rhg: Add support for -R and --repository command-line arguments
Simon Sapin <simon.sapin@octobus.net> [Mon, 08 Feb 2021 21:37:30 +0100] rev 46503
rhg: Add support for -R and --repository command-line arguments Differential Revision: https://phab.mercurial-scm.org/D9970
Mon, 08 Feb 2021 21:28:52 +0100 rhg: Replace subcommand boilerplate with a macro
Simon Sapin <simon.sapin@octobus.net> [Mon, 08 Feb 2021 21:28:52 +0100] rev 46502
rhg: Replace subcommand boilerplate with a macro This removes some repetition, and will avoid additional repetition in the next commit. Differential Revision: https://phab.mercurial-scm.org/D9969
Mon, 08 Feb 2021 21:05:36 +0100 rhg: Move subcommand CLI arguments definitions to respective modules
Simon Sapin <simon.sapin@octobus.net> [Mon, 08 Feb 2021 21:05:36 +0100] rev 46501
rhg: Move subcommand CLI arguments definitions to respective modules Differential Revision: https://phab.mercurial-scm.org/D9968
Mon, 08 Feb 2021 20:33:04 +0100 rhg: replace command structs with functions
Simon Sapin <simon.sapin@octobus.net> [Mon, 08 Feb 2021 20:33:04 +0100] rev 46500
rhg: replace command structs with functions The `Command` trait was not used in any generic context, and the struct where nothing more than holders for values parsed from CLI arguments to be available to a `run` method. Differential Revision: https://phab.mercurial-scm.org/D9967
Mon, 08 Feb 2021 11:13:56 +0100 rust: Use the DisplayBytes trait in config printing
Simon Sapin <simon.sapin@octobus.net> [Mon, 08 Feb 2021 11:13:56 +0100] rev 46499
rust: Use the DisplayBytes trait in config printing This is similar to `std::fmt::Display`, but for arbitrary bytes instead of Unicode. Writing to an abstract output stream helps avoid allocating intermediate `Vec<u8>` buffers. Differential Revision: https://phab.mercurial-scm.org/D9966
Thu, 04 Feb 2021 13:32:11 -0800 log: respect diff.merge in -p output
Martin von Zweigbergk <martinvonz@google.com> [Thu, 04 Feb 2021 13:32:11 -0800] rev 46498
log: respect diff.merge in -p output Differential Revision: https://phab.mercurial-scm.org/D9958
Thu, 04 Feb 2021 13:21:01 -0800 diff: extract function for getting possibly re-merged parent to diff against
Martin von Zweigbergk <martinvonz@google.com> [Thu, 04 Feb 2021 13:21:01 -0800] rev 46497
diff: extract function for getting possibly re-merged parent to diff against We'll want to reuse the logic that `hg diff --change` with `diff.merge` uses. At least `hg log -p` should reuse it. This patch therefore extracts that code to a function. Differential Revision: https://phab.mercurial-scm.org/D9957
Thu, 04 Feb 2021 13:05:51 -0800 diff: replace --merge option by config option
Martin von Zweigbergk <martinvonz@google.com> [Thu, 04 Feb 2021 13:05:51 -0800] rev 46496
diff: replace --merge option by config option I can't think of any reason you'd want to enable the merge diff on a run-to-run basis; you'd probably either always or never want it set (though I can't see why you'd never want it set). If you have it set, you'll probably also want the same output in `hg log -p` output. Having a single config option for the feature makes sense. Differential Revision: https://phab.mercurial-scm.org/D9956
Thu, 24 Dec 2020 11:21:23 -0500 tagcache: distinguish between invalid and missing entries
Matt Harbison <matt_harbison@yahoo.com> [Thu, 24 Dec 2020 11:21:23 -0500] rev 46495
tagcache: distinguish between invalid and missing entries The TortoiseHg repo has typically not had a newly applied tag accessible by name for recent releases, for unknown reasons. Deleting and rebuilding the tag cache doesn't fix it, though deleting the cache and running `hg log -r $new_tag` does. Eventually the situation does sort itself out for new clones from the server. In an effort to figure out what the issue is, Pierre-Yves David suggested listing these entries in the debug output more specifically. This isn't complete yet- the second test change that says "missing" is more like "invalid", since it was truncated. The problem there is the code that reads the raw array truncates any partial records and then fills it with 0xFF, which signifies that it is missing. As a side note, that means the check for the length when validating an existing entry never fails. Differential Revision: https://phab.mercurial-scm.org/D9811
Thu, 11 Feb 2021 20:36:46 -0800 branching: merge with stable
Martin von Zweigbergk <martinvonz@google.com> [Thu, 11 Feb 2021 20:36:46 -0800] rev 46494
branching: merge with stable
Wed, 10 Feb 2021 23:03:54 +0100 hooks: add a `auto` value for `hooks.*run-with-plain` stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 10 Feb 2021 23:03:54 +0100] rev 46493
hooks: add a `auto` value for `hooks.*run-with-plain` That setting restore the behavior pre-5.6. The current HGPLAIN value is simply passed to the hooks. This allow user who needs it to fully mitigate the behavior change introduced in Mercurial 5.7 by restoring the older behavior. Differential Revision: https://phab.mercurial-scm.org/D9982
Wed, 10 Feb 2021 23:21:21 +0100 hooks: introduce a `:run-with-plain` option for hooks stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 10 Feb 2021 23:21:21 +0100] rev 46492
hooks: introduce a `:run-with-plain` option for hooks This option control if HGPLAIN should be set or not for the hooks. This is the first step to give user some control of the HGPLAIN setting for they hooks. Some hooks (eg: consistency checking) deserve to be run with HGPLAIN, some other (eg: user set visual helper) might need to respect the user config and setting. So both usage are valid and we need to restore the ability to run -without- HGPLAIN that got lost in Mercurial 5.7. This does not offer a way to restore the pre-5.7 behavior yet (respect whatever HGPLAIN setting from the shell), this will be dealt with in the next changeset. The option name is a bit verbose because implementing this highlighs the need for another option: `:run-if-plain`. That would make it possible for some hooks to be easily disabled if HG PLAIN is set. However such option would be a new feature, not something introduced to mitigate a behavior change introduced in 5.7, so the `:run-if-plain` option belong to the default branch and is not part of this series. Differential Revision: https://phab.mercurial-scm.org/D9981
Wed, 10 Feb 2021 22:43:16 +0100 hooks: add some test about HGPLAIN setting and hooks stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 10 Feb 2021 22:43:16 +0100] rev 46491
hooks: add some test about HGPLAIN setting and hooks In Mercurial 5.7, hooks are now ran with HGPLAIN set, which is a behavior change in. I could not find explicit test about it so I am adding one. The next changesets will introduce more change to help user mitigate the behavior change when needed. Differential Revision: https://phab.mercurial-scm.org/D9979
Wed, 10 Feb 2021 21:05:05 +0100 hooks: forbid ':' in hook name stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 10 Feb 2021 21:05:05 +0100] rev 46490
hooks: forbid ':' in hook name The `:` character is a special separator in the config and it seems same do to the same for hooks. This is necessary to improve the experience around the HGPLAIN behavior change in 5.7. See next changesets for details. Differential Revision: https://phab.mercurial-scm.org/D9978
Wed, 10 Feb 2021 21:46:29 +0100 rust-status: honor matcher when using the dirstate-only fast-path (issue6483) stable
Raphaël Gomès <rgomes@octobus.net> [Wed, 10 Feb 2021 21:46:29 +0100] rev 46489
rust-status: honor matcher when using the dirstate-only fast-path (issue6483) Differential Revision: https://phab.mercurial-scm.org/D9977
Wed, 10 Feb 2021 22:01:23 +0100 status: add test that shows that the Rust implementation has a bug stable
Raphaël Gomès <rgomes@octobus.net> [Wed, 10 Feb 2021 22:01:23 +0100] rev 46488
status: add test that shows that the Rust implementation has a bug Differential Revision: https://phab.mercurial-scm.org/D9976
Wed, 10 Feb 2021 19:23:56 +0100 tweak-default: no longer enable the experimental return code stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 10 Feb 2021 19:23:56 +0100] rev 46487
tweak-default: no longer enable the experimental return code The change is quite new and undocumented (since it is experimental) so it seems premature to make it available in tweak default. In addition, I am not sure the new return code are frozen yet (eg: some of the initial feedback have not been incorporated). Before the release I doubled check (probably with Martin) that they were not enabled by default and got replied that they were only enabled in the tests. Have I been aware that they have been also enabled in tweak default I would I have lobbied to delay that. I discovered they were in tweak default from users feedback. They found it an unpleasant and unexpected surprise of 5.7. So I suggest we no enable enable this experimental feature for Mercurial 5.7 and revisit this later, when the feature will be more mature. Differential Revision: https://phab.mercurial-scm.org/D9975
Thu, 04 Feb 2021 15:04:53 +0100 rhg: Parse per-repository configuration
Simon Sapin <simon.sapin@octobus.net> [Thu, 04 Feb 2021 15:04:53 +0100] rev 46486
rhg: Parse per-repository configuration Differential Revision: https://phab.mercurial-scm.org/D9964
Thu, 04 Feb 2021 14:29:47 +0100 rhg: Abort based on config on share-safe mismatch
Simon Sapin <simon.sapin@octobus.net> [Thu, 04 Feb 2021 14:29:47 +0100] rev 46485
rhg: Abort based on config on share-safe mismatch Differential Revision: https://phab.mercurial-scm.org/D9963
Thu, 04 Feb 2021 13:17:55 +0100 rhg: Parse system and user configuration at program start
Simon Sapin <simon.sapin@octobus.net> [Thu, 04 Feb 2021 13:17:55 +0100] rev 46484
rhg: Parse system and user configuration at program start … and pass it around up to `Repo::find` Differential Revision: https://phab.mercurial-scm.org/D9962
Thu, 04 Feb 2021 13:16:21 +0100 rust: Parse system and user configuration
Simon Sapin <simon.sapin@octobus.net> [Thu, 04 Feb 2021 13:16:21 +0100] rev 46483
rust: Parse system and user configuration CLI `--config` argument parsing is still missing, as is per-repo config Differential Revision: https://phab.mercurial-scm.org/D9961
Mon, 01 Feb 2021 13:32:00 +0100 rust: Remove unnecessary check for absolute path before joining
Simon Sapin <simon.sapin@octobus.net> [Mon, 01 Feb 2021 13:32:00 +0100] rev 46482
rust: Remove unnecessary check for absolute path before joining `Path::join` does the right thing if its argument is absolute. Differential Revision: https://phab.mercurial-scm.org/D9960
Mon, 01 Feb 2021 12:25:53 +0100 rust: replace read_whole_file with std::fs::read
Simon Sapin <simon.sapin@octobus.net> [Mon, 01 Feb 2021 12:25:53 +0100] rev 46481
rust: replace read_whole_file with std::fs::read It does the same thing Differential Revision: https://phab.mercurial-scm.org/D9959
Tue, 09 Feb 2021 09:37:39 -0800 wireprotopeer: clarify some variable names now that we allow snake_case
Martin von Zweigbergk <martinvonz@google.com> [Tue, 09 Feb 2021 09:37:39 -0800] rev 46480
wireprotopeer: clarify some variable names now that we allow snake_case "encargsorres" is hard to parse ("encarg sorres" sounds like it might be Spanish to me, and indeed Google Translate tells me that it's Catalan for "order sands"). Let's clarify with some added underscores and longer names. Differential Revision: https://phab.mercurial-scm.org/D9973
Tue, 02 Feb 2021 07:02:25 +0100 copy-tracing: add a --compute flag to debugchangedfiles
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 02 Feb 2021 07:02:25 +0100] rev 46479
copy-tracing: add a --compute flag to debugchangedfiles This will help analysis of possible misbehaving cases. Differential Revision: https://phab.mercurial-scm.org/D9946
Wed, 03 Feb 2021 23:23:56 -0800 bundle2: print "error:abort" message to stderr instead of stdout
Martin von Zweigbergk <martinvonz@google.com> [Wed, 03 Feb 2021 23:23:56 -0800] rev 46478
bundle2: print "error:abort" message to stderr instead of stdout It seems like the server's message is something you'd like to see even with `--quiet`. It's clearly part of the error. Differential Revision: https://phab.mercurial-scm.org/D9954
Wed, 03 Feb 2021 13:55:58 -0800 narrow: add --no-backup option for narrowing
Martin von Zweigbergk <martinvonz@google.com> [Wed, 03 Feb 2021 13:55:58 -0800] rev 46477
narrow: add --no-backup option for narrowing Most of our users at Google use Mercurial on a file system that keeps backups of previous versions of all files, including those in `.hg/`. They therefore don't need a separate backup in the file system when narrowing their repo (which they typically do by running `hg tracked --auto-remove-includes`). Backups can be very slow. `hg strip` already has a `--no-backup` option. This patch adds the same option to `hg tracked --removeinclude/--addexclude`. Differential Revision: https://phab.mercurial-scm.org/D9951
Fri, 29 Jan 2021 15:23:07 +0100 debugdiscovery: add flags to run discovery on subsets of the local repo
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 29 Jan 2021 15:23:07 +0100] rev 46476
debugdiscovery: add flags to run discovery on subsets of the local repo Generating new repository using strip of local clone is very expensive for large repositories. And such large repository are the most likely to requires debugging around discovery. So we add a simple way to run discovery using provided sets of heads. Differential Revision: https://phab.mercurial-scm.org/D9945
Wed, 10 Feb 2021 00:11:46 +0100 cmdutil: add a missing byte prefix to string introduce in 976b26bdd0d8 stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 10 Feb 2021 00:11:46 +0100] rev 46475
cmdutil: add a missing byte prefix to string introduce in 976b26bdd0d8 The change is missing a the `b'foo'` prefix to make it a bytestring. This lead to a traceback in some third party extension. It is unclear to me why the Mercurial test pass without it. Differential Revision: https://phab.mercurial-scm.org/D9974
Mon, 18 Jan 2021 10:20:58 +0100 relnote: remove the reference to `debugstrip` stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 18 Jan 2021 10:20:58 +0100] rev 46474
relnote: remove the reference to `debugstrip` The `debug` namespace is not intended for end user and advertising it is a path to confusion and trouble. I think we should wait for the `admin` namespace to exists and the command to be available as `admin--strip` before we advertise it. Differential Revision: https://phab.mercurial-scm.org/D9817
Tue, 02 Feb 2021 13:25:28 -0500 branching: merge with stable
Augie Fackler <augie@google.com> [Tue, 02 Feb 2021 13:25:28 -0500] rev 46473
branching: merge with stable
Mon, 01 Feb 2021 00:02:00 +0530 upgrade: implement partial upgrade for upgrading persistent-nodemap
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 01 Feb 2021 00:02:00 +0530] rev 46472
upgrade: implement partial upgrade for upgrading persistent-nodemap Upgrading repositories to use persistent nodemap should be fast and easy as it requires only two things: 1) Updating the requirements 2) Writing a persistent-nodemap on disk For both of the steps above, we don't need to edit existing revlogs. This patch makes upgrade only do the above mentioned two steps if we are only upgarding to use persistent-nodemap feature. Since `nodemap.persist_nodemap()` assumes that there exists a nodemap file for the given revlog if we are trying to call it, this patch adds `force` argument to create a file if does not exist which is true in our upgrade case. The test changes demonstrate that we no longer write nodemap files for manifest after upgrade which I think is desirable. Differential Revision: https://phab.mercurial-scm.org/D9936
Mon, 01 Feb 2021 00:10:27 +0530 tests: unquiet a test to show changes in next patch
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 01 Feb 2021 00:10:27 +0530] rev 46471
tests: unquiet a test to show changes in next patch Differential Revision: https://phab.mercurial-scm.org/D9935
Sun, 31 Jan 2021 23:40:57 +0530 nodemap: fix a typo in error message
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 31 Jan 2021 23:40:57 +0530] rev 46470
nodemap: fix a typo in error message Differential Revision: https://phab.mercurial-scm.org/D9934
Sun, 31 Jan 2021 23:38:31 +0530 revlog: refactor logic to compute nodemap file in separate function
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 31 Jan 2021 23:38:31 +0530] rev 46469
revlog: refactor logic to compute nodemap file in separate function I will like to use it one more place. Differential Revision: https://phab.mercurial-scm.org/D9933
Sun, 31 Jan 2021 23:34:59 +0530 nodemap: make `_persist_nodemap` a public function
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 31 Jan 2021 23:34:59 +0530] rev 46468
nodemap: make `_persist_nodemap` a public function I will like to have a utility function using which we can directly write out nodemap for a repository without going through the recloning process. This function seems like the one containing important pieces for that. Let's make it public. Differential Revision: https://phab.mercurial-scm.org/D9932
Sun, 31 Jan 2021 23:13:08 +0530 engine: 'if not, else' -> 'if, else'
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 31 Jan 2021 23:13:08 +0530] rev 46467
engine: 'if not, else' -> 'if, else' I personally feel that ``` if x: pass else: pass ``` is easier to read and edit than ``` if not x: pass else: pass ``` Next patches will add one more if-else clause. Differential Revision: https://phab.mercurial-scm.org/D9931
Mon, 25 Jan 2021 14:23:47 +0530 debugcommands: s/stdin/stdout in debugnodemap help
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 25 Jan 2021 14:23:47 +0530] rev 46466
debugcommands: s/stdin/stdout in debugnodemap help Differential Revision: https://phab.mercurial-scm.org/D9930
Fri, 29 Jan 2021 15:51:00 -0800 errors: use InputError in uncommit extension
Martin von Zweigbergk <martinvonz@google.com> [Fri, 29 Jan 2021 15:51:00 -0800] rev 46465
errors: use InputError in uncommit extension Differential Revision: https://phab.mercurial-scm.org/D9911
Thu, 04 Feb 2021 16:59:46 -0500 largefiles: properly pass kwargs into url.open stable
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Thu, 04 Feb 2021 16:59:46 -0500] rev 46464
largefiles: properly pass kwargs into url.open The url.open function has acquired a lot of kwargs over the years. When running `hg import http://example.com/hg/diff/1`, since at least a708e1e4d7a8 in March, 2018, the calling sites for url.open try to pass a `sendaccept` parameter that largefiles' override doesn't accept. Currently that stack traces something like this: Traceback (most recent call last): File "/tmp/hgtests.sv744r5t/install/bin/hg", line 59, in <module> dispatch.run() File "/tmp/hgtests.sv744r5t/install/lib/python/mercurial/dispatch.py", line 143, in run status = dispatch(req) File "/tmp/hgtests.sv744r5t/install/lib/python/mercurial/dispatch.py", line 245, in dispatch status = _rundispatch(req) File "/tmp/hgtests.sv744r5t/install/lib/python/mercurial/dispatch.py", line 289, in _rundispatch ret = _runcatch(req) or 0 File "/tmp/hgtests.sv744r5t/install/lib/python/mercurial/dispatch.py", line 465, in _runcatch return _callcatch(ui, _runcatchfunc) File "/tmp/hgtests.sv744r5t/install/lib/python/mercurial/dispatch.py", line 475, in _callcatch return scmutil.callcatch(ui, func) File "/tmp/hgtests.sv744r5t/install/lib/python/mercurial/scmutil.py", line 155, in callcatch return func() File "/tmp/hgtests.sv744r5t/install/lib/python/mercurial/dispatch.py", line 455, in _runcatchfunc return _dispatch(req) File "/tmp/hgtests.sv744r5t/install/lib/python/mercurial/dispatch.py", line 1259, in _dispatch lui, repo, cmd, fullargs, ui, options, d, cmdpats, cmdoptions File "/tmp/hgtests.sv744r5t/install/lib/python/mercurial/dispatch.py", line 913, in runcommand ret = _runcommand(ui, options, cmd, d) File "/tmp/hgtests.sv744r5t/install/lib/python/mercurial/dispatch.py", line 1270, in _runcommand return cmdfunc() File "/tmp/hgtests.sv744r5t/install/lib/python/mercurial/dispatch.py", line 1256, in <lambda> d = lambda: util.checksignature(func)(ui, *args, **strcmdopt) File "/tmp/hgtests.sv744r5t/install/lib/python/mercurial/util.py", line 1867, in check return func(*args, **kwargs) File "/tmp/hgtests.sv744r5t/install/lib/python/mercurial/commands.py", line 4184, in import_ patchfile = hg.openpath(ui, patchurl, sendaccept=False) File "/tmp/hgtests.sv744r5t/install/lib/python/mercurial/hg.py", line 181, in openpath return url.open(ui, path, sendaccept=sendaccept) TypeError: openlargefile() got an unexpected keyword argument 'sendaccept' So, just accept and pass along any kwargs of the overridden function.
Mon, 01 Feb 2021 11:41:10 +0100 rhg: add support for share-safe
Simon Sapin <simon.sapin@octobus.net> [Mon, 01 Feb 2021 11:41:10 +0100] rev 46463
rhg: add support for share-safe Differential Revision: https://phab.mercurial-scm.org/D9942
Thu, 14 Jan 2021 13:04:12 +0100 rhg: initial support for shared repositories
Simon Sapin <simon.sapin@octobus.net> [Thu, 14 Jan 2021 13:04:12 +0100] rev 46462
rhg: initial support for shared repositories Differential Revision: https://phab.mercurial-scm.org/D9941
Mon, 01 Feb 2021 19:30:28 +0100 rhg: Add basic test with a shared repository
Simon Sapin <simon.sapin@octobus.net> [Mon, 01 Feb 2021 19:30:28 +0100] rev 46461
rhg: Add basic test with a shared repository Differential Revision: https://phab.mercurial-scm.org/D9940
Tue, 02 Feb 2021 10:56:53 -0500 tests: print the server error log in `test-url-download.t`
Matt Harbison <matt_harbison@yahoo.com> [Tue, 02 Feb 2021 10:56:53 -0500] rev 46460
tests: print the server error log in `test-url-download.t` There was a stray 500 error in CI, but no additional context to know what the issue was. https://foss.heptapod.net/octobus/mercurial-devel/-/jobs/163093 Differential Revision: https://phab.mercurial-scm.org/D9949
Thu, 04 Feb 2021 19:56:45 +0900 procutil: extend gui test to detect wayland session (issue6479) stable
Yuya Nishihara <yuya@tcha.org> [Thu, 04 Feb 2021 19:56:45 +0900] rev 46459
procutil: extend gui test to detect wayland session (issue6479)
Tue, 02 Feb 2021 23:44:44 +0530 Added signature for changeset 0e2e7300f430 stable
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 02 Feb 2021 23:44:44 +0530] rev 46458
Added signature for changeset 0e2e7300f430
Tue, 02 Feb 2021 23:44:31 +0530 Added tag 5.7 for changeset 0e2e7300f430 stable
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 02 Feb 2021 23:44:31 +0530] rev 46457
Added tag 5.7 for changeset 0e2e7300f430
Tue, 02 Feb 2021 15:35:58 +0100 ci-fix: backed out changeset 45afff0f530a
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 02 Feb 2021 15:35:58 +0100] rev 46456
ci-fix: backed out changeset 45afff0f530a This changeset is part of a series that break Continuous integration on python 2 for about a week. As not concrete solution have been found so far the safer seems to back it out until we can figure the details out. Differential Revision: https://phab.mercurial-scm.org/D9948
Tue, 02 Feb 2021 15:35:38 +0100 ci-fix: backed out changeset d4c8b4b90ecb
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 02 Feb 2021 15:35:38 +0100] rev 46455
ci-fix: backed out changeset d4c8b4b90ecb This changeset is part of a series that break Continuous integration on python 2 for about a week. As not concrete solution have been found so far the safer seems to back it out until we can figure the details out. Differential Revision: https://phab.mercurial-scm.org/D9947
Mon, 01 Feb 2021 17:13:24 -0500 relnotes: add entry for `hg diff --merge -c`
Augie Fackler <augie@google.com> [Mon, 01 Feb 2021 17:13:24 -0500] rev 46454
relnotes: add entry for `hg diff --merge -c` Differential Revision: https://phab.mercurial-scm.org/D9944
Mon, 01 Feb 2021 12:55:53 -0800 branching: merge with stable
Martin von Zweigbergk <martinvonz@google.com> [Mon, 01 Feb 2021 12:55:53 -0800] rev 46453
branching: merge with stable
Fri, 29 Jan 2021 10:32:19 -0800 relnotes: copy "next" to "5.7" and clear "next" stable 5.7
Martin von Zweigbergk <martinvonz@google.com> [Fri, 29 Jan 2021 10:32:19 -0800] rev 46452
relnotes: copy "next" to "5.7" and clear "next" The same procedure as every year^Wcycle. Differential Revision: https://phab.mercurial-scm.org/D9909
Mon, 01 Feb 2021 15:37:03 -0500 relnotes: elaborate on the side effects of hooks having HGPLAIN=1 stable
Matt Harbison <matt_harbison@yahoo.com> [Mon, 01 Feb 2021 15:37:03 -0500] rev 46451
relnotes: elaborate on the side effects of hooks having HGPLAIN=1 Differential Revision: https://phab.mercurial-scm.org/D9943
Sun, 31 Jan 2021 19:56:52 -0500 packaging: replace a documentation reference to `python3` on Windows stable
Matt Harbison <matt_harbison@yahoo.com> [Sun, 31 Jan 2021 19:56:52 -0500] rev 46450
packaging: replace a documentation reference to `python3` on Windows Sadly, there's not `python3.exe` on Windows. Differential Revision: https://phab.mercurial-scm.org/D9937
Mon, 01 Feb 2021 11:57:18 -0500 diff: suppress `merging foo` output lines when performing a merge diff
Augie Fackler <augie@google.com> [Mon, 01 Feb 2021 11:57:18 -0500] rev 46449
diff: suppress `merging foo` output lines when performing a merge diff Differential Revision: https://phab.mercurial-scm.org/D9939
Thu, 07 May 2020 16:50:26 -0400 diff: add experimental support for "merge diffs"
Augie Fackler <augie@google.com> [Thu, 07 May 2020 16:50:26 -0400] rev 46448
diff: add experimental support for "merge diffs" The way this works is it re-runs the merge and "stores" conflicts, and then diffs against the conflicted result. In a normal merge, you should only see diffs against conflicted regions or in cases where there was a semantic conflict but not a textual one. This makes it easier to detect "evil merges" that contain substantial new work embedded in the merge commit. Differential Revision: https://phab.mercurial-scm.org/D8504
Mon, 01 Feb 2021 12:55:31 +0100 rust: use HgError in ConfigError
Simon Sapin <simon.sapin@octobus.net> [Mon, 01 Feb 2021 12:55:31 +0100] rev 46447
rust: use HgError in ConfigError Differential Revision: https://phab.mercurial-scm.org/D9938
Thu, 28 Jan 2021 20:31:42 +0100 rust: Fold find_root and check_requirements into Repo::find
Simon Sapin <simon.sapin@octobus.net> [Thu, 28 Jan 2021 20:31:42 +0100] rev 46446
rust: Fold find_root and check_requirements into Repo::find Differential Revision: https://phab.mercurial-scm.org/D9906
Thu, 28 Jan 2021 19:13:55 +0100 rhg: Simplify CommandError based on its use
Simon Sapin <simon.sapin@octobus.net> [Thu, 28 Jan 2021 19:13:55 +0100] rev 46445
rhg: Simplify CommandError based on its use Differential Revision: https://phab.mercurial-scm.org/D9905
Thu, 28 Jan 2021 19:21:57 +0100 rust: replace ToString impls with Display
Simon Sapin <simon.sapin@octobus.net> [Thu, 28 Jan 2021 19:21:57 +0100] rev 46444
rust: replace ToString impls with Display ToString is automatically implementing for everything that implements Display, and Display can avoid allocating intermediate strings. Differential Revision: https://phab.mercurial-scm.org/D9904
Wed, 27 Jan 2021 14:45:25 +0100 rust: use HgError in RevlogError and Vfs
Simon Sapin <simon.sapin@octobus.net> [Wed, 27 Jan 2021 14:45:25 +0100] rev 46443
rust: use HgError in RevlogError and Vfs Differential Revision: https://phab.mercurial-scm.org/D9897
Wed, 27 Jan 2021 14:59:09 +0100 rust: replace RequirementsError with HgError
Simon Sapin <simon.sapin@octobus.net> [Wed, 27 Jan 2021 14:59:09 +0100] rev 46442
rust: replace RequirementsError with HgError Differential Revision: https://phab.mercurial-scm.org/D9896
Wed, 27 Jan 2021 15:04:51 +0100 rhg: Print an error message in more cases
Simon Sapin <simon.sapin@octobus.net> [Wed, 27 Jan 2021 15:04:51 +0100] rev 46441
rhg: Print an error message in more cases Differential Revision: https://phab.mercurial-scm.org/D9895
Wed, 27 Jan 2021 14:00:21 +0100 rust: Remove DirstateParseError and ListDirstateTrackedFilesError
Simon Sapin <simon.sapin@octobus.net> [Wed, 27 Jan 2021 14:00:21 +0100] rev 46440
rust: Remove DirstateParseError and ListDirstateTrackedFilesError Use HgError instead. Differential Revision: https://phab.mercurial-scm.org/D9894
Wed, 27 Jan 2021 13:41:28 +0100 rust: Replace DirstatePackError with HgError
Simon Sapin <simon.sapin@octobus.net> [Wed, 27 Jan 2021 13:41:28 +0100] rev 46439
rust: Replace DirstatePackError with HgError Differential Revision: https://phab.mercurial-scm.org/D9893
Wed, 27 Jan 2021 13:19:49 +0100 rust: Introduce an `HgError` enum for common error cases
Simon Sapin <simon.sapin@octobus.net> [Wed, 27 Jan 2021 13:19:49 +0100] rev 46438
rust: Introduce an `HgError` enum for common error cases Differential Revision: https://phab.mercurial-scm.org/D9892
Tue, 26 Jan 2021 20:42:36 +0100 rust: remove three enums that were identical to `RevlogError`
Simon Sapin <simon.sapin@octobus.net> [Tue, 26 Jan 2021 20:42:36 +0100] rev 46437
rust: remove three enums that were identical to `RevlogError` Differential Revision: https://phab.mercurial-scm.org/D9877
Tue, 26 Jan 2021 20:31:26 +0100 rhg: replace `map_*_error` functions with `From` impls
Simon Sapin <simon.sapin@octobus.net> [Tue, 26 Jan 2021 20:31:26 +0100] rev 46436
rhg: replace `map_*_error` functions with `From` impls Differential Revision: https://phab.mercurial-scm.org/D9876
Tue, 26 Jan 2021 20:05:37 +0100 rust: replace trivial `impl From …` with `#[derive(derive_more::From)]`
Simon Sapin <simon.sapin@octobus.net> [Tue, 26 Jan 2021 20:05:37 +0100] rev 46435
rust: replace trivial `impl From …` with `#[derive(derive_more::From)]` Crate docs: https://jeltef.github.io/derive_more/derive_more/from.html Differential Revision: https://phab.mercurial-scm.org/D9875
Tue, 26 Jan 2021 19:07:24 +0100 rust: remove `FooError` structs with only `kind: FooErrorKind` enum field
Simon Sapin <simon.sapin@octobus.net> [Tue, 26 Jan 2021 19:07:24 +0100] rev 46434
rust: remove `FooError` structs with only `kind: FooErrorKind` enum field Use the enum directly as `FooError` instead. Differential Revision: https://phab.mercurial-scm.org/D9874
Tue, 26 Jan 2021 18:31:46 +0100 rhg: centralize parsing of `--rev` CLI arguments
Simon Sapin <simon.sapin@octobus.net> [Tue, 26 Jan 2021 18:31:46 +0100] rev 46433
rhg: centralize parsing of `--rev` CLI arguments This new module will be the place to implement more of the revset language when we do so. Differential Revision: https://phab.mercurial-scm.org/D9873
Mon, 25 Jan 2021 18:25:26 +0100 rust: Remove hex parsing from the nodemap
Simon Sapin <simon.sapin@octobus.net> [Mon, 25 Jan 2021 18:25:26 +0100] rev 46432
rust: Remove hex parsing from the nodemap Separating concerns simplifies error types. Differential Revision: https://phab.mercurial-scm.org/D9864
Mon, 25 Jan 2021 11:48:47 +0100 rust: Make NodePrefix allocation-free and Copy, remove NodePrefixRef
Simon Sapin <simon.sapin@octobus.net> [Mon, 25 Jan 2021 11:48:47 +0100] rev 46431
rust: Make NodePrefix allocation-free and Copy, remove NodePrefixRef The `*Ref` struct only existed to avoid allocating `Vec`s when cloning `NodePrefix`, but we can avoid having `Vec` in the first place by using an inline array instead. This makes `NodePrefix` 21 bytes (with 1 for the length) which is smaller than before as `Vec` alone is 24 bytes. Differential Revision: https://phab.mercurial-scm.org/D9863
Sat, 30 Jan 2021 18:30:11 +0800 churn: count lines that look like diff headers but are not
Aay Jay Chan <aayjaychan@itopia.com.hk> [Sat, 30 Jan 2021 18:30:11 +0800] rev 46430
churn: count lines that look like diff headers but are not Previously, churn cannot count added lines that start with "++ " or removed lines that start with "-- ". Differential Revision: https://phab.mercurial-scm.org/D9929
Mon, 25 Jan 2021 12:31:40 +0100 rust: Exclude empty node prefixes
Simon Sapin <simon.sapin@octobus.net> [Mon, 25 Jan 2021 12:31:40 +0100] rev 46429
rust: Exclude empty node prefixes We presumably don’t want `--rev ""` to select every single revision, even though the empty string is a prefix of all strings. Differential Revision: https://phab.mercurial-scm.org/D9862
Mon, 25 Jan 2021 12:28:39 +0100 rust: Simplify error type for reading hex node IDs
Simon Sapin <simon.sapin@octobus.net> [Mon, 25 Jan 2021 12:28:39 +0100] rev 46428
rust: Simplify error type for reading hex node IDs If a string is not valid hexadecimal it’s not that useful to track the precise reason. Differential Revision: https://phab.mercurial-scm.org/D9861
Mon, 25 Jan 2021 12:00:23 +0100 rust: replace Node::encode_hex with std::fmt::LowerHex
Simon Sapin <simon.sapin@octobus.net> [Mon, 25 Jan 2021 12:00:23 +0100] rev 46427
rust: replace Node::encode_hex with std::fmt::LowerHex This avoids allocating intermediate strings. Differential Revision: https://phab.mercurial-scm.org/D9860
Fri, 29 Jan 2021 13:46:19 +0100 rhg: Build in release mode on CI
Simon Sapin <simon.sapin@octobus.net> [Fri, 29 Jan 2021 13:46:19 +0100] rev 46426
rhg: Build in release mode on CI This follows e73b40c790ec which made tests use the release executable. With e73b40c790ec but not this, tests are skipped on CI because the executable is missing. Differential Revision: https://phab.mercurial-scm.org/D9907
Sat, 30 Jan 2021 00:36:54 +0100 config: use the right API to access git-submodule
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 30 Jan 2021 00:36:54 +0100] rev 46425
config: use the right API to access git-submodule Differential Revision: https://phab.mercurial-scm.org/D9923
Fri, 29 Jan 2021 14:03:39 +0100 config: use the right API to access template access
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 29 Jan 2021 14:03:39 +0100] rev 46424
config: use the right API to access template access Preventing direct access to the underlying dict will help a coming refactoring of `config`. Differential Revision: https://phab.mercurial-scm.org/D9922
Fri, 29 Jan 2021 14:03:01 +0100 config: use the right API to access subrepository section
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 29 Jan 2021 14:03:01 +0100] rev 46423
config: use the right API to access subrepository section Preventing direct access to the underlying dict will help a coming refactoring of `config`. Differential Revision: https://phab.mercurial-scm.org/D9921
Fri, 29 Jan 2021 13:03:50 +0100 config: test priority involving the command line
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 29 Jan 2021 13:03:50 +0100] rev 46422
config: test priority involving the command line Differential Revision: https://phab.mercurial-scm.org/D9917
Fri, 29 Jan 2021 11:50:33 +0100 config: test priority involving include
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 29 Jan 2021 11:50:33 +0100] rev 46421
config: test priority involving include Differential Revision: https://phab.mercurial-scm.org/D9916
Fri, 29 Jan 2021 11:42:27 +0100 config: add a test for priority when includes are involved
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 29 Jan 2021 11:42:27 +0100] rev 46420
config: add a test for priority when includes are involved Differential Revision: https://phab.mercurial-scm.org/D9915
Fri, 29 Jan 2021 16:26:53 -0800 errors: use InputError for incorrectly formatted dates
Martin von Zweigbergk <martinvonz@google.com> [Fri, 29 Jan 2021 16:26:53 -0800] rev 46419
errors: use InputError for incorrectly formatted dates Differential Revision: https://phab.mercurial-scm.org/D9913
Fri, 29 Jan 2021 15:56:08 -0800 errors: use StateError more in merge module
Martin von Zweigbergk <martinvonz@google.com> [Fri, 29 Jan 2021 15:56:08 -0800] rev 46418
errors: use StateError more in merge module Differential Revision: https://phab.mercurial-scm.org/D9912
Fri, 29 Jan 2021 12:16:55 -0800 errors: use exit code 40 for when a hook fails
Martin von Zweigbergk <martinvonz@google.com> [Fri, 29 Jan 2021 12:16:55 -0800] rev 46417
errors: use exit code 40 for when a hook fails A hook can be used for checking inputs, state, configuration, security, etc., so it's unclear which of the existing exit codes to use. Let's instead add one specifically for failed hooks. I picked 40. Differential Revision: https://phab.mercurial-scm.org/D9910
Fri, 29 Jan 2021 12:50:10 -0500 context: add missing manifest invalidation after write in overlayworkingctx
Augie Fackler <augie@google.com> [Fri, 29 Jan 2021 12:50:10 -0500] rev 46416
context: add missing manifest invalidation after write in overlayworkingctx This was breaking my merge-diff logic that will be in the next patch. Differential Revision: https://phab.mercurial-scm.org/D9908
Wed, 27 Jan 2021 10:29:21 -0800 wix: tell ComponentSearch that it is finding a directory (not a file) stable
Kyle Lippincott <spectral@google.com> [Wed, 27 Jan 2021 10:29:21 -0800] rev 46415
wix: tell ComponentSearch that it is finding a directory (not a file) This is to fix an issue we've noticed where fresh installations start at `C:\Program Files\Mercurial`, and then upgrades "walk up" the tree and end up in `C:\Program Files` and finally `C:\` (where they stay). ComponentSearch defaults to finding files, which I think means "it produces a string like `C:\Program Files\Mercurial`", whereas with the type being explicitly a directory, it would return `C:\Program Files\Mercurial\` (note the final trailing backslash). Presumably, a latter step then tries to turn that file name into a proper directory, by removing everything after the last `\`. This could likely also be fixed by actually searching for the component for hg.exe itself. That seemed a lot more complicated, as the GUID for hg.exe isn't known in this file (it's one of the "auto-derived" ones). We could also consider adding a Condition that I think could check the Property and ensure it's either empty or ends in a trailing slash, but that would be an installer runtime check and I'm not convinced it'd actually be useful. This will *not* cause existing installations that are in one of the bad directories to fix themselves. Doing that would require a fair amount more understanding of wix and windows installer than I have, and it *probably* wouldn't be possible to be 100% correct about it either (there's nothing preventing a user from intentionally installing it in C:\, though I don't know why they would do so). If someone wants to tackle fixing existing installations, I think that the first installation is actually the only one that shows up in "Add or Remove Programs", and that its registry keys still exist. You might be able to find something under HKEY_USERS that lists both the "good" and the "bad" InstallDirs. Mine was under `HKEY_USERS\S-1-5-18\Software\Mercurial\InstallDir` (C:\), and `HKEY_USERS\S-1-5-21-..numbers..\Software\Mercurial\InstallDir` (C:\Program Files\Mercurial). If you find exactly two, with one being the default path, and the other being a prefix of it, the user almost certainly hit this bug :D We had originally thought that this bug might be due to unattended installations/upgrades, but I no longer think that's the case. We were able to reproduce the issue by uninstalling all copies of Mercurial I could find, installing one version (it chose the correct location), and then starting the installer for a different version (higher or lower didn't matter). I did not need to deal with an unattended or headless installation/upgrade to trigger the issue, but it's possible that my system was "primed" for this bug to happen because of a previous unattended installation/upgrade. Differential Revision: https://phab.mercurial-scm.org/D9891
Fri, 29 Jan 2021 17:32:09 +0530 merge with stable
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 29 Jan 2021 17:32:09 +0530] rev 46414
merge with stable
Wed, 27 Jan 2021 00:54:57 -0500 copyright: update to 2021 stable
Matt Harbison <matt_harbison@yahoo.com> [Wed, 27 Jan 2021 00:54:57 -0500] rev 46413
copyright: update to 2021 Differential Revision: https://phab.mercurial-scm.org/D9885
Thu, 28 Jan 2021 13:15:34 +0100 persistent-nodemap: Fix Rust declarations for Revlog_CAPI signatures stable
Simon Sapin <simon.sapin@octobus.net> [Thu, 28 Jan 2021 13:15:34 +0100] rev 46412
persistent-nodemap: Fix Rust declarations for Revlog_CAPI signatures Use Rust’s `libc::ssize_t` as the closest match to C’s `Py_ssize_t`. See details in test comment. Going forward we should find a way to have such Rust declarations auto-generated from C headers at build time, or auto-checked against them in a test. Differential Revision: https://phab.mercurial-scm.org/D9901
Thu, 28 Jan 2021 13:25:37 +0100 persistent-nodemap: add test case reproducing a Rust panic stable
Simon Sapin <simon.sapin@octobus.net> [Thu, 28 Jan 2021 13:25:37 +0100] rev 46411
persistent-nodemap: add test case reproducing a Rust panic Thanks to Mitchell Plamann for reporting this bug. The next commit fixes it. Differential Revision: https://phab.mercurial-scm.org/D9900
Thu, 28 Jan 2021 00:14:15 -0800 copies: fix an incorrect comment in graftcopies() from recent D9802
Martin von Zweigbergk <martinvonz@google.com> [Thu, 28 Jan 2021 00:14:15 -0800] rev 46410
copies: fix an incorrect comment in graftcopies() from recent D9802 I don't think the bit about creating a merge in the filelog was correct. Or at least I couldn't find a case where it happened. Differential Revision: https://phab.mercurial-scm.org/D9899
Wed, 27 Jan 2021 22:10:57 -0800 narrow: delete a stale TODO about not sending groups the client already has
Martin von Zweigbergk <martinvonz@google.com> [Wed, 27 Jan 2021 22:10:57 -0800] rev 46409
narrow: delete a stale TODO about not sending groups the client already has 2c5835b4246b changed the changegroup generation to not send treemanifests for directories the client had before widening. As that commit mentions, we had already stopped before that commit to send the changelog and filelogs for files the client already had. Differential Revision: https://phab.mercurial-scm.org/D9898
Sat, 16 Jan 2021 00:03:18 +0100 copies: add an devel option to trace all files
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 16 Jan 2021 00:03:18 +0100] rev 46408
copies: add an devel option to trace all files Filelog based copy tracing only trace copy for file that have been added. This is a trade off between skipping some rare copy case in exchange for avoiding atrocious-to-the-point-of-unusable performance. The changeset centric copy tracing does not need this trade off and naturally trace all copy, include the one involving non-new files. In order to ease the comparison from both algorithm, we add a small devel option to trace copy for all files in the target revisions. Differential Revision: https://phab.mercurial-scm.org/D9796
Thu, 28 Jan 2021 15:26:33 +0100 revlog: prepare pure parser for being overloaded
Raphaël Gomès <rgomes@octobus.net> [Thu, 28 Jan 2021 15:26:33 +0100] rev 46407
revlog: prepare pure parser for being overloaded The current class uses module-level variables which don't allow for reusing the current logic for a slightly different revlog version. Differential Revision: https://phab.mercurial-scm.org/D9903
Thu, 28 Jan 2021 15:12:48 +0100 revlog: use a less probable revlog version for backwards compatibility
Raphaël Gomès <rgomes@octobus.net> [Thu, 28 Jan 2021 15:12:48 +0100] rev 46406
revlog: use a less probable revlog version for backwards compatibility This allows us to define a usable v2. Differential Revision: https://phab.mercurial-scm.org/D9902
Wed, 27 Jan 2021 15:06:02 +0100 clang-format: show required version in skip message
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 27 Jan 2021 15:06:02 +0100] rev 46405
clang-format: show required version in skip message This will help people to configure their black Differential Revision: https://phab.mercurial-scm.org/D9890
Wed, 27 Jan 2021 15:04:48 +0100 heptapod-ci: indicate which version of clang-format is used for the run
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 27 Jan 2021 15:04:48 +0100] rev 46404
heptapod-ci: indicate which version of clang-format is used for the run This will help understand possible mismatch Differential Revision: https://phab.mercurial-scm.org/D9889
Wed, 27 Jan 2021 14:58:24 +0100 black: show required version in skip message
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 27 Jan 2021 14:58:24 +0100] rev 46403
black: show required version in skip message This will help people to configure their black Differential Revision: https://phab.mercurial-scm.org/D9888
Wed, 27 Jan 2021 14:57:20 +0100 heptapod-ci: indicate which version of black is used for the run
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 27 Jan 2021 14:57:20 +0100] rev 46402
heptapod-ci: indicate which version of black is used for the run This will help understand possible mismatch Differential Revision: https://phab.mercurial-scm.org/D9887
Wed, 27 Jan 2021 15:53:32 +0100 heptapod-ci: add a default value for HG_CI_IMAGE_TAG
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 27 Jan 2021 15:53:32 +0100] rev 46401
heptapod-ci: add a default value for HG_CI_IMAGE_TAG Differential Revision: https://phab.mercurial-scm.org/D9886
Tue, 12 Jan 2021 00:11:16 +0300 convert: option to set date and time for svn commits
Nikita Slyusarev <nslus@yandex-team.com> [Tue, 12 Jan 2021 00:11:16 +0300] rev 46400
convert: option to set date and time for svn commits Converting to subversion repository is not preserving original commit dates as it may break some subversion functionality if commit dates are not monotonically increasing. This patch adds `convert.svn.dangerous-set-commit-dates` configuration option to change this behaviour and enable commit dates convertion for those who want to take risks. Subversion always uses commit dates with UTC timezone, so only timestamps are used. Test `test-convert-svn-sink.t` uses `svnxml.py` script to dump history of svn repositories. Atm the script is not printing `date` field from svn log. This patch changes this to allow checks on correctness of date and time convertion. Documentation is updated. Additional test case is added to test commit dates convertion. Differential Revision: https://phab.mercurial-scm.org/D9721
Fri, 15 Jan 2021 23:58:41 +0100 copies: simplify the conditional for _filter's case 3
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 15 Jan 2021 23:58:41 +0100] rev 46399
copies: simplify the conditional for _filter's case 3 The conditional is much simpler and the test are actually happier. This clarification of the conditional will also be necessary to properly support tracing more renames in a coming changeset. Differential Revision: https://phab.mercurial-scm.org/D9795
Fri, 15 Jan 2021 23:49:51 +0100 copies: clarify which case some conditional are handling
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 15 Jan 2021 23:49:51 +0100] rev 46398
copies: clarify which case some conditional are handling This make the function a bit clearer. The middle conditional get no label because we about about to remove it. See next changeset for details. Differential Revision: https://phab.mercurial-scm.org/D9794
Sat, 16 Jan 2021 02:18:55 +0100 copies: explicitly filter out existing file in graftcopies
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 16 Jan 2021 02:18:55 +0100] rev 46397
copies: explicitly filter out existing file in graftcopies The `graftcopies` function does something very strange (maybe even wrong), it calls `_filter` with a pair of changeset that does not match the one used to compute the copies informations. We are about to do some rework of `_filter` to make it closer to its documented intent and fix a couple of bug. This means some of the logic that only make sense for graft need to go somewhere else. We add the extra filtering with proper documentation to `graftcopies`. Differential Revision: https://phab.mercurial-scm.org/D9802
Fri, 22 Jan 2021 15:43:06 -0500 histedit: rip out mysterious catch-all ignore curses.error handler
Augie Fackler <augie@google.com> [Fri, 22 Jan 2021 15:43:06 -0500] rev 46396
histedit: rip out mysterious catch-all ignore curses.error handler I have no idea why this was here, and ripping it out doesn't obviously break anything for me (tests all pass, I can poke around chistedit UI a bit without issue), so I'm thinking we should rip it out and see if we get bug reports. Differential Revision: https://phab.mercurial-scm.org/D9855
Fri, 22 Jan 2021 15:32:00 -0500 histedit: notice when the main window underflows height and abort
Augie Fackler <augie@google.com> [Fri, 22 Jan 2021 15:32:00 -0500] rev 46395
histedit: notice when the main window underflows height and abort If you try to have a 13-line-tall terminal and use curses histedit, it fails by spinning in an infinite loop due to the catch-all ignore of curses errors on line 1682 of histedit.py. We should also fix that catch-all ignore of curses errors (what other demons lurk here, I wonder?) but we can trivially catch this case and guide the user to a happy path. We've seen this mostly in IDE users that have a tendency to have really tiny embedded terminal windows. Differential Revision: https://phab.mercurial-scm.org/D9854
Fri, 22 Jan 2021 15:29:12 -0500 histedit: don't assign to _ for unused values
Augie Fackler <augie@google.com> [Fri, 22 Jan 2021 15:29:12 -0500] rev 46394
histedit: don't assign to _ for unused values I don't know what this ignored value is, but we need to not clobber the _() function from gettext, or we get mysterious crashes instead of internationalizing some strings in my upcoming patches. Differential Revision: https://phab.mercurial-scm.org/D9853
Tue, 26 Jan 2021 17:25:30 -0500 hghave: list the module needed for the `vcr` check
Matt Harbison <matt_harbison@yahoo.com> [Tue, 26 Jan 2021 17:25:30 -0500] rev 46393
hghave: list the module needed for the `vcr` check I'm tired of having to look up modules each time I setup a system, and try to distinguish between similar package names to get the right one. Now that the search API has been disabled, it's even harder. There are other python packages here that should be listed like this, but this is the one that came up missing today, so it's a start. Differential Revision: https://phab.mercurial-scm.org/D9879
Tue, 26 Jan 2021 00:19:36 +0100 debugshell: add a simple command for starting an interactive shell
Joerg Sonnenberger <joerg@bec.de> [Tue, 26 Jan 2021 00:19:36 +0100] rev 46392
debugshell: add a simple command for starting an interactive shell This simplifies interactive exploration of the Mercurial APIs. The ui and repo instances are provided as local variables. Differential Revision: https://phab.mercurial-scm.org/D9866
Mon, 25 Jan 2021 11:34:23 +0100 rust: replace an unsafe use of transmute with a safe use of bytes-cast
Simon Sapin <simon.sapin@octobus.net> [Mon, 25 Jan 2021 11:34:23 +0100] rev 46391
rust: replace an unsafe use of transmute with a safe use of bytes-cast Differential Revision: https://phab.mercurial-scm.org/D9859
Fri, 15 Jan 2021 16:11:54 +0100 rust: use the bytes-cast crate to parse persistent nodemaps
Simon Sapin <simon.sapin@octobus.net> [Fri, 15 Jan 2021 16:11:54 +0100] rev 46390
rust: use the bytes-cast crate to parse persistent nodemaps This crate casts pointers to custom structs, with compile-time safety checks, for easy and efficient binary data parsing. See https://crates.io/crates/bytes-cast and https://docs.rs/bytes-cast/0.1.0/bytes_cast/ Differential Revision: https://phab.mercurial-scm.org/D9788
Mon, 25 Jan 2021 19:03:27 -0500 cext: restore the ability to build on Windows with py2
Matt Harbison <matt_harbison@yahoo.com> [Mon, 25 Jan 2021 19:03:27 -0500] rev 46389
cext: restore the ability to build on Windows with py2 This broke in e92ca942ddca. Differential Revision: https://phab.mercurial-scm.org/D9867
Mon, 25 Jan 2021 16:46:51 +0100 command-namespace: use `::` are the command separator
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 25 Jan 2021 16:46:51 +0100] rev 46388
command-namespace: use `::` are the command separator This was discussed on the mailing list / phab and `::` got a couple of positive feedback. I dediced to not introduce automatic folding of `::`, I feel like it make sense for `-`, but I like the expliciteness of `::`. So I am adding alias for backward compatibility. Differential Revision: https://phab.mercurial-scm.org/D9872
Mon, 25 Jan 2021 23:13:01 +0100 perf: test the formatting of a command help
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 25 Jan 2021 23:13:01 +0100] rev 46387
perf: test the formatting of a command help Since we are about to addd ':' in command name I want this covered. Differential Revision: https://phab.mercurial-scm.org/D9871
Mon, 25 Jan 2021 23:08:33 +0100 help: escape ':' (as '\:') when generating command names
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 25 Jan 2021 23:08:33 +0100] rev 46386
help: escape ':' (as '\:') when generating command names We need this before we can use ":" in command names. Differential Revision: https://phab.mercurial-scm.org/D9870
Mon, 25 Jan 2021 23:07:56 +0100 minirst: respect escaping in definition list key
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 25 Jan 2021 23:07:56 +0100] rev 46385
minirst: respect escaping in definition list key If we start adding `:` in command names… we need minirst to not choke on them. Differential Revision: https://phab.mercurial-scm.org/D9869
Tue, 26 Jan 2021 00:45:40 +0100 run-test: avoid byte issue when replacing output file of python test
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 26 Jan 2021 00:45:40 +0100] rev 46384
run-test: avoid byte issue when replacing output file of python test Otherwise we get error like:: FileNotFoundError: [Errno 2] No such file or directory: "b'…/tests/test-minirst.py'.out" Differential Revision: https://phab.mercurial-scm.org/D9868
Mon, 25 Jan 2021 16:34:43 +0100 store: use `endswith` to detect revlog extension
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 25 Jan 2021 16:34:43 +0100] rev 46383
store: use `endswith` to detect revlog extension Suggested by Gregory Szorc. Differential Revision: https://phab.mercurial-scm.org/D9865
Tue, 01 Dec 2020 12:59:33 -0500 black: merge config into main pyproject.toml now that we have it
Augie Fackler <augie@google.com> [Tue, 01 Dec 2020 12:59:33 -0500] rev 46382
black: merge config into main pyproject.toml now that we have it This means that naive contributors who just run `black` on a source file will get reasonable behavior as long as they have a recent black. Yay! Differential Revision: https://phab.mercurial-scm.org/D9834
Tue, 01 Dec 2020 12:52:04 -0500 pyproject: add config file
Augie Fackler <augie@google.com> [Tue, 01 Dec 2020 12:52:04 -0500] rev 46381
pyproject: add config file This will tell pip et al to call our setup.py for the majority of packaging concerns, but also gives us a place to put standard config stuff like black. Differential Revision: https://phab.mercurial-scm.org/D9833
Thu, 14 Jan 2021 16:37:10 +0530 upgrade: update only requirements if we can
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 14 Jan 2021 16:37:10 +0530] rev 46380
upgrade: update only requirements if we can Upgrade operations which involves just upgrading requirements earlier used to go through whole revlog cloning business. Now we just upgrade the requirement and skip the cloning part. Differential Revision: https://phab.mercurial-scm.org/D9775
Thu, 14 Jan 2021 16:34:58 +0530 engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 14 Jan 2021 16:34:58 +0530] rev 46379
engine: add `if True` to prepare for next patch This will help making next patch easier to read. Differential Revision: https://phab.mercurial-scm.org/D9774
Thu, 14 Jan 2021 17:27:54 +0530 test: unquiet few tests to demonstrate changes in upcoming patches
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 14 Jan 2021 17:27:54 +0530] rev 46378
test: unquiet few tests to demonstrate changes in upcoming patches Upcoming patches will skip revlog cloning for share-safe upgrades. Differential Revision: https://phab.mercurial-scm.org/D9773
Thu, 14 Jan 2021 16:57:11 +0530 upgrade: mark sharesafe improvement as only touching requirements
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 14 Jan 2021 16:57:11 +0530] rev 46377
upgrade: mark sharesafe improvement as only touching requirements Upgrading the repository to use share safe functionality only touches requirements. Differential Revision: https://phab.mercurial-scm.org/D9772
Mon, 14 Dec 2020 16:20:00 +0530 actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 14 Dec 2020 16:20:00 +0530] rev 46376
actions: calculate what all parts does the operation touches To make upgrade work less in certain situations, we need to teach it to find out what all parts of repository current operation is touching. This patch starts doing that. In next patch we will be setting values in improvement objects. For now, we assume everything touches everything. Differential Revision: https://phab.mercurial-scm.org/D9771
Thu, 14 Jan 2021 16:25:40 +0530 upgrade: don't create store backup if `--no-backup` is passed
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 14 Jan 2021 16:25:40 +0530] rev 46375
upgrade: don't create store backup if `--no-backup` is passed If the user explicitly mentioned that they don't need backup, then let's not create it. Differential Revision: https://phab.mercurial-scm.org/D9770
Mon, 14 Dec 2020 10:44:29 +0100 cext: add Python 3.10 support
Victor Stinner <vstinner@python.org> [Mon, 14 Dec 2020 10:44:29 +0100] rev 46374
cext: add Python 3.10 support * Replace "Py_TYPE(obj) = type;" with "Py_SET_TYPE(obj, type);" * Add pythoncapi_compat.h header file to get Py_SET_TYPE() on Python 2.7-3.8. Header file added to mercurial/ and contrib/python-zstandard/zstd/common/. In Python 3.10, Py_TYPE(obj) must not longer be used as an l-value. pythoncapi_compat.h comes from: https://github.com/pythoncapi/pythoncapi_compat Differential Revision: https://phab.mercurial-scm.org/D9825
Wed, 20 Jan 2021 14:47:13 +0100 revlog: decouple caching from addrevision callback for addgroup
Joerg Sonnenberger <joerg@bec.de> [Wed, 20 Jan 2021 14:47:13 +0100] rev 46373
revlog: decouple caching from addrevision callback for addgroup For changesets, it is useful to cache the content as it will almost always be processed afterwards. For manifests on the other hand, the content is often not used directly as there is a fast path for deltas. Explicitly disable the cache in exchangev2's manifest handling for that reason. Differential Revision: https://phab.mercurial-scm.org/D9847
Fri, 15 Jan 2021 01:58:59 +0100 branchmap: update rev-branch-cache incrementally
Joerg Sonnenberger <joerg@bec.de> [Fri, 15 Jan 2021 01:58:59 +0100] rev 46372
branchmap: update rev-branch-cache incrementally Historically, the revision to branch mapping cache was updated on demand and shared via bundle2 to avoid the cost of rebuilding on first use. Use the new `register_changeset` callback and update rbc directly on every change. Make the transfer of the bundle part redundant, but keep it for the moment to avoid the test churn. Over all, "hg unbundle" for large bundles is less than 1.8% slower for different larger repositories and that seems to a reasonable trade off. Differential Revision: https://phab.mercurial-scm.org/D9781
Tue, 19 Jan 2021 00:20:53 +0100 repository: introduce register_changeset callback
Joerg Sonnenberger <joerg@bec.de> [Tue, 19 Jan 2021 00:20:53 +0100] rev 46371
repository: introduce register_changeset callback The new callback is called whenever a changeset is added to the repository (commit, unbundle or exchange). Since the bulk operations already parse the changeset (readfiles or full changesetrevision), always use the latter to avoid redundant lookups. The first consumer of the new interface needs to look at extra. Differential Revision: https://phab.mercurial-scm.org/D9780
Fri, 15 Jan 2021 01:30:08 +0100 changelog: move branchinfo to changelogrevision
Joerg Sonnenberger <joerg@bec.de> [Fri, 15 Jan 2021 01:30:08 +0100] rev 46370
changelog: move branchinfo to changelogrevision The function parses the extra dictionary after looking up the changelogrevision. To avoid duplicated look up, it is better to provide it as property of changelogrevision instead. Keep the function for a release cycle as at least the topic extension depends on it. Differential Revision: https://phab.mercurial-scm.org/D9779
Fri, 22 Jan 2021 11:10:39 +0100 rust: lower compile error on non-linux platforms to a warning
Dan Villiom Podlaski Christiansen <danchr@gmail.com> [Fri, 22 Jan 2021 11:10:39 +0100] rev 46369
rust: lower compile error on non-linux platforms to a warning As discussed on D9671#146704 this lowers the error to a warning. Differential Revision: https://phab.mercurial-scm.org/D9852
Mon, 18 Jan 2021 10:24:20 +0100 purge: move extension into core mercurial
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com> [Mon, 18 Jan 2021 10:24:20 +0100] rev 46368
purge: move extension into core mercurial The motivation is simple: it's nicer to avoid gating basic functionality. To reduce the risk of people shooting themselves in the feet, `--confirm` is now the default, unless the extensions is loaded.. For review of the body of the purge command, use this instead of what hg/phabricator will show (the block of code is modified, not just moved): Differential Revision: https://phab.mercurial-scm.org/D9820
Mon, 18 Jan 2021 10:24:11 +0100 purge: also deal with directory with --confirm
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 18 Jan 2021 10:24:11 +0100] rev 46367
purge: also deal with directory with --confirm Getting the exact number is simple (you have to project the result of previous deletion to detect super-directory with only about-to-be-deleted content). So we use a vaguer message. Differential Revision: https://phab.mercurial-scm.org/D9819
Mon, 18 Jan 2021 10:24:03 +0100 purge: add a --confirm option
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 18 Jan 2021 10:24:03 +0100] rev 46366
purge: add a --confirm option The options provide a prompt to the user before permanent deletion are made. The prompt is currently not aware of directory deletion. I'll fix this in the next changesets. Differential Revision: https://phab.mercurial-scm.org/D9818
Mon, 11 May 2020 18:45:45 -0400 filemerge: add a hacktastic version of internal:merge3 for merge diffs
Augie Fackler <augie@google.com> [Mon, 11 May 2020 18:45:45 -0400] rev 46365
filemerge: add a hacktastic version of internal:merge3 for merge diffs This is a version of merge3 that always reports success, so that conflict markers get preserved without us having to implement conflict storage for in-memory merge. Credit to martinvonz for the idea. The only planned consumer of this "merge tool" is my upcoming merge-diffs functionality, though I suspect it could be useful in other ways. Differential Revision: https://phab.mercurial-scm.org/D8515
Sun, 24 Jan 2021 19:14:50 -0500 packaging: include `windows_curses` when building py2exe stable
Matt Harbison <matt_harbison@yahoo.com> [Sun, 24 Jan 2021 19:14:50 -0500] rev 46364
packaging: include `windows_curses` when building py2exe The `_curses.pyd` module was previously being included by py2exe's module search, but it left out `_curses_panel.pyd`. Differential Revision: https://phab.mercurial-scm.org/D9857
Sun, 24 Jan 2021 19:08:47 -0500 packaging: allow specifying modules to include with py2exe stable
Matt Harbison <matt_harbison@yahoo.com> [Sun, 24 Jan 2021 19:08:47 -0500] rev 46363
packaging: allow specifying modules to include with py2exe Maybe this was missing because there wasn't a need for it. Differential Revision: https://phab.mercurial-scm.org/D9856
Thu, 28 May 2020 17:31:41 -0400 rebase: add a config knob for forcing in-memory rebasing
Augie Fackler <augie@google.com> [Thu, 28 May 2020 17:31:41 -0400] rev 46362
rebase: add a config knob for forcing in-memory rebasing Use it in a test case where we know the rebase should proceed without incident in-memory, so we can see tracebacks rather than fallbacks. This makes it easier to try and debug when things are broken. Differential Revision: https://phab.mercurial-scm.org/D8623
Mon, 18 May 2020 17:29:53 -0400 cleanup: use mergestate.unresolvedcount() instead of bool(list(unresolved()))
Augie Fackler <augie@google.com> [Mon, 18 May 2020 17:29:53 -0400] rev 46361
cleanup: use mergestate.unresolvedcount() instead of bool(list(unresolved())) This avoids some pointless copying. Differential Revision: https://phab.mercurial-scm.org/D8566
Fri, 15 Jan 2021 01:20:47 +0100 reverse-branch-cache: switch to doubling allocating scheme
Joerg Sonnenberger <joerg@bec.de> [Fri, 15 Jan 2021 01:20:47 +0100] rev 46360
reverse-branch-cache: switch to doubling allocating scheme In preperation for updating the reverse-branch-cache incrementally whenever a new changeset comes in, avoid bad performance on resize with Python 3.7 (and likely other 3.x versions). Differential Revision: https://phab.mercurial-scm.org/D9778
Sun, 17 Jan 2021 23:21:33 +0100 discovery: add config options to control sample size
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 17 Jan 2021 23:21:33 +0100] rev 46359
discovery: add config options to control sample size This get useful for running analysis of the current algorithm. Differential Revision: https://phab.mercurial-scm.org/D9813
Tue, 19 Jan 2021 00:20:42 +0100 exchangev2: avoid second look-up by node
Joerg Sonnenberger <joerg@bec.de> [Tue, 19 Jan 2021 00:20:42 +0100] rev 46358
exchangev2: avoid second look-up by node Accessing the revlog by node is slightly more expensive than by revision, so look up the revision first and use it afterwards. Differential Revision: https://phab.mercurial-scm.org/D9831
Tue, 19 Jan 2021 00:18:39 +0100 commit: look-up new revision once
Joerg Sonnenberger <joerg@bec.de> [Tue, 19 Jan 2021 00:18:39 +0100] rev 46357
commit: look-up new revision once Look-up by node is slightly more expensive, so since it is necessary more than once, do it explicitly. Differential Revision: https://phab.mercurial-scm.org/D9830
Tue, 19 Jan 2021 14:00:42 -0800 resolve: also detect new :mergediff conflict markers
Martin von Zweigbergk <martinvonz@google.com> [Tue, 19 Jan 2021 14:00:42 -0800] rev 46356
resolve: also detect new :mergediff conflict markers The conflict markers created by `:mergediff` were not detected as conflicts, which affects both `commands.resolve.mark-check` and `mergetools.<tool>.check`. This patch fixes that. The new regex it uses for finding conflict markers is less restrictive because it `:mergediff` doesn't follow the `<<<<<<<` and `>>>>>>>` lines by a space (and a description). Hopefully lines like that don't give too many false positives. We can add back the space and make `:mergediff` add trailing spaces if it turns out to be a problem. OTOH, there will always be some false positives and we have ways of overriding the checks already. This patch can go onto the default or stable branch, depending on how much we care about an experimental feature. Differential Revision: https://phab.mercurial-scm.org/D9835
Mon, 18 Jan 2021 22:32:09 -0800 simplemerge: delete unused find_unconflicted()
Martin von Zweigbergk <martinvonz@google.com> [Mon, 18 Jan 2021 22:32:09 -0800] rev 46355
simplemerge: delete unused find_unconflicted() The function has been unused ever since it was introduced in 465b9ea02868 (Import 3-way merge code from bzr, 2007-04-16). Differential Revision: https://phab.mercurial-scm.org/D9832
Fri, 04 Dec 2020 10:11:01 +0100 perf: use the `perf--` prefix for perf command
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 04 Dec 2020 10:11:01 +0100] rev 46354
perf: use the `perf--` prefix for perf command This is the one command namespace where they should not be any ambiguity about command that should be in it. The perf extensions is only adding performance related command. so this is a good ground to start putting dash folding to the tests. Differential Revision: https://phab.mercurial-scm.org/D9516
Sun, 24 Jan 2021 18:24:11 -0800 contrib: update PyOxidizer to 0.10.3 stable
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 24 Jan 2021 18:24:11 -0800] rev 46353
contrib: update PyOxidizer to 0.10.3 This is necessary to work around a bug that caused build failures on current stable with 0.9.0. This patch was used to build the 5.7rc0 Windows installers. Differential Revision: https://phab.mercurial-scm.org/D9858
Fri, 08 Jan 2021 16:58:23 +0100 contrib: stop building rust for every job stable
Raphaël Gomès <rgomes@octobus.net> [Fri, 08 Jan 2021 16:58:23 +0100] rev 46352
contrib: stop building rust for every job This is just wasteful for all steps that do not use Rust. Differential Revision: https://phab.mercurial-scm.org/D9717
Thu, 21 Jan 2021 23:24:58 -0500 share-safe: fix an abort message that references the experimental requirement stable
Matt Harbison <matt_harbison@yahoo.com> [Thu, 21 Jan 2021 23:24:58 -0500] rev 46351
share-safe: fix an abort message that references the experimental requirement Differential Revision: https://phab.mercurial-scm.org/D9851
Thu, 21 Jan 2021 23:22:12 -0500 doc: fix a formatting error in requirements.txt stable
Matt Harbison <matt_harbison@yahoo.com> [Thu, 21 Jan 2021 23:22:12 -0500] rev 46350
doc: fix a formatting error in requirements.txt Differential Revision: https://phab.mercurial-scm.org/D9850
Thu, 21 Jan 2021 23:21:45 -0500 doc: drop the `exp-` prefix from the `share-safe` requirement stable
Matt Harbison <matt_harbison@yahoo.com> [Thu, 21 Jan 2021 23:21:45 -0500] rev 46349
doc: drop the `exp-` prefix from the `share-safe` requirement I can't tell if we should leave the experimental one around for historical documentation purposes, but I'm not sure if there's value to doing that. Differential Revision: https://phab.mercurial-scm.org/D9849
Wed, 20 Jan 2021 12:23:40 +0100 share-share: have the hint issue more consistently and point to the right doc stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 20 Jan 2021 12:23:40 +0100] rev 46348
share-share: have the hint issue more consistently and point to the right doc This should help user in trouble to find solution in the documentation. Differential Revision: https://phab.mercurial-scm.org/D9841
Wed, 20 Jan 2021 12:13:17 +0100 doc: point to the main share-safe doc in the "mismatch" config stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 20 Jan 2021 12:13:17 +0100] rev 46347
doc: point to the main share-safe doc in the "mismatch" config User should be able to find their way with that. Differential Revision: https://phab.mercurial-scm.org/D9840
Wed, 20 Jan 2021 12:12:31 +0100 doc: improves the share-safe documentation stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 20 Jan 2021 12:12:31 +0100] rev 46346
doc: improves the share-safe documentation The associated behavior is now clearer and we point to the other configuration that control the mismatching behavior. Differential Revision: https://phab.mercurial-scm.org/D9839
Wed, 20 Jan 2021 12:11:41 +0100 doc: remove the section about share-safe from its verbose gating stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 20 Jan 2021 12:11:41 +0100] rev 46345
doc: remove the section about share-safe from its verbose gating The feature is no longer experimental. Differential Revision: https://phab.mercurial-scm.org/D9838
Wed, 20 Jan 2021 12:08:10 +0100 doc: relocate doc for `share.safe-mismatch.source-safe.warn` stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 20 Jan 2021 12:08:10 +0100] rev 46344
doc: relocate doc for `share.safe-mismatch.source-safe.warn` The documentation for the option is now right after its parent configuration: `share.safe-mismatch.source-safe` Differential Revision: https://phab.mercurial-scm.org/D9837
Wed, 20 Jan 2021 00:40:41 -0500 tests: skip a detailed exit status in test-lfs-test-server stable
Matt Harbison <matt_harbison@yahoo.com> [Wed, 20 Jan 2021 00:40:41 -0500] rev 46343
tests: skip a detailed exit status in test-lfs-test-server The mode of failure here differs between `lfs-test-server` and `hg serve`, and they each throw a different exception. The `hg serve` case raises a subclass of `StorageError`, which gets a detailed status. The `lfs-test-server` case raises a subclass of `Abort`, which does not. Since the exit code isn't currently conditionizable in the tests, this is the simplest way to avoid the failure. Differential Revision: https://phab.mercurial-scm.org/D9836
Wed, 20 Jan 2021 14:57:56 +0100 tests: deal with more timing differences in output stable
Joerg Sonnenberger <joerg@bec.de> [Wed, 20 Jan 2021 14:57:56 +0100] rev 46342
tests: deal with more timing differences in output Differential Revision: https://phab.mercurial-scm.org/D9842
Tue, 19 Jan 2021 12:22:05 -0500 merge with stable
Augie Fackler <augie@google.com> [Tue, 19 Jan 2021 12:22:05 -0500] rev 46341
merge with stable
Tue, 19 Jan 2021 22:37:35 +0530 Added signature for changeset 9da65e3cf370 stable
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 19 Jan 2021 22:37:35 +0530] rev 46340
Added signature for changeset 9da65e3cf370
Tue, 19 Jan 2021 22:37:09 +0530 Added tag 5.7rc0 for changeset 9da65e3cf370 stable
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 19 Jan 2021 22:37:09 +0530] rev 46339
Added tag 5.7rc0 for changeset 9da65e3cf370
Tue, 19 Jan 2021 21:48:43 +0530 merge with stable stable 5.7rc0
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 19 Jan 2021 21:48:43 +0530] rev 46338
merge with stable
Mon, 18 Jan 2021 19:16:49 +0530 share: move share safe functionality out of experimental
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 18 Jan 2021 19:16:49 +0530] rev 46337
share: move share safe functionality out of experimental The share-safe functionality is complete and all configuration options are implemented. The behavior is well discussed on mailing list and in reviews. Let's unmark this as experimental to solve a chichen and egg issue. Differential Revision: https://phab.mercurial-scm.org/D9823
Fri, 15 Jan 2021 12:08:07 +0530 share: rename share-safe warning config
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 15 Jan 2021 12:08:07 +0530] rev 46336
share: rename share-safe warning config Config introduced in previous patch was `share.source-safe-mismatch`. Let's rename the warn as `share.source-safe-mismatch.warn`. While we are here, made sure we have different configs for upgrade and downgrade. Differential Revision: https://phab.mercurial-scm.org/D9786
Mon, 18 Jan 2021 21:37:20 +0530 share: rework config options to be much clearer and easier
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 18 Jan 2021 21:37:20 +0530] rev 46335
share: rework config options to be much clearer and easier Recently I implemented various boolean configs which control how to behave when there is a share-safe mismatch between source and share repository. Mismatch means that source supports share-safe where as share does not or vice versa. However, while discussion and documentation we realized that it's too complicated and there are some combinations of values which makes no sense. We decided to introduce a config option with 4 possible values which makes controlling and understanding things easier. The config option `share.safe-mismatch.source-{not-}safe` can have following 4 values: * abort (default): error out if there is mismatch * allow: allow to work with respecting share source configuration * {up|down}grade-abort: try to {up|down}grade, if it fails, abort * {up|down}grade-allow: try to {up|down}grade, if it fails, continue in allow mode I am not sure if I can explain 3 config options which I deleted right now in just 5 lines which is a sign of how complex they became. No test changes demonstrate that functionality is same, only names have changed. Differential Revision: https://phab.mercurial-scm.org/D9785
Mon, 18 Jan 2021 19:16:49 +0530 share: move share safe functionality out of experimental
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 18 Jan 2021 19:16:49 +0530] rev 46334
share: move share safe functionality out of experimental The share-safe functionality is complete and all configuration options are implemented. The behavior is well discussed on mailing list and in reviews. Let's unmark this as experimental to solve a chichen and egg issue. Differential Revision: https://phab.mercurial-scm.org/D9823
Fri, 15 Jan 2021 12:08:07 +0530 share: rename share-safe warning config
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 15 Jan 2021 12:08:07 +0530] rev 46333
share: rename share-safe warning config Config introduced in previous patch was `share.source-safe-mismatch`. Let's rename the warn as `share.source-safe-mismatch.warn`. While we are here, made sure we have different configs for upgrade and downgrade. Differential Revision: https://phab.mercurial-scm.org/D9786
Mon, 18 Jan 2021 21:37:20 +0530 share: rework config options to be much clearer and easier
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 18 Jan 2021 21:37:20 +0530] rev 46332
share: rework config options to be much clearer and easier Recently I implemented various boolean configs which control how to behave when there is a share-safe mismatch between source and share repository. Mismatch means that source supports share-safe where as share does not or vice versa. However, while discussion and documentation we realized that it's too complicated and there are some combinations of values which makes no sense. We decided to introduce a config option with 4 possible values which makes controlling and understanding things easier. The config option `share.safe-mismatch.source-{not-}safe` can have following 4 values: * abort (default): error out if there is mismatch * allow: allow to work with respecting share source configuration * {up|down}grade-abort: try to {up|down}grade, if it fails, abort * {up|down}grade-allow: try to {up|down}grade, if it fails, continue in allow mode I am not sure if I can explain 3 config options which I deleted right now in just 5 lines which is a sign of how complex they became. No test changes demonstrate that functionality is same, only names have changed. Differential Revision: https://phab.mercurial-scm.org/D9785
Thu, 14 Jan 2021 21:34:12 +0530 localrepo: disallow share if there is a version mismatch by default
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 14 Jan 2021 21:34:12 +0530] rev 46331
localrepo: disallow share if there is a version mismatch by default Earlier we used to allow shares which don't use share-safe mechanism to access repository which uses share-safe mechanism. This defeats the purpose and is bad behavior. This patch disallows that. Next patch will introduce a config option to allow that and have clearer understanding around various options. Differential Revision: https://phab.mercurial-scm.org/D9784
Mon, 18 Jan 2021 19:50:21 +0530 upgrade: re-read current requirements after taking lock
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 18 Jan 2021 19:50:21 +0530] rev 46330
upgrade: re-read current requirements after taking lock Since we are writing to repository, it's better to re-read after taking the lock. Differential Revision: https://phab.mercurial-scm.org/D9822
Thu, 14 Jan 2021 21:29:46 +0530 upgrade: take lock only for part where it's required
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 14 Jan 2021 21:29:46 +0530] rev 46329
upgrade: take lock only for part where it's required The final config calculation code does not require a lock, only writing it back does require one. Differential Revision: https://phab.mercurial-scm.org/D9783
Mon, 18 Jan 2021 19:19:47 +0100 clang-format: reorder includes to appease the formatter
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 18 Jan 2021 19:19:47 +0100] rev 46328
clang-format: reorder includes to appease the formatter The bad order was introduced in d0225a22040c. Differential Revision: https://phab.mercurial-scm.org/D9829
Mon, 18 Jan 2021 01:15:10 -0500 run-tests: catch a Windows specific error when testing for a free socket
Matt Harbison <matt_harbison@yahoo.com> [Mon, 18 Jan 2021 01:15:10 -0500] rev 46327
run-tests: catch a Windows specific error when testing for a free socket I'm not sure why this only happens with py3, but this error code doesn't map to any of the 3 currently being handled, and kills `run-tests.py` before it can run any tests when it happens: OSError: [WinError 10013] An attempt was made to access a socket in a way forbidden by its access permissions The documentation[1] says this can happen if another process is bound to the address with exclusive access. This seems to keep it happy. [1] https://docs.microsoft.com/en-us/windows/win32/winsock/windows-sockets-error-codes-2 Differential Revision: https://phab.mercurial-scm.org/D9816
Mon, 18 Jan 2021 00:50:01 -0500 run-tests: work around the Windows firewall popup for server processes
Matt Harbison <matt_harbison@yahoo.com> [Mon, 18 Jan 2021 00:50:01 -0500] rev 46326
run-tests: work around the Windows firewall popup for server processes Windows doesn't have a `python3` executable, so cc0b332ab9fc attempted to work around the issue by copying the current python to `python3.exe`. That put it in `_tmpbindir` because of failures in `test-run-tests.t` when using `_bindir`, which looked like a process was trying to open it to write out a copy while it was in use. (Interestingly, I couldn't reproduce this running the test by itself in a loop for a couple of hours, but it happens constantly when running all tests.) The problem with using `_tmpbindir` is that it is the randomly generated path for the test run, and instead of Windows Firewall remembering the executable signature or image hash when allowing the process to open a server port, it apparently remembers the image path. That means every run will trigger a popup to allow it, which is bad for firing off a test run and walking away. I tried to symlink to the python executable, but that currently requires admin priviledges[1]. This will prompt the first time if the underlying python binary has never opened a server port, but appears to avoid it on subsequent runs. [1] https://bugs.python.org/issue40687 Differential Revision: https://phab.mercurial-scm.org/D9815
Sun, 17 Jan 2021 22:25:15 -0500 hghave: split apart testing for the curses module and `tic` executable
Matt Harbison <matt_harbison@yahoo.com> [Sun, 17 Jan 2021 22:25:15 -0500] rev 46325
hghave: split apart testing for the curses module and `tic` executable ef771d329961 skipped the check for the `tic` executable, because the curses module alone on Windows is enough to pass the `test-*-curses.t` tests. However, `test-status-color.t` uses this same check and explicitly invoked the executable, which fails on Windows. From the cursory searching I did, curses on unix requires `tic`, which I assume is why they were tied together in the first place. So this continues to require both to get past the curses guards on non Windows platforms. Differential Revision: https://phab.mercurial-scm.org/D9814
Mon, 18 Jan 2021 13:59:54 +0100 sqlitestore: disable test with chg
Joerg Sonnenberger <joerg@bec.de> [Mon, 18 Jan 2021 13:59:54 +0100] rev 46324
sqlitestore: disable test with chg There are known issues with transactions not being closed in a timely fashion, making the test flakey. Differential Revision: https://phab.mercurial-scm.org/D9821
Fri, 15 Jan 2021 20:26:21 +0100 heptapod-ci: allow testing with docker image other than :latest
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 15 Jan 2021 20:26:21 +0100] rev 46323
heptapod-ci: allow testing with docker image other than :latest The project have a default config of latest for this variable. Differential Revision: https://phab.mercurial-scm.org/D9792
Sun, 17 Jan 2021 20:27:59 +0100 persistent-nodemap: also exchange the nodemap data over the wire
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 17 Jan 2021 20:27:59 +0100] rev 46322
persistent-nodemap: also exchange the nodemap data over the wire It appears that 2 bytes are never equals to 3 bytes. Differential Revision: https://phab.mercurial-scm.org/D9810
Sun, 17 Jan 2021 19:22:30 +0100 persistent-nodemap: catch the right exception on python
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 17 Jan 2021 19:22:30 +0100] rev 46321
persistent-nodemap: catch the right exception on python On Python 2, Missing file are IOError, not OSError, apparently. Differential Revision: https://phab.mercurial-scm.org/D9809
Sun, 17 Jan 2021 02:50:26 -0500 hghave: adjust the definition of `tic` to allow curses tests on Windows
Matt Harbison <matt_harbison@yahoo.com> [Sun, 17 Jan 2021 02:50:26 -0500] rev 46320
hghave: adjust the definition of `tic` to allow curses tests on Windows Might as well pick up the test coverage if it works as-is. Differential Revision: https://phab.mercurial-scm.org/D9808
Wed, 09 Dec 2020 00:51:35 -0500 windows: wrap `os.getcwd()` in `os.path.realpath()` on py3
Matt Harbison <matt_harbison@yahoo.com> [Wed, 09 Dec 2020 00:51:35 -0500] rev 46319
windows: wrap `os.getcwd()` in `os.path.realpath()` on py3 I noticed various `test-check-*` failures that were printing absolute paths when repo relative paths were expected. This was due to the drive letter in `repo.root` being uppercased as it is run through `os.path.realpath()`, and then the simple string comparison against the (lowercased) `_cwd` member of dirstate in `dirstate.getcwd()` causing an absolute path to be returned, instead of the expected `b''`. That in turn causes `scmutil.getuipathfn()` to wrongly use `repo.pathto()` with an absolute cwd path. . Differential Revision: https://phab.mercurial-scm.org/D9806
Tue, 01 Dec 2020 21:51:41 -0500 packaging: include `windows-curses` on Windows
Matt Harbison <matt_harbison@yahoo.com> [Tue, 01 Dec 2020 21:51:41 -0500] rev 46318
packaging: include `windows-curses` on Windows Otherwise the interface degrades to the old hunk selection method on Windows when `ui.tweakdefaults=1`. I've been using this for a couple of months without any issues, other than it seems to toggle off edit mode for the terminal when run through MSYS. Using cmd.exe seems to work fine. Differential Revision: https://phab.mercurial-scm.org/D9805
Sat, 16 Jan 2021 20:15:10 -0500 cext: fix compiler error in revlog.c on Windows with py2
Matt Harbison <matt_harbison@yahoo.com> [Sat, 16 Jan 2021 20:15:10 -0500] rev 46317
cext: fix compiler error in revlog.c on Windows with py2 Visual Studio 2008 doesn't have <stdint.h>, and we worked around it before with this header. Differential Revision: https://phab.mercurial-scm.org/D9804
Sat, 16 Jan 2021 01:02:03 +0100 discovery: add a devel.discovery.exchange-heads
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 16 Jan 2021 01:02:03 +0100] rev 46316
discovery: add a devel.discovery.exchange-heads Currently all discovery start with testing local and remote heads. For analysis purpose we make it possible to disable that initial "handshake" and start discovery with the whole repository as undecided. Differential Revision: https://phab.mercurial-scm.org/D9801
Sun, 17 Jan 2021 02:48:15 +0100 test-regression: backing out D9640 (63c923fd7fa8)
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 17 Jan 2021 02:48:15 +0100] rev 46315
test-regression: backing out D9640 (63c923fd7fa8) Since D9640 was pushed, we have seen failure on at least: - test-commit-interactive.t - test-i18n.t - test-log.t The author that change requested it to be removed until he can investigate. For reference: https://phab.mercurial-scm.org/D9640 Backed out changeset 63c923fd7fa8 Differential Revision: https://phab.mercurial-scm.org/D9803
Fri, 15 Jan 2021 12:41:38 +0100 clone: make sure we warm the cache after a clone
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 15 Jan 2021 12:41:38 +0100] rev 46314
clone: make sure we warm the cache after a clone This work around any deviciency/limitation of the clone process. In our case this ensure the persistent nodemap exist with valid content. Ideally, the cloning process would also do "the right thing". However since older server will never be able to do "the right thing". The local workaround will be necessary anyway. I am not worried by the performance impact of this as `hg clone` is non-instant on large repositories where is could matters. Warming the cache if they are already correct is very fast. And if they are not already warm, this seems like a good time to do so. This impact various test as more cache are now warmed sooner, all the change should be harmless. Differential Revision: https://phab.mercurial-scm.org/D9789
Thu, 14 Jan 2021 04:56:29 +0100 persistent-nodemap: remove the "experimental" tag to the feature
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 14 Jan 2021 04:56:29 +0100] rev 46313
persistent-nodemap: remove the "experimental" tag to the feature This has been around for a while and has all the discussed configuration options. Differential Revision: https://phab.mercurial-scm.org/D9764
Wed, 13 Jan 2021 23:50:03 +0100 persistent-nodemap: drop the storage.revlog.nodemap.mode config
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 13 Jan 2021 23:50:03 +0100] rev 46312
persistent-nodemap: drop the storage.revlog.nodemap.mode config We now have a new, better, higher level, option. So we can drop the older one as planned. Differential Revision: https://phab.mercurial-scm.org/D9763
Wed, 13 Jan 2021 23:41:37 +0100 persistent-nodemap: add a "abort" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 13 Jan 2021 23:41:37 +0100] rev 46311
persistent-nodemap: add a "abort" option to the slow-path config We make it the default, and document the behavior in the help for the main config option. Differential Revision: https://phab.mercurial-scm.org/D9762
Wed, 13 Jan 2021 23:07:41 +0100 persistent-nodemap: add a "warn" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 13 Jan 2021 23:07:41 +0100] rev 46310
persistent-nodemap: add a "warn" option to the slow-path config And make it the default until we get an abort option. Differential Revision: https://phab.mercurial-scm.org/D9761
Wed, 13 Jan 2021 18:33:48 +0100 persistent-node: check the value of the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 13 Jan 2021 18:33:48 +0100] rev 46309
persistent-node: check the value of the slow-path config We should probably provide some standard for this in config item, but this is a quest for another adventure. Differential Revision: https://phab.mercurial-scm.org/D9760
Thu, 14 Jan 2021 01:25:06 +0100 persistent-nodemap: add a revlog.storage.persistent-nodemap.slow-path option
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 14 Jan 2021 01:25:06 +0100] rev 46308
persistent-nodemap: add a revlog.storage.persistent-nodemap.slow-path option As discussed during the sprint, we want to prevent user to get an unexpected performance regression when accessing a repository using "persistent-nodemap" without the associated Rust extension. We start by adding a config declaration and some documentation. Since "allow" is the current behavior, we don't need to add any code. The option possible value will come later. Note that we already have a `storage.revlog.nodemap.mode` option, but that option is a bit different. It does some warning and checking at revlog instantiation time. While we want something done at requirements checking time. Since we plan for new names and new config value names, we introduce a new option and will drop the old one later. Differential Revision: https://phab.mercurial-scm.org/D9758
Thu, 14 Jan 2021 01:12:42 +0100 persistent-nodemap: document storage.revlog.persistent-nodemap.mmap=no
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 14 Jan 2021 01:12:42 +0100] rev 46307
persistent-nodemap: document storage.revlog.persistent-nodemap.mmap=no The feature is gaining public facing document, its options too. Differential Revision: https://phab.mercurial-scm.org/D9757
(0) -30000 -10000 -3000 -1000 -480 +480 +1000 +3000 tip