Sun, 10 Nov 2024 00:59:43 +0100 wheel: build Windows wheels too stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 10 Nov 2024 00:59:43 +0100] rev 52233
wheel: build Windows wheels too Again, cibuildwheels makes it very handy.
Sun, 10 Nov 2024 03:02:15 +0100 wheel: make --hg-wheel works on Windows stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 10 Nov 2024 03:02:15 +0100] rev 52232
wheel: make --hg-wheel works on Windows There was this old outdated conditional that can simply receive our new needs… Incredibly, this is all that seems to be needed.
Sun, 10 Nov 2024 00:59:21 +0100 wheel: assign CIBW_SKIP globally stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 10 Nov 2024 00:59:21 +0100] rev 52231
wheel: assign CIBW_SKIP globally The other cibuildwheels (e.g. windows) will needs it too.
Sun, 10 Nov 2024 22:30:02 +0100 windows: simply rely on the PATH adjustment to find python.exe in tests stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 10 Nov 2024 22:30:02 +0100] rev 52230
windows: simply rely on the PATH adjustment to find python.exe in tests The shell script under a `.exe` name confused Windows outside MSYS and give us the following error: […]/python.exe is not compatible with the version of Windows you're running. Check your computer's system information and then contact the software publisher. This is necessary to get the wheel variant of the test run to work properly.
Sun, 10 Nov 2024 02:39:27 +0100 ci: adjust port range on windows too stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 10 Nov 2024 02:39:27 +0100] rev 52229
ci: adjust port range on windows too This will help having concurrency on the windows runner too.
Mon, 11 Nov 2024 23:44:04 +0100 windows: skip test-clonebundles-autogen.t in the CI stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 11 Nov 2024 23:44:04 +0100] rev 52228
windows: skip test-clonebundles-autogen.t in the CI This test is hanging the CI, so lets ignore it for now.
Wed, 13 Nov 2024 00:53:18 +0100 ci: split the windows runtest invocation into more granular variables stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 13 Nov 2024 00:53:18 +0100] rev 52227
ci: split the windows runtest invocation into more granular variables This helps make things clearer and easier to adjust in sub jobs.
Sat, 09 Nov 2024 23:36:30 +0100 ci: again common element into a `.windows` template stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 09 Nov 2024 23:36:30 +0100] rev 52226
ci: again common element into a `.windows` template This factor some code out and will help with introducing a new job about wheels.
Sat, 09 Nov 2024 23:28:36 +0100 ci: use a concurrency safe TMP dir on Windows stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 09 Nov 2024 23:28:36 +0100] rev 52225
ci: use a concurrency safe TMP dir on Windows This should have been done in d6ed4da850ea.
Mon, 11 Nov 2024 16:42:20 +0100 windows: adjust PYTHONPATH update in test-status-color.t stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 11 Nov 2024 16:42:20 +0100] rev 52224
windows: adjust PYTHONPATH update in test-status-color.t On Windows the PATH separator is ";", not ":". The Windows wheel wants it set with ";".
Mon, 11 Nov 2024 16:41:16 +0100 windows: work around argument size limitation in test-bookmarks-pushpull.t stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 11 Nov 2024 16:41:16 +0100] rev 52223
windows: work around argument size limitation in test-bookmarks-pushpull.t Apparently, we need to got through MSYS for such a long argument to be accepted.
Mon, 11 Nov 2024 12:52:53 +0100 tests: drop PYTHONPATH manipulation in test-pushvars.t stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 11 Nov 2024 12:52:53 +0100] rev 52222
tests: drop PYTHONPATH manipulation in test-pushvars.t It does not seems to serve any purpose and confuses Windows.
Mon, 11 Nov 2024 05:42:44 +0100 run-tests: cleanup the "output" directory after the related tests stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 11 Nov 2024 05:42:44 +0100] rev 52221
run-tests: cleanup the "output" directory after the related tests The output confused the test discovery when left around. And it confuse the Linux and the Windows one a bit differently, so we better clean it up as it serve not purpose to keep it around.
Mon, 11 Nov 2024 11:13:34 +0100 run-tests: focus on listing the selected test for the shard tests stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 11 Nov 2024 11:13:34 +0100] rev 52220
run-tests: focus on listing the selected test for the shard tests We don't care about actually running the test, but we care about what is selected and the stability of it. So we focus on using `--list-tests` to easily compare any changes that might happens.
Sun, 10 Nov 2024 00:46:44 +0100 wheel: enforce that translation being build for macos wheel stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 10 Nov 2024 00:46:44 +0100] rev 52219
wheel: enforce that translation being build for macos wheel
Sat, 09 Nov 2024 00:59:59 +0100 dev-version: change the scheme of non tagged version stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 09 Nov 2024 00:59:59 +0100] rev 52218
dev-version: change the scheme of non tagged version We update the dev version scheme to make it more suitable for nightly build. See inline documentation for details.
Tue, 12 Nov 2024 12:52:13 +0100 rust-update: handle SIGINT from long-running update threads stable
Raphaël Gomès <rgomes@octobus.net> [Tue, 12 Nov 2024 12:52:13 +0100] rev 52217
rust-update: handle SIGINT from long-running update threads The current code does not respond to ^C until after the Rust bit is finished doing its work. This is expected, since Rust holds the GIL for the duration of the call and does not call `PyErr_CheckSignals`. Freeing the GIL to do our work does not really improve anything since the Rust threads are still going, and the only way of cancelling a thread is by making it cooperate. So we do the following: - remember the SIGINT handler in hg-cpython and reset it after the call into core (see inline comment in `update.rs` about this) - make all update threads watch for a global `AtomicBool` being `true`, and if so stop their work - reset the global bool and exit early (i.e. before writing the dirstate) - raise SIGINT from `hg-cpython` if update returns `InterruptReceived`
Fri, 08 Nov 2024 17:08:11 +0100 ci: shard the test run on mac os X stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 08 Nov 2024 17:08:11 +0100] rev 52216
ci: shard the test run on mac os X This should comes with some benefit: - spread the load across more runner, - reduce the real-time CI run, - reduce the "retry" run when we need them. We start with the Mac jobs, but that would be tremendously useful for Windows too. For linux, we need to reduce the startup overhead for this to be worth it. Building smaller image and speeding up clone should help with that.
Thu, 22 Sep 2022 01:02:06 +0200 run-tests: implement crude sharding support stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 22 Sep 2022 01:02:06 +0200] rev 52215
run-tests: implement crude sharding support It will help to spread the testing load across more CI runners.
Fri, 08 Nov 2024 21:41:02 +0100 ci: have the mac test run if you trigger building the mac wheel stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 08 Nov 2024 21:41:02 +0100] rev 52214
ci: have the mac test run if you trigger building the mac wheel The mac test job now depends on the wheel building. And the wheel building is manual. So if the mac test job is set to "on_success" if will be "skipped" by default, and automatically run if the wheel are build. That is especially handy as we are about to shard that test and that the UI for manual sharded test sucks.
Fri, 08 Nov 2024 21:22:02 +0100 ci: adjust the starting port range to runner concurrency stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 08 Nov 2024 21:22:02 +0100] rev 52213
ci: adjust the starting port range to runner concurrency If multiple job runs on the same runner, they should not use the port range.
Fri, 08 Nov 2024 17:28:33 +0100 ci: move the "tempory work dir" to "concurrency-safe" location stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 08 Nov 2024 17:28:33 +0100] rev 52212
ci: move the "tempory work dir" to "concurrency-safe" location Lets not use a global location and move at the root of the directory dedicated to the job.
Mon, 28 Oct 2024 03:29:29 +0100 ci: abstract the of absolute /tmp/ path stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 28 Oct 2024 03:29:29 +0100] rev 52211
ci: abstract the of absolute /tmp/ path We now have a TMP_WORK_DIR directory that we can update to a more sensible value in the next changesets.
Fri, 08 Nov 2024 14:56:54 +0100 ci: rationalize variable usage stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 08 Nov 2024 14:56:54 +0100] rev 52210
ci: rationalize variable usage The usage of "extends" allow to skip a lot of duplication. We also introduce more fine grained variables to help finer override.
Fri, 08 Nov 2024 14:44:56 +0100 ci: move some variables closer to their usage stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 08 Nov 2024 14:44:56 +0100] rev 52209
ci: move some variables closer to their usage These were defined globaly because we had trouble making them inherited. This is now fixed, so we can get them were they belong.
Fri, 08 Nov 2024 14:35:57 +0100 ci: use extends instead of <<: *x stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 08 Nov 2024 14:35:57 +0100] rev 52208
ci: use extends instead of <<: *x The old form is a yaml construct that make it hard to share variable definition. The "extends:" key is a gitlab specific that preserve the variable definition and just add the new ones. This will help us to reduce duplication. This has the effect of fixing some of variants definition we though we set while we did actually not. Most notably, the "rust" variant for 3.12 and 3.13 seems fully broken in the CI (possibly because some rust-cpython version issue?). This changeset only reveal such breackage and does not introduce them.
Thu, 07 Nov 2024 17:22:05 +0100 ci: use the macos wheel to run tests stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 07 Nov 2024 17:22:05 +0100] rev 52207
ci: use the macos wheel to run tests
Tue, 15 Oct 2024 05:17:37 +0200 wheel: build mac os wheel through the CI stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 15 Oct 2024 05:17:37 +0200] rev 52206
wheel: build mac os wheel through the CI Let's start building wheel for mac os X too.
Fri, 08 Nov 2024 12:53:40 +0100 pycompat: drop some now useless workaround for makedirs stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 08 Nov 2024 12:53:40 +0100] rev 52205
pycompat: drop some now useless workaround for makedirs This `exists_ok` flag was added in Python 3.2
Thu, 07 Nov 2024 23:13:32 +0100 run-tests: install wheel using --prefix instead of --user stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 07 Nov 2024 23:13:32 +0100] rev 52204
run-tests: install wheel using --prefix instead of --user --user does not work if a venv is enabled when calling run-tests.py
Fri, 08 Nov 2024 02:02:32 +0100 ci: automatically compute the python tag we use to identify tag stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 08 Nov 2024 02:02:32 +0100] rev 52203
ci: automatically compute the python tag we use to identify tag This make the determination more automatic and less error prone. In addition, this will make it possible to run on a runner without a pre-determined Python version, like what we do for the macos and windows workers.
Fri, 08 Nov 2024 02:50:34 +0100 pytype: add relative timestamp to the output if `ts` is available stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 08 Nov 2024 02:50:34 +0100] rev 52202
pytype: add relative timestamp to the output if `ts` is available This should help to identify the module that are the slower to analyze.
Wed, 06 Nov 2024 16:40:58 +0100 ci: build (and use) wheel for all supported version stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 06 Nov 2024 16:40:58 +0100] rev 52201
ci: build (and use) wheel for all supported version We test wheel building for all supported version and use them where applicable The usage is more verbose than I wish because .gitlab-ci is not that great.
Wed, 06 Nov 2024 16:39:45 +0100 ci: use a pre-setup many-linux image to build wheel stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 06 Nov 2024 16:39:45 +0100] rev 52200
ci: use a pre-setup many-linux image to build wheel This produce wheel that are more universal and identical to the one we want to publish.
Wed, 06 Nov 2024 16:38:57 +0100 ci: use smaller VM to build wheel stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 06 Nov 2024 16:38:57 +0100] rev 52199
ci: use smaller VM to build wheel There is no need for large machine for this job, Python will be mostly singled threaded anyway.
Wed, 06 Nov 2024 16:32:15 +0100 setup: add a way to force the setup to translate (or fail) stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 06 Nov 2024 16:32:15 +0100] rev 52198
setup: add a way to force the setup to translate (or fail) we add the `MERCURIAL_SETUP_FORCE_TRANSLATIONS` variable that is intended to make sure we don't stop building the translation silently.
Wed, 06 Nov 2024 16:37:10 +0100 ci: pre-adjust some identation stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 06 Nov 2024 16:37:10 +0100] rev 52197
ci: pre-adjust some identation We adjust a couple of job to consistently use double space identation. This will make the next changesets clearer.
Thu, 07 Nov 2024 11:02:35 +0100 test-install: glob instance of "python" in warning stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 07 Nov 2024 11:02:35 +0100] rev 52196
test-install: glob instance of "python" in warning If run with something else (e.g. python3.12) the message says "python3.12" so we just glob that away.
Thu, 07 Nov 2024 01:30:08 +0100 test-install: use the global hg for the install step stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 07 Nov 2024 01:30:08 +0100] rev 52195
test-install: use the global hg for the install step This prevent error in some cases.
Tue, 05 Nov 2024 12:02:38 -0500 tests: bump the wait timeouts in test-racy-mutations.t stable
Matt Harbison <matt_harbison@yahoo.com> [Tue, 05 Nov 2024 12:02:38 -0500] rev 52194
tests: bump the wait timeouts in test-racy-mutations.t This was done to try to figure out why there's output differences in the previous two commits- low timeouts have been a cause of a lot of problems on Windows. That doesn't seem to be the case here, but I'm leaving it in anyway to avoid sporadic failures.
Tue, 05 Nov 2024 11:50:29 -0500 tests: add a "missing" tests for manifest content in test-racy-mutations.t stable
Matt Harbison <matt_harbison@yahoo.com> [Tue, 05 Nov 2024 11:50:29 -0500] rev 52193
tests: add a "missing" tests for manifest content in test-racy-mutations.t Trying to figure out why the divergence in behavior on Windows. The first test shows everything is the same on all platforms; the second shows that the other #testcase also diverges. The difference might be that `00manifest.i` doesn't get updated (and copied over) after `pre-race` is created, but I've no idea why that would be either.
Tue, 05 Nov 2024 11:48:22 -0500 tests: conditionalize missing output in test-racy-mutations.t on Windows stable
Matt Harbison <matt_harbison@yahoo.com> [Tue, 05 Nov 2024 11:48:22 -0500] rev 52192
tests: conditionalize missing output in test-racy-mutations.t on Windows No idea why this is only missing on Windows. I verified that the line marked as missing directly above this for the changelog is, in fact, missing on both Windows and Linux. So there's probably work to do in this area on all platforms. It would be nice to figure out what is going on, but this appeases CI in the meantime.
Thu, 07 Nov 2024 10:36:12 -0500 tests: disable a section of `test-paths.t` that may hit a zeroconf bug stable
Matt Harbison <matt_harbison@yahoo.com> [Thu, 07 Nov 2024 10:36:12 -0500] rev 52191
tests: disable a section of `test-paths.t` that may hit a zeroconf bug This effectively re-disables the same test as cce9e7d2fb92, but unconditionally because it's not a pyoxidizer-specific problem. 74e16d8ca5f3 disabled the other related test for the same reason- this one was missed because it wasn't failing for the few runs when that was tested.
Tue, 05 Nov 2024 15:21:09 +0100 rust-update: make `update_from_null` respect `worker.numcpu` config option stable
Raphaël Gomès <rgomes@octobus.net> [Tue, 05 Nov 2024 15:21:09 +0100] rev 52190
rust-update: make `update_from_null` respect `worker.numcpu` config option This was overlooked in the original series. This is important for tests (because we run many at once), and for the occasional end user that wants to keep their CPU usage in check. A future series should clean up this `worker` parameter tunelling business by rewriting the config in Rust, but doing so on stable would be a very bad idea.
Tue, 05 Nov 2024 15:18:32 +0100 rust-cpython: add a TODO about repo reuse stable
Raphaël Gomès <rgomes@octobus.net> [Tue, 05 Nov 2024 15:18:32 +0100] rev 52189
rust-cpython: add a TODO about repo reuse This will need to be done soon-ish to prevent any surprises.
Mon, 04 Nov 2024 16:43:05 -0500 streamclone: disable the volatile file open handle optimization on Windows stable
Matt Harbison <matt_harbison@yahoo.com> [Mon, 04 Nov 2024 16:43:05 -0500] rev 52188
streamclone: disable the volatile file open handle optimization on Windows Leaving files open caused new failures like this, since a47f09da8bd1: diff --git a/tests/test-persistent-nodemap-stream-clone.t b/tests/test-persistent-nodemap-stream-clone.t --- a/tests/test-persistent-nodemap-stream-clone.t +++ b/tests/test-persistent-nodemap-stream-clone.t @@ -115,7 +115,12 @@ Do a mix of clone and commit at the same $ (hg clone -U --stream ssh://user@dummy/test-repo stream-clone-race-1 --debug 2>> clone-output | grep -E '00(changelog|manifest)' >> clone-output; touch $HG_TEST_STREAM_WALKED_FILE_3) & $ $RUNTESTDIR/testlib/wait-on-file 10 $HG_TEST_STREAM_WALKED_FILE_1 $ hg -R test-repo/ commit -m foo - created new head + transaction abort! + failed to recover 00changelog.n ([WinError 32] The process cannot access the file because it is being used by another process: b'$STR_REPR_TESTTMP\\test-repo/.hg/store/00changelog.n' -> b'$STR_REPR_TESTTMP\\test-repo/.hg/store/00changelog.n-f418dcd6') + rollback failed - please run hg recover + (failure reason: [WinError 32] The process cannot access the file because it is being used by another process: b'$STR_REPR_TESTTMP\\test-repo/.hg/store/00changelog.n' -> b'$STR_REPR_TESTTMP\\test-repo/.hg/store/00changelog.n-f418dcd6') + abort: The process cannot access the file because it is being used by another process: '$TESTTMP\test-repo\.hg\store\00changelog.n' + [255] $ touch $HG_TEST_STREAM_WALKED_FILE_2 $ $RUNTESTDIR/testlib/wait-on-file 10 $HG_TEST_STREAM_WALKED_FILE_3 $ cat clone-output Since the `VolatileManager` falls back to the old copy method when the open file threshold is exceeded, this just drops the threshold so that only 1 file is open. The actual value used (2) is unexpected, and explained inline. I'd like to have a config option for this so that we can test both ways (in theory, it could resort to copies on non-Windows systems too), but I don't see a `uimod.ui` handy. Alternately, I tried replacing the 3 `open()` calls in the `VolatileManager` with `util.posixfile()`, but that simply hung the test on Windows for some reason, I think on the same line that's indicated as failing above. (There was a `grep` command hanging around, as well as `hg -R test-repo serve --stdio`.)
Mon, 04 Nov 2024 17:42:30 -0500 tests: treat `select` as a built-in module on Windows stable
Matt Harbison <matt_harbison@yahoo.com> [Mon, 04 Nov 2024 17:42:30 -0500] rev 52187
tests: treat `select` as a built-in module on Windows This fixes: --- C:/Users/Matt/hg/tests/test-check-module-imports.t +++ C:/Users/Matt/hg/tests/test-check-module-imports.t.err @@ -43,3 +43,15 @@ > -X tests/test-verify-repo-operations.py \ > -X tests/test-extension.t \ > | sed 's-\\-/-g' | "$PYTHON" "$import_checker" - + hgext/zeroconf/Zeroconf.py:86: stdlib import "socket" follows local import: select\r (esc) + hgext/zeroconf/Zeroconf.py:87: stdlib import "struct" follows local import: select\r (esc) + hgext/zeroconf/Zeroconf.py:88: stdlib import "threading" follows local import: select\r (esc) + hgext/zeroconf/Zeroconf.py:89: stdlib import "time" follows local import: select\r (esc) + hgext/zeroconf/Zeroconf.py:90: stdlib import "traceback" follows local import: select\r (esc) + mercurial/posix.py:18: stdlib import "stat" follows local import: select\r (esc) + mercurial/posix.py:19: stdlib import "sys" follows local import: select\r (esc) + mercurial/posix.py:20: stdlib import "tempfile" follows local import: select\r (esc) + mercurial/posix.py:21: stdlib import "typing" follows local import: select\r (esc) + tests/tinyproxy.py:19: stdlib import "socket" follows local import: select\r (esc) + tests/tinyproxy.py:20: stdlib import "sys" follows local import: select\r (esc) + [1] ERROR: test-check-module-imports.t output changed
Mon, 21 Oct 2024 12:58:40 +0200 rust-vfs: add docstrings to all VFS methods on the trait
Raphaël Gomès <rgomes@octobus.net> [Mon, 21 Oct 2024 12:58:40 +0200] rev 52186
rust-vfs: add docstrings to all VFS methods on the trait
Thu, 10 Oct 2024 15:54:45 +0200 rust-vfs: support checkambig
Raphaël Gomès <rgomes@octobus.net> [Thu, 10 Oct 2024 15:54:45 +0200] rev 52185
rust-vfs: support checkambig This was missing from the Rust code, which means worse caching. See https://wiki.mercurial-scm.org/ExactCacheValidationPlan. Explanations on what ambiguity means inline.
Tue, 08 Oct 2024 16:10:30 +0200 rust-vfs: add tests to `AtomicFile`
Raphaël Gomès <rgomes@octobus.net> [Tue, 08 Oct 2024 16:10:30 +0200] rev 52184
rust-vfs: add tests to `AtomicFile` This also makes it more usable from Rust by separating `from_file` and `new`.
Tue, 08 Oct 2024 16:09:39 +0200 rust-vfs: delete the temp file and not the target on drop
Raphaël Gomès <rgomes@octobus.net> [Tue, 08 Oct 2024 16:09:39 +0200] rev 52183
rust-vfs: delete the temp file and not the target on drop Oops. This never affected anything since `close()` is correct and no code has dropped an `AtomicFile` without a close first yet. Next patch will add tests.
Thu, 26 Sep 2024 14:26:24 +0200 rust: don't star export from the `revlog` module
Raphaël Gomès <rgomes@octobus.net> [Thu, 26 Sep 2024 14:26:24 +0200] rev 52182
rust: don't star export from the `revlog` module This made a lot of the imports confusing because they didn't make sense at the top level (so, outside of `revlog`), and they hide the more common types when autocompleting.
Thu, 01 Aug 2024 11:27:20 +0200 rust: populate mmaps in a separate thread if possible
Raphaël Gomès <rgomes@octobus.net> [Thu, 01 Aug 2024 11:27:20 +0200] rev 52181
rust: populate mmaps in a separate thread if possible Same rationale as b619ba39d10a.
Wed, 31 Jul 2024 15:41:08 +0200 rust-revlog: build an in-memory nodemap if a given revlog gets queried a lot
Raphaël Gomès <rgomes@octobus.net> [Wed, 31 Jul 2024 15:41:08 +0200] rev 52180
rust-revlog: build an in-memory nodemap if a given revlog gets queried a lot This will help with non-persistent nodemap repos that would benefit from one, and mirrors what the C implementation does.
Wed, 31 Jul 2024 15:11:27 +0200 rust-revlog: generalize an error message
Raphaël Gomès <rgomes@octobus.net> [Wed, 31 Jul 2024 15:11:27 +0200] rev 52179
rust-revlog: generalize an error message This is used for more than the nodemap data.
Wed, 31 Jul 2024 13:35:54 +0200 rust-revlog: don't create an in-memory nodemap for filelogs from Python
Raphaël Gomès <rgomes@octobus.net> [Wed, 31 Jul 2024 13:35:54 +0200] rev 52178
rust-revlog: don't create an in-memory nodemap for filelogs from Python Explanations inline. Benchmarks from this change affect positively the only repo that showed this being a problem: ``` ### data-env-vars.name = mozilla-try-2024-03-26-ds2-pnm # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip default: 62.848869 ~~~~~ before-this-patch: 58.113051 (-7.54%, -4.74) this-patch: 57.407533 (-8.66%, -5.44) ### data-env-vars.name = mozilla-try-2024-03-26-ds2-pnm # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 10 # benchmark.variants.patch = yes # benchmark.variants.rev = none default: 3.173532 ~~~~~ before-this-patch: 3.543591 (+11.66%, +0.37) this-patch: 3.297235 (+3.90%, +0.12) ```
Wed, 31 Jul 2024 15:02:55 +0200 rust-revlog: move non-persistent-nodemap rev lookup to the index
Raphaël Gomès <rgomes@octobus.net> [Wed, 31 Jul 2024 15:02:55 +0200] rev 52177
rust-revlog: move non-persistent-nodemap rev lookup to the index It only uses index features and does not need to be on the revlog. A later patch will make use of this function from a different context.
Mon, 29 Jul 2024 20:39:34 +0200 revlog: add glue to use a pure-Rust VFS
Raphaël Gomès <rgomes@octobus.net> [Mon, 29 Jul 2024 20:39:34 +0200] rev 52176
revlog: add glue to use a pure-Rust VFS This will save us a lot of calling back into Python, which is always horribly expensive. We are now faster in all benchmarked cases except for `log --patch` specifically on mozilla-try. Fixing this will happen in a later patch. ``` ### data-env-vars.name = mercurial-devel-2024-03-22-ds2-pnm # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip e679697a6ca4: 1.760765 ~~~~~ 5559d7e63ec3: 1.555513 (-11.66%, -0.21) ### data-env-vars.name = mozilla-try-2024-03-26-ds2-pnm # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip e679697a6ca4: 62.848869 ~~~~~ 5559d7e63ec3: 58.113051 (-7.54%, -4.74) ### data-env-vars.name = mozilla-try-2024-03-26-ds2-pnm # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 10 # benchmark.variants.patch = yes # benchmark.variants.rev = none e679697a6ca4: 3.173532 ~~~~~ 5559d7e63ec3: 3.543591 (+11.66%, +0.37) ### data-env-vars.name = mozilla-try-2024-03-26-ds2-pnm # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none e679697a6ca4: 1.214698 ~~~~~ 5559d7e63ec3: 1.192478 (-1.83%, -0.02) ### data-env-vars.name = mozilla-unified-2024-03-22-ds2-pnm # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip e679697a6ca4: 56.205474 ~~~~~ 5559d7e63ec3: 51.520074 (-8.34%, -4.69) ### data-env-vars.name = mozilla-unified-2024-03-22-ds2-pnm # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 10 # benchmark.variants.patch = yes # benchmark.variants.rev = none e679697a6ca4: 2.105419 ~~~~~ 5559d7e63ec3: 2.051849 (-2.54%, -0.05) ### data-env-vars.name = mozilla-unified-2024-03-22-ds2-pnm # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none e679697a6ca4: 0.309960 ~~~~~ 5559d7e63ec3: 0.299035 (-3.52%, -0.01) ### data-env-vars.name = tryton-public-2024-03-22-ds2-pnm # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip e679697a6ca4: 1.849832 ~~~~~ 5559d7e63ec3: 1.805076 (-2.42%, -0.04) ### data-env-vars.name = tryton-public-2024-03-22-ds2-pnm # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 10 # benchmark.variants.patch = yes # benchmark.variants.rev = none e679697a6ca4: 0.289521 ~~~~~ 5559d7e63ec3: 0.279889 (-3.33%, -0.01) ### data-env-vars.name = tryton-public-2024-03-22-ds2-pnm # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none e679697a6ca4: 0.332270 ~~~~~ 5559d7e63ec3: 0.323324 (-2.69%, -0.01) ```
Mon, 29 Jul 2024 20:35:44 +0200 fncache: add attribute to check whether we're using dotencode
Raphaël Gomès <rgomes@octobus.net> [Mon, 29 Jul 2024 20:35:44 +0200] rev 52175
fncache: add attribute to check whether we're using dotencode This will make it easy to know if we can use the Rust implementation that doesn't support older forms of encoding.
Mon, 29 Jul 2024 20:34:38 +0200 fncachestore: add typing information
Raphaël Gomès <rgomes@octobus.net> [Mon, 29 Jul 2024 20:34:38 +0200] rev 52174
fncachestore: add typing information This helps with autocomplete.
Mon, 29 Jul 2024 20:34:06 +0200 fncache: refactor load check into a property
Raphaël Gomès <rgomes@octobus.net> [Mon, 29 Jul 2024 20:34:06 +0200] rev 52173
fncache: refactor load check into a property This makes the intent more obvious new callers less prone to error.
Mon, 29 Jul 2024 20:49:07 +0200 hg-core: add FnCacheVFS
Raphaël Gomès <rgomes@octobus.net> [Mon, 29 Jul 2024 20:49:07 +0200] rev 52172
hg-core: add FnCacheVFS This will allow us to only call back into Python to add items to the fncache, which should save us a lot of FFI overhead. This is also of course a stepping stone for more pure Rust work.
Mon, 29 Jul 2024 20:47:43 +0200 hg-core: add a complete VFS
Raphaël Gomès <rgomes@octobus.net> [Mon, 29 Jul 2024 20:47:43 +0200] rev 52171
hg-core: add a complete VFS This will be used from Python in a later change. More changes are needed in hg-core and rhg to properly clean up the APIs of the old VFS implementation but it can be done when the dust settles and we start adding more functionality to the pure Rust VFS.
Mon, 29 Jul 2024 20:28:42 +0200 hg-core: add fncache module
Raphaël Gomès <rgomes@octobus.net> [Mon, 29 Jul 2024 20:28:42 +0200] rev 52170
hg-core: add fncache module For now it's only a super simple trait. It will be used for calling back into Python soon, and later will be fleshed out into a full fncache.
Thu, 26 Sep 2024 13:55:26 +0200 rust: populate mmap by default if available
Raphaël Gomès <rgomes@octobus.net> [Thu, 26 Sep 2024 13:55:26 +0200] rev 52169
rust: populate mmap by default if available See 522b4d729e89edc76544fa549ed36de4aea0b7fb for more details. Background population to follow in a later patch.
Wed, 19 Jun 2024 18:20:22 +0200 rust-changelog: switch away from deprecated APIs for datetime use
Raphaël Gomès <rgomes@octobus.net> [Wed, 19 Jun 2024 18:20:22 +0200] rev 52168
rust-changelog: switch away from deprecated APIs for datetime use This was caught by clippy, nothing was changed aside from some light API changes.
Wed, 19 Jun 2024 19:10:49 +0200 revlog: add the glue to use the Rust `InnerRevlog` from Python
Raphaël Gomès <rgomes@octobus.net> [Wed, 19 Jun 2024 19:10:49 +0200] rev 52167
revlog: add the glue to use the Rust `InnerRevlog` from Python The performance of this has been looked at for quite some time, and some workflows are actually quite a bit faster than with the Python + C code. However, we are still (up to 20%) slower in some crucial places like cloning certain repos, log, cat, which makes this an incomplete rewrite. This is mostly due to the high amount of overhead in Python <-> Rust FFI, especially around the VFS code. A future patch series will rewrite the VFS code in pure Rust, which should hopefully get us up to par with current perfomance, if not better in all important cases. This is a "save state" of sorts, as this is a ton of code, and I don't want to pile up even more things in a single review. Continuing to try to match the current performance will take an extremely long time, if it's not impossible, without the aforementioned VFS work.
Wed, 19 Jun 2024 17:03:13 +0200 changelog: also set the general delta config flag in the data config
Raphaël Gomès <rgomes@octobus.net> [Wed, 19 Jun 2024 17:03:13 +0200] rev 52166
changelog: also set the general delta config flag in the data config This duplication is dubious, but it's a decision to be made at a later date, this is the fix.
Mon, 29 Jul 2024 15:03:52 +0200 rust-index: use `IndexEntry::offset` to compute read segments
Raphaël Gomès <rgomes@octobus.net> [Mon, 29 Jul 2024 15:03:52 +0200] rev 52165
rust-index: use `IndexEntry::offset` to compute read segments This only matters for inline revlogs where the impact is debatable, but this is what the C index does.
Thu, 10 Oct 2024 10:34:51 +0200 rust-revlog: add a Rust-only `InnerRevlog`
Raphaël Gomès <rgomes@octobus.net> [Thu, 10 Oct 2024 10:34:51 +0200] rev 52164
rust-revlog: add a Rust-only `InnerRevlog` This mirrors the Python `InnerRevlog` and will be used in a future patch to replace said Python implementation. This allows us to start doing more things in pure Rust, in particular reading and writing operations. A lot of changes have to be introduced all at once, it wouldn't be very useful to separate this patch IMO since all of them are either interlocked or only useful with the rest.
Thu, 10 Oct 2024 10:38:35 +0200 rust-index: fix the computation of data start
Raphaël Gomès <rgomes@octobus.net> [Thu, 10 Oct 2024 10:38:35 +0200] rev 52163
rust-index: fix the computation of data start This was falling into place instead of being correct, we clean up the logic by differenciating the on-disk offset and the actual start of the data more cleanly.
Thu, 10 Oct 2024 10:38:10 +0200 rust-index: return an error on a bad index header
Raphaël Gomès <rgomes@octobus.net> [Thu, 10 Oct 2024 10:38:10 +0200] rev 52162
rust-index: return an error on a bad index header This is more idiomatic and allows us to better handle the problem later.
Thu, 17 Oct 2024 15:22:38 +0200 rust-vfs: add a TODO to remember a decision taken about naming
Raphaël Gomès <rgomes@octobus.net> [Thu, 17 Oct 2024 15:22:38 +0200] rev 52161
rust-vfs: add a TODO to remember a decision taken about naming Explanations inline.
Wed, 25 Sep 2024 18:24:15 +0200 rust-revlog: introduce an `options` module
Raphaël Gomès <rgomes@octobus.net> [Wed, 25 Sep 2024 18:24:15 +0200] rev 52160
rust-revlog: introduce an `options` module This helps group all the relevant revlog options code and makes the `mod.rs` more readable.
Wed, 25 Sep 2024 18:10:03 +0200 rust-revlog: add file IO helpers
Raphaël Gomès <rgomes@octobus.net> [Wed, 25 Sep 2024 18:10:03 +0200] rev 52159
rust-revlog: add file IO helpers This will be useful for the upcoming `InnerRevlog`.
Wed, 25 Sep 2024 16:42:21 +0200 rust-revlog: add compression helpers
Raphaël Gomès <rgomes@octobus.net> [Wed, 25 Sep 2024 16:42:21 +0200] rev 52158
rust-revlog: add compression helpers This will be used in the upcoming `InnerRevlog` when reading/writing data.
Thu, 31 Oct 2024 17:24:18 -0400 hgweb: skip logging ConnectionAbortedError stable
Matt Harbison <matt_harbison@yahoo.com> [Thu, 31 Oct 2024 17:24:18 -0400] rev 52157
hgweb: skip logging ConnectionAbortedError Not stacktracing on `ConnectionResetError` was added in 6bbb12cba5a8 (though it was spelled differently for py2 support), but for some reason Windows occasionally triggers a `ConnectionAbortedError` here across various *.t files (notably `test-archive.t` and `test-lfs-serve-access.t`, but there are others). The payload that fails to send seems to be the html that describes the error to the client, so I suspect some code is seeing the error status code and closing the connection before the server gets to write this html. So don't log it, for test stability- nothing we can do anyway. FWIW, the CPython implementation of wsgihander specifically ignores these two errors, plus `BrokenPipeError`, with a comment that "we expect the client to close the connection abruptly from time to time"[1]. The `BrokenPipeError` is swallowed a level up in `do_write()`, and avoids writing the response following this stacktrace. I'm puzzled why a response is being written after these connection errors are detected- the CPython code referenced doesn't, and the connection is now broken at this point. Perhaps these errors should both be handled with the `BrokenPipeError` after the freeze. (The refactoring away from py2 compat may not be desireable in the freeze, but this is much easier to read, and obviously correct given the referenced CPython code.) I suspect this is what 6bceecb28806 was attempting to fix, but it wasn't specific about the sporadic errors it was seeing. [1] https://github.com/python/cpython/blob/b2eaa75b176e07730215d76d8dce4d63fb493391/Lib/wsgiref/handlers.py#L139
Fri, 25 Oct 2024 17:15:53 -0400 ci: add a runner for Windows 10 stable
Matt Harbison <matt_harbison@yahoo.com> [Fri, 25 Oct 2024 17:15:53 -0400] rev 52156
ci: add a runner for Windows 10 This is currently only manually invoked, and allows for failure because we only have a single runner that takes over 2h for a full run, and there are a handful of flakey tests, plus 3 known failing tests. The system being used here is running MSYS, Python, Visual Studio, etc, as installed by `install-windows-dependencies.ps1`. This script installs everything to a specific directory instead of using the defaults, so we adjust the MinGW shell path to compensate. Additionally, the script doesn't install the launcher `py.exe`. It is possible to adjust the script to install it, but it's an option to an existing python install (instead of a standalone installer), and I've had the whole python install fail and rollback when requested to install the launcher if it detects a newer one is already installed. In short, it is a point of failure for a feature we don't (yet?) need. Unlike other systems where the intepreter name includes the version, everything here is `python.exe`, so they can't all exist on `PATH` and let the script choose the desired one. (The `py.exe` launcher would accomplish, using the registry instead of `PATH`, but that wouldn't allow for venv installs.) Because of this, switch to the absolute path of the python interpreter to be used (in this case a venv created from the py39 install, which is old, but what both pyoxidizer and TortoiseHg currently use). The `RUNTEST_ARGS` hardcodes `-j8` because this system has 4 cores, and therefore runs 4 parallel tests by default. However on Windows, using more parallel tests than cores results in better performance for whatever reason. I don't have an optimal value yet (ideally the runner itself can make the adjustment on Windows), but this results in saving ~15m on a full run that otherwise takes ~2.5h. I'm also not concerned about how it would affect other Windows machines, because we don't have any at this point, and I have no idea when we can get more. As far as system setup goes, the CI is run by a dedicated user that lacks admin rights. The install script was run by an admin user, and then the standard user was configured to use it. If I set this up again, I'd probably give the dedicated user admin rights to run the install script, and reset to standard user rights when done. The python intepreter failed in weird ways when run by the standard user until it was manually reinstalled by the standard user: Fatal Python error: init_fs_encoding: failed to get the Python codec of the filesystem encoding Additionally, changing the environment through the Windows UI prompts to escalate to an admin user, and then setting the user level environment variables like `TEMP` and `PATH` (to try to avoid exceeding the 260 character path limit) didn't actually change the user's environment. (Likely it changed the admin user's environment, but I didn't confirm that.) I ended up having to use the registry editor for the standard user to make those changes.
Fri, 11 Oct 2024 15:04:13 -0400 tests: disable a section of `test-hgrc.t` that may hit a zeroconf bug stable
Matt Harbison <matt_harbison@yahoo.com> [Fri, 11 Oct 2024 15:04:13 -0400] rev 52155
tests: disable a section of `test-hgrc.t` that may hit a zeroconf bug This effectively re-disables the same test as cce9e7d2fb92, but unconditionally because it's not a pyoxidizer-specific problem (see below and 997c9b2069d1). I can run the test locally fine, with the same venv as CI is using, and have had multiple CI runs that don't hit this. But one failed with this: --- /private/tmp/mercurial-ci/tests/test-hgrc.t +++ /private/tmp/mercurial-ci/tests/test-hgrc.t.err @@ -305,5 +305,17 @@ [255] $ HGRCSKIPREPO=1 hg paths --config extensions.zeroconf= + Traceback (most recent call last): + File "/private/tmp/hgtests.7idf706t/install/lib/python/hgext/zeroconf/Zeroconf.py", line 966, in run + self.readers[sock].handle_read() + File "/private/tmp/hgtests.7idf706t/install/lib/python/hgext/zeroconf/Zeroconf.py", line 1020, in handle_read + msg = DNSIncoming(data) + File "/private/tmp/hgtests.7idf706t/install/lib/python/hgext/zeroconf/Zeroconf.py", line 537, in __init__ + self.readOthers() + File "/private/tmp/hgtests.7idf706t/install/lib/python/hgext/zeroconf/Zeroconf.py", line 650, in readOthers + self.readCharacterString(), + File "/private/tmp/hgtests.7idf706t/install/lib/python/hgext/zeroconf/Zeroconf.py", line 584, in readCharacterString + length = ord(self.data[self.offset]) + TypeError: ord() expected string of length 1, but int found foo = $TESTTMP/bar The zeroconf extension has bytes vs str problems that are obvious from inspection alone, and nobody has complained, so I'm not going to let this block getting CI for macOS up and running. Given that it's in the packet read code, I suspect that this 1) requires something on the network to speak mDNS, and 2) it is a timing issue if this is seen or not. (The bytes vs str issue itself is real, but only happen if a response is received quickly.)
Fri, 11 Oct 2024 11:03:21 -0400 tests: disable `test-git-interop.t` with a requirements directive stable
Matt Harbison <matt_harbison@yahoo.com> [Fri, 11 Oct 2024 11:03:21 -0400] rev 52154
tests: disable `test-git-interop.t` with a requirements directive Note that the failures in this test affect all platforms. I don't like this, but the test has been broken for awhile because of dirstate API changes, and nobody noticed because the required `pygit2` package isn't installed on the CI systems. I did install it on the mac CI system, which triggers this failure. Disabling it is no worse than not running it due to the missing package, but at least this way the CI systems can get the package installed, and the test can be enabled and fixed eventually, without needing to alter the CI systems. The feature here is kind of abused. I thought about adding one specifically to test for CI, but didn't feel like doing it at this point. Maybe if we need to disable things to get the Windows CI off the ground (but that likely requires testing for CI + platform).
Fri, 01 Nov 2024 16:22:40 -0400 tests: stabilize `test-extdiff.t` on macOS stable
Matt Harbison <matt_harbison@yahoo.com> [Fri, 01 Nov 2024 16:22:40 -0400] rev 52153
tests: stabilize `test-extdiff.t` on macOS The recent change in the extdiff extension to take into account whether the GUI is accessible in d1b54c152673 started triggering this. I was able to run the test cleanly without this change at the console, but somewhere along the line, I read that the CI runner isn't able to access the GUI when not run as the root user. This is causing CI failures, so we conditionalize these tests out where `DISPLAY` is set to a non empty value to force `procutil.isgui()` to be True, when it in fact doesn't have GUI access.
Tue, 29 Oct 2024 09:38:48 +0100 branching: merge stable into default
Raphaël Gomès <rgomes@octobus.net> [Tue, 29 Oct 2024 09:38:48 +0100] rev 52152
branching: merge stable into default
Sun, 27 Oct 2024 23:34:50 +0100 ci: build a wheel and use it to run c tests stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 27 Oct 2024 23:34:50 +0100] rev 52151
ci: build a wheel and use it to run c tests First step into building and testing wheel automatically.
Sun, 27 Oct 2024 14:10:45 +0100 ci: split the jobs on more stage stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 27 Oct 2024 14:10:45 +0100] rev 52150
ci: split the jobs on more stage We start to have a lot of job, grouping them help to clarifying the pipeline. We don't actually create dependency between each stage, so everything still run concurrently. However we are about to introduce some wheel-building job that will be reused by some tests. So some dependencies are coming.
Sun, 27 Oct 2024 14:08:57 +0100 ci: unify the way `check-pytype` inherit the common setting stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 27 Oct 2024 14:08:57 +0100] rev 52149
ci: unify the way `check-pytype` inherit the common setting All the other job use this syntax, so lets us it there too.
Sun, 27 Oct 2024 08:54:48 +0100 run-tests: add a --hg-wheel options to test a pre-built wheel stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 27 Oct 2024 08:54:48 +0100] rev 52148
run-tests: add a --hg-wheel options to test a pre-built wheel This will be useful to test the wheel we intend to publish. A future changeset will integrate this in the CI.
Sun, 27 Oct 2024 08:54:43 +0100 run-tests: don't use shell call for subprocess stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 27 Oct 2024 08:54:43 +0100] rev 52147
run-tests: don't use shell call for subprocess This part of the test runner seems to comes for some ages ago.
Mon, 28 Oct 2024 16:31:49 +0100 branching: merge stable into default
Raphaël Gomès <rgomes@octobus.net> [Mon, 28 Oct 2024 16:31:49 +0100] rev 52146
branching: merge stable into default
Mon, 28 Oct 2024 16:26:04 +0100 Added signature for changeset dc97e8670dec stable
Raphaël Gomès <rgomes@octobus.net> [Mon, 28 Oct 2024 16:26:04 +0100] rev 52145
Added signature for changeset dc97e8670dec
Mon, 28 Oct 2024 16:26:03 +0100 Added tag 6.9rc0 for changeset dc97e8670dec stable
Raphaël Gomès <rgomes@octobus.net> [Mon, 28 Oct 2024 16:26:03 +0100] rev 52144
Added tag 6.9rc0 for changeset dc97e8670dec
Mon, 28 Oct 2024 16:25:23 +0100 doc: register the `config-doc` rst directive stable 6.9rc0
Raphaël Gomès <rgomes@octobus.net> [Mon, 28 Oct 2024 16:25:23 +0100] rev 52143
doc: register the `config-doc` rst directive This was making the build fail because the directive was unknown.
Mon, 28 Oct 2024 15:50:20 +0100 relnotes: add 6.9rc0 stable
Raphaël Gomès <rgomes@octobus.net> [Mon, 28 Oct 2024 15:50:20 +0100] rev 52142
relnotes: add 6.9rc0
Mon, 28 Oct 2024 12:35:22 +0100 branching: merge default into stable stable
Raphaël Gomès <rgomes@octobus.net> [Mon, 28 Oct 2024 12:35:22 +0100] rev 52141
branching: merge default into stable We will be releasing 6.9rc0 soon.
Mon, 28 Oct 2024 11:45:02 +0100 branching: merge stable into default
Raphaël Gomès <rgomes@octobus.net> [Mon, 28 Oct 2024 11:45:02 +0100] rev 52140
branching: merge stable into default
Mon, 28 Oct 2024 11:40:49 +0100 Added signature for changeset eae3ec345e5e stable
Raphaël Gomès <rgomes@octobus.net> [Mon, 28 Oct 2024 11:40:49 +0100] rev 52139
Added signature for changeset eae3ec345e5e
Mon, 28 Oct 2024 11:40:25 +0100 Added tag 6.8.2 for changeset eae3ec345e5e stable
Raphaël Gomès <rgomes@octobus.net> [Mon, 28 Oct 2024 11:40:25 +0100] rev 52138
Added tag 6.8.2 for changeset eae3ec345e5e
Mon, 28 Oct 2024 11:39:03 +0100 relnotes: add 6.8.2 stable 6.8.2
Raphaël Gomès <rgomes@octobus.net> [Mon, 28 Oct 2024 11:39:03 +0100] rev 52137
relnotes: add 6.8.2
Fri, 25 Oct 2024 17:33:47 +0200 evolution: stop wrongly flagging unrelated part of a split as divergent stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 25 Oct 2024 17:33:47 +0200] rev 52136
evolution: stop wrongly flagging unrelated part of a split as divergent Before this change, divergence introduced by successors of a split would "spill" to other unrelated successors of the split that were not ambiguous. This small changes fixes it. Thanks goes to Manuel Jacobs for the discussion leading to this realization that a new simple and correct definition could be found.
Sun, 27 Oct 2024 17:29:18 -0400 tests: skip doctests that use `time.tzset()` on Windows
Matt Harbison <matt_harbison@yahoo.com> [Sun, 27 Oct 2024 17:29:18 -0400] rev 52135
tests: skip doctests that use `time.tzset()` on Windows There's no way to conditionally skip the tests for a function (see the inline feature request). That leaves us with the choice to either put the whole `mercurial.utils.dateutil` module in the skip list of this script (but then this script prints out the module as unexpectedly not tested, and misses a bunch of tests that can be run), blacklist the test entirely (but that makes it harder to work with on Windows), or use this hack to look for the statement that is broken, and skip the test currently attached to one function. (It appears that an example in the list of examples corresponds to a single `>>>` block, and the `test` itself corresponds to a single function. So prescan the examples, and skip all of them when the statement is found in any, since the setup of setting the timezone has an effect on subsequent examples.)
Mon, 07 Oct 2024 12:08:48 +0100 tests: hopefully fix `test-doctest.py` on Windows and more
Arseniy Alekseyev <aalekseyev@janestreet.com> [Mon, 07 Oct 2024 12:08:48 +0100] rev 52134
tests: hopefully fix `test-doctest.py` on Windows and more 1. Shell syntax understood by `shell=True` depends on the platform. Instead, pass `shell=False` and call `sh` explicitly to interpret the command correctly. 2. Stop setting `HGRCPATH=/dev/null`, so the setting `experimental.evolution=createmarkers` is set correctly. The reason I set HGRCPATH to /dev/null previously is because of misunderstanding where I thought the Python script had no HGRC to edit. As it turns out, there is in fact a valid temporary HGRC pointed to by HGRCPATH in this context so we don't seem to need this. /shrug
Sat, 26 Oct 2024 13:56:46 -0400 hghave: make the description for "clang-format" ascii
Matt Harbison <matt_harbison@yahoo.com> [Sat, 26 Oct 2024 13:56:46 -0400] rev 52133
hghave: make the description for "clang-format" ascii test-fix-clang-format.t suddenly started failing on Windows by wiping the whole file content, and replacing with an error: $TESTTMP.sh: $TESTTMP.sh: cannot execute binary file Odd, because I don't have `clang-format` installed, so the test should be skipped. The problem started with 73cf8b56c2f5, and I noticed that running `hghave` manually resulted in a `SyntaxError` (so I can't see how this isn't broken everywhere, but maybe it's because I'm using py3.9 on Windows): $ py hghave --list Traceback (most recent call last): File "hghave", line 8, in <module> import hghave File "c:\Users\Matt\hg\tests\hghave.py", line 627 SyntaxError: Non-ASCII character '\xe2' in file c:\Users\Matt\hg\tests\hghave.py on line 627, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
Sat, 26 Oct 2024 23:33:19 +0200 branching: merge stable into default
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 26 Oct 2024 23:33:19 +0200] rev 52132
branching: merge stable into default Hopefully this will bring the last changes necessary to make the 3.13 tests green (on Linux).
Fri, 25 Oct 2024 23:46:20 -0400 tests: enable pytype checking on `mercurial/wireprotov1peer.py`
Matt Harbison <matt_harbison@yahoo.com> [Fri, 25 Oct 2024 23:46:20 -0400] rev 52131
tests: enable pytype checking on `mercurial/wireprotov1peer.py`
Fri, 25 Oct 2024 23:45:05 -0400 typing: suppress bogus pytype errors in `mercurial/wireprotov1peer.py`
Matt Harbison <matt_harbison@yahoo.com> [Fri, 25 Oct 2024 23:45:05 -0400] rev 52130
typing: suppress bogus pytype errors in `mercurial/wireprotov1peer.py` Fixes: File "/mnt/c/Users/Matt/hg/mercurial/wireprotov1peer.py", line 100, in result: No attribute '_peerexecutor' on unsentfuture [attribute-error] File "/mnt/c/Users/Matt/hg/mercurial/wireprotov1peer.py", line 278, in close: No attribute 'shutdown' on None [attribute-error] Called from (traceback): line 123, in __exit__ File "/mnt/c/Users/Matt/hg/mercurial/wireprotov1peer.py", line 278, in close: No attribute 'shutdown' on None [attribute-error] In Optional[concurrent.futures.thread.ThreadPoolExecutor] We drop the zope decorator on `peerexecutor`, because otherwise it triggers this error: File "/tmp/mercurial-ci/mercurial/wireprotov1peer.py", line 111, in <module>: Invalid type annotation [invalid-annotation] Must be constant Not sure why, because the decorated classes usually get typed as `Any`, which would also be fine here.
Fri, 25 Oct 2024 23:09:10 -0400 tests: enable pytype checking on `mercurial/wireprotoframing.py`
Matt Harbison <matt_harbison@yahoo.com> [Fri, 25 Oct 2024 23:09:10 -0400] rev 52129
tests: enable pytype checking on `mercurial/wireprotoframing.py`
Fri, 25 Oct 2024 23:07:34 -0400 typing: suppress bogus pytype errors in `mercurial/wireprotoframing.py`
Matt Harbison <matt_harbison@yahoo.com> [Fri, 25 Oct 2024 23:07:34 -0400] rev 52128
typing: suppress bogus pytype errors in `mercurial/wireprotoframing.py` This fixes: File "/mnt/c/Users/Matt/hg/mercurial/wireprotoframing.py", line 480, in createalternatelocationresponseframe: unsupported operand type(s) for item assignment: bytes [unsupported-operands] No attribute '__setitem__' on bytes File "/mnt/c/Users/Matt/hg/mercurial/wireprotoframing.py", line 510, in createcommanderrorresponse: unsupported operand type(s) for item assignment: bytes [unsupported-operands] No attribute '__setitem__' on bytes File "/mnt/c/Users/Matt/hg/mercurial/wireprotoframing.py", line 776, in __init__: Can't find module 'mercurial.zstd'. [import-error] File "/mnt/c/Users/Matt/hg/mercurial/wireprotoframing.py", line 804, in __init__: Can't find module 'mercurial.zstd'. [import-error] File "/mnt/c/Users/Matt/hg/mercurial/wireprotoframing.py", line 834, in populatestreamencoders: Can't find module 'mercurial.zstd'. [import-error] Using `TypedDict` is tempting here to fix the first two, but requires str keys. The code doing the importing doesn't call the code at the other three locations if the `mercurial.zstd` module fails to import in a place that handles the ImportError.
Thu, 24 Oct 2024 22:47:31 -0400 wireprototypes: make `baseprotocolhandler` methods abstract
Matt Harbison <matt_harbison@yahoo.com> [Thu, 24 Oct 2024 22:47:31 -0400] rev 52127
wireprototypes: make `baseprotocolhandler` methods abstract The documentation says it's an abstract base class, so let's enforce it. The `typing.Protocol` class is already an ABC, but it only prevents instantiation if there are abstract attrs that are missing. For example, from `hg debugshell`: >>> from mercurial import wireprototypes >>> x = wireprototypes.baseprotocolhandler() Traceback (most recent call last): File "<console>", line 1, in <module> TypeError: Can't instantiate abstract class baseprotocolhandler with abstract method name >>> class fake(wireprototypes.baseprotocolhandler): ... pass ... >>> x = fake() Traceback (most recent call last): File "<console>", line 1, in <module> TypeError: Can't instantiate abstract class fake with abstract method name That's great, but it doesn't protect against calling non-abstract methods at runtime, rather it depends on the protocol type hint being added to method signatures or class attrs, and then running a type checker to notice when an instance is assigned that doesn't conform to the protocol. We don't widely use type hints yet, and do have a lot of class hierarchy in the repository area, which could lead to surprises like this: >>> class fake(wireprototypes.baseprotocolhandler): ... @property ... def name(self) -> bytes: ... return b'name' ... >>> z = fake() >>> z.client() >>> print(z.client()) None Oops. That was supposed to return `bytes`. So not only is a bad/unexpected value returned, but it's one that violates the type hints (since the base client() method will be annotated to return bytes). With this change, we get: >>> from mercurial import wireprototypes >>> class fake(wireprototypes.baseprotocolhandler): ... @property ... def name(self) -> bytes: ... return b'name' ... >>> x = fake() Traceback (most recent call last): File "<console>", line 1, in <module> TypeError: Can't instantiate abstract class fake with abstract methods addcapabilities, checkperm, client, getargs, getpayload, getprotocaps, mayberedirectstdio So this looks like a reasonable safety harness to me, and lets us catch problems by running the standard tests while the type hints are being added, and pytype is improved. We should probably do this for all Protocol class methods that don't supply a method implementation.
Thu, 24 Oct 2024 22:37:45 -0400 wireprototypes: convert `baseprotocolhandler.name` to an abstract property
Matt Harbison <matt_harbison@yahoo.com> [Thu, 24 Oct 2024 22:37:45 -0400] rev 52126
wireprototypes: convert `baseprotocolhandler.name` to an abstract property PyCharm was flagging the subclasses where this was declared as a `@property` with Type of 'name' is incompatible with 'baseprotocolhandler' But pytype didn't complain. This seems more correct, however. Since `Protocol` is already an `abc.ABCMeta` class, we don't need to mess with the class hierarchy.
Thu, 24 Oct 2024 20:50:47 -0400 wireprotoserver: subclass the new `baseprotocolhandler` Protocol class
Matt Harbison <matt_harbison@yahoo.com> [Thu, 24 Oct 2024 20:50:47 -0400] rev 52125
wireprotoserver: subclass the new `baseprotocolhandler` Protocol class
Thu, 24 Oct 2024 20:47:12 -0400 wireprototypes: convert `baseprotocolhandler` to a Protocol class
Matt Harbison <matt_harbison@yahoo.com> [Thu, 24 Oct 2024 20:47:12 -0400] rev 52124
wireprototypes: convert `baseprotocolhandler` to a Protocol class The methodology for doing this is now known, and this is limited to two implementing classes, so just make the changes.
Sat, 26 Oct 2024 12:56:02 +0200 test: stabilize `test-audit-path.t` in rust (hopefully)
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 26 Oct 2024 12:56:02 +0200] rev 52123
test: stabilize `test-audit-path.t` in rust (hopefully) We have been seeing flakiness on the file reported for a bit.
Sat, 26 Oct 2024 05:09:55 +0200 pycompat: drop test involving assigning "foo" to `sys.hexversion` stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 26 Oct 2024 05:09:55 +0200] rev 52122
pycompat: drop test involving assigning "foo" to `sys.hexversion` Starting with python 3.13, `sys.hexversion` refuse to be assigned non-hex value like "foo". I don't think I can blame it. It is time to drop that part of the tests.
Sat, 26 Oct 2024 05:11:58 +0200 pycompat: filter more of the traceback in `test-flagproccessor.t` stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 26 Oct 2024 05:11:58 +0200] rev 52121
pycompat: filter more of the traceback in `test-flagproccessor.t` The traceback changes again with 3.13. So we filter it to only keeps the bits we care about. This is actually only reusing the approach from a few line below.
Fri, 25 Oct 2024 00:46:22 +0200 pycompat: ignore the fork + thread warning for now stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 25 Oct 2024 00:46:22 +0200] rev 52120
pycompat: ignore the fork + thread warning for now No known issues has been reported and this is breaking the CI quite hard. So for now we have to delay the issue.
Thu, 24 Oct 2024 22:55:45 -0400 wireprototypes: fix exception handling code with a bad pytype suppression stable
Matt Harbison <matt_harbison@yahoo.com> [Thu, 24 Oct 2024 22:55:45 -0400] rev 52119
wireprototypes: fix exception handling code with a bad pytype suppression This goes back to f5fcf7123a92, and I suspect it was a misread of the error message is describes- the LHS of `.sorted()` is always bytes, and bytes didn't have this method in py2 either. The invalid names were already handled like this a few lines above. PyCharm flagged this, and it stood out after converting the zope interfaces to Protocol classes (which hasn't been published yet).
Fri, 18 Oct 2024 14:14:24 -0400 tests: conditionalize undesired output on Windows for rbc the mmap cases
Matt Harbison <matt_harbison@yahoo.com> [Fri, 18 Oct 2024 14:14:24 -0400] rev 52118
tests: conditionalize undesired output on Windows for rbc the mmap cases I don't want to lose sight of this issue, and it's useful to be able to turn on mmap support to hack on the underlying problem. As noted in the previous commit, I think the current usage of `mmap` and `memoryview` needs to be reworked for correctness on posix anyway.
Fri, 18 Oct 2024 13:21:23 -0400 rev-branch-cache: disable mmapping by default on Windows
Matt Harbison <matt_harbison@yahoo.com> [Fri, 18 Oct 2024 13:21:23 -0400] rev 52117
rev-branch-cache: disable mmapping by default on Windows See the inline comment for why. The commands work, other than leaving extra files laying around. Perhaps there's some way to get this to work like on posix with some `CreateFile` magic (though it already uses `FILE_SHARE_DELETE`, so I'm not sure offhand what else we can do). However big picture- it seems wrong that the old file is left mmapped, a new one moved into place, and the mapping left over the old file instead of retargeted to the new file. That's got to be a bug on posix too, in a long running process like chg, right? If the memory is read again for some reason, it will be stale data.
Fri, 18 Oct 2024 13:45:13 -0400 tests: actually test the non-mmap case in `test-branches.t`
Matt Harbison <matt_harbison@yahoo.com> [Fri, 18 Oct 2024 13:45:13 -0400] rev 52116
tests: actually test the non-mmap case in `test-branches.t` It looks like 40943970b7ae renamed the config, but also flipped it to 'on' by default, and the test file didn't keep up. I noticed because all 4 test cases failed on Windows due to a mmap problem, and there only should have been 2.
Thu, 17 Oct 2024 15:34:45 -0400 tests: dump the http server log after a clone in `test-static-http.t`
Matt Harbison <matt_harbison@yahoo.com> [Thu, 17 Oct 2024 15:34:45 -0400] rev 52115
tests: dump the http server log after a clone in `test-static-http.t` The 404 message lines don't match `$LOGDATE$`, because that tests for a pattern from the first "-" through a "(GET|PUT|POST)", so glob the timestamp away manually.
Thu, 17 Oct 2024 15:21:20 -0400 tests: force `dumbhttp.py` to write its log file with '\n' on Windows
Matt Harbison <matt_harbison@yahoo.com> [Thu, 17 Oct 2024 15:21:20 -0400] rev 52114
tests: force `dumbhttp.py` to write its log file with '\n' on Windows This wasn't causing obvious test failures, but it's the same fix as dbd2d56224d1 for `dummysmtpd.py`, and there's no sense in leaving this problem lying around. (And upon further review, it might have been causing some non-obviously related failures- see the next commit.)
Sat, 26 Oct 2024 04:16:00 +0200 branching: merge stable into default
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 26 Oct 2024 04:16:00 +0200] rev 52113
branching: merge stable into default
Thu, 11 Jan 2024 20:37:34 +0100 rust: address 'error: unnecessarily eager cloning of iterator items' stable
Mads Kiilerich <mads@kiilerich.com> [Thu, 11 Jan 2024 20:37:34 +0100] rev 52112
rust: address 'error: unnecessarily eager cloning of iterator items' Build failed with a reference to https://rust-lang.github.io/rust-clippy/master/index.html#iter_overeager_cloned which seems reasonable. There doesn't seem to be any reason to not follow the advice.
Mon, 22 Jul 2024 18:20:03 +0200 utils: fix resourceutil use of deprecated importlib.resources stable
Mads Kiilerich <mads@kiilerich.com> [Mon, 22 Jul 2024 18:20:03 +0200] rev 52111
utils: fix resourceutil use of deprecated importlib.resources Some importlib functionality was deprecated in 3.11 . The documentation on https://docs.python.org/3.12/library/importlib.resources.html recommends using the new .files() API that was introduced in 3.9.
Tue, 27 Jun 2023 13:05:03 +0200 utils: avoid using internal _imp.is_frozen() stable
Mads Kiilerich <mads@kiilerich.com> [Tue, 27 Jun 2023 13:05:03 +0200] rev 52110
utils: avoid using internal _imp.is_frozen() imp has been deprecated for a long time, and were removed in Python 3.12 . As a workaround, we started using the internal _imp. That is ugly and risky. It seems less risky to get the functionality in some other way. Here, we just inspect if 'origin' of the '__main__' module is set and 'frozen'. That seems to work and do the same, and might be better than using the internal _imp directly. This way of inspecting module attributes seems to work in some test cases, but it is a risky change. This level of importlib doesn't have much documentation, a complicated implementation, and we are dealing with some odd use cases.
Thu, 11 Jan 2024 20:32:07 +0100 cext: use sys.executable instead of deprecated Py_GetProgramFullPath stable
Mads Kiilerich <mads@kiilerich.com> [Thu, 11 Jan 2024 20:32:07 +0100] rev 52109
cext: use sys.executable instead of deprecated Py_GetProgramFullPath Fix warning with Python 3.13: mercurial/cext/parsers.c: In function 'check_python_version': mercurial/cext/parsers.c:1243:30: warning: 'Py_GetProgramFullPath' is deprecated [-Wdeprecated-declarations] 1243 | Py_GetProgramFullPath()); | ^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/python3.13/Python.h:119, from mercurial/cext/parsers.c:11: /usr/include/python3.13/pylifecycle.h:43:43: note: declared here 43 | Py_DEPRECATED(3.13) PyAPI_FUNC(wchar_t *) Py_GetProgramFullPath(void); | ^~~~~~~~~~~~~~~~~~~~~ At this point in time, the PyConfig struct memory has been released and the PyConfig API can't be used. https://docs.python.org/3.13/c-api/init.html#c.Py_GetProgramFullPath recommands using sys.executable instead. Let's assume that will work in all versions. It would perhaps be better to use PySys_GetObject, but I prefer to stay consistent with how the same function is retrieving sys.hexversion.
Thu, 11 Jan 2024 21:58:55 +0100 subrepoutil: pass re.sub 'count' argument by name stable
Mads Kiilerich <mads@kiilerich.com> [Thu, 11 Jan 2024 21:58:55 +0100] rev 52108
subrepoutil: pass re.sub 'count' argument by name Python 3.13 started warning: DeprecationWarning: 'count' is passed as positional argument
Thu, 11 Jan 2024 21:58:55 +0100 tests: pass re.MULTILINE to re.sub as 'flags' - not in 'count' position stable
Mads Kiilerich <mads@kiilerich.com> [Thu, 11 Jan 2024 21:58:55 +0100] rev 52107
tests: pass re.MULTILINE to re.sub as 'flags' - not in 'count' position This bug was caught by the new Python 3.13 warning: DeprecationWarning: 'count' is passed as positional argument
Thu, 29 Jun 2023 20:02:27 +0200 tests: use packaging from setuptools instead of deprecated distutils stable
Mads Kiilerich <mads@kiilerich.com> [Thu, 29 Jun 2023 20:02:27 +0200] rev 52106
tests: use packaging from setuptools instead of deprecated distutils When invoking StrictVersion in 3.12 we got: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead. distutils is dead in the standard library, and we have to move towards using `setuptools` as general extern dependency. Instead of also requiring the extern `packaging`, we will just use the packaging that is vendored in setuptools.
Mon, 26 Jun 2023 15:16:51 +0200 tests: drop test-demandimport.py distutils test that failed with warnings stable
Mads Kiilerich <mads@kiilerich.com> [Mon, 26 Jun 2023 15:16:51 +0200] rev 52105
tests: drop test-demandimport.py distutils test that failed with warnings The test would fail because warnings: /usr/lib/python3.11/site-packages/_distutils_hack/__init__.py:18: UserWarning: Distutils was imported before Setuptools, but importing Setuptools also replaces the `distutils` module in `sys.modules`. This may lead to undesirable behaviors or errors. To avoid these issues, avoid using distutils directly, ensure that setuptools is installed in the traditional way (e.g. not an editable install), and/or make sure that setuptools is always imported before distutils. warnings.warn( /usr/lib/python3.11/site-packages/_distutils_hack/__init__.py:33: UserWarning: Setuptools is replacing distutils. warnings.warn("Setuptools is replacing distutils.") The test for distutils.msvc9compiler comes from 2205d00b6d2b. But since then, distutils is going away, and this test must change somehow. It is unclear exactly how setuptools depended on msvc9compiler, but setuptools also moved forward, and this exact test no longer seems relevant. It thus seems like a fair solution to remove the test while keeping the demandimport blacklist of distutils.msvc9compiler.
Thu, 29 Jun 2023 20:02:27 +0200 utils: test coverage of makedate stable
Mads Kiilerich <mads@kiilerich.com> [Thu, 29 Jun 2023 20:02:27 +0200] rev 52104
utils: test coverage of makedate Explore the scenario from ae04af1ce78d to avoid future regressions. This was intended to give some coverage of the change in faccec1edc2c.
Sat, 26 Oct 2024 02:04:31 +0200 filecache: use bytes wherever possible in the tests
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 26 Oct 2024 02:04:31 +0200] rev 52103
filecache: use bytes wherever possible in the tests This is closer than the actual usage, so I figured in would not hurt.
Sat, 26 Oct 2024 01:38:20 +0200 cachestat: avoid creating cachestat for http path
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 26 Oct 2024 01:38:20 +0200] rev 52102
cachestat: avoid creating cachestat for http path The statichttprepo repo attemp to create cachestat for content we access through http. We modify the couple of place create cachestat object to detect this situation and avoids it. This is not marvelous, but there is few of them and the freeze is looming. This helps on Windows where calling cachestat on http path might create issues.
Sat, 26 Oct 2024 02:03:54 +0200 filecache: use binary path in the test
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 26 Oct 2024 02:03:54 +0200] rev 52101
filecache: use binary path in the test This was overlooked when converting string. This is needed as we are about to introduce bytes specific code in the filecache code path.
Sat, 26 Oct 2024 00:58:01 +0200 branching: merge stable into default
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 26 Oct 2024 00:58:01 +0200] rev 52100
branching: merge stable into default
Thu, 24 Oct 2024 15:23:52 +0200 py-3-13: stabilize the docstring output across all supported Python versions
Raphaël Gomès <rgomes@octobus.net> [Thu, 24 Oct 2024 15:23:52 +0200] rev 52099
py-3-13: stabilize the docstring output across all supported Python versions Python 3.13 now trims indents from docstrings at compilation time (to save space in .pyc), so all of our helptext is affected. The indentation has never served a user-facing purpose and was more here because nobody cared enough to remove it: we gain some screen space this way. Rather than undo the transformation (which isn't really possible since the transform also deletes leading/trailing whitespace), we align the behavior of older Python versions with that of 3.13. Unfortunately, this means breaking some of the translations. I've only touched the ones that need to work for some tooling tests to pass, but I do not have the time to fix the rest of them across all languages, since they cannot be done in an automated way. i18n updates have been basically abandonned for a good while now, hopefully someone cares enough to bring them back.
Fri, 25 Oct 2024 23:54:24 +0200 docstring: backed out changeset 51057ab0dffa stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 25 Oct 2024 23:54:24 +0200] rev 52098
docstring: backed out changeset 51057ab0dffa In retrospect this is too much of a behavior change for stable. So I grafted the same change as 31076a2301f1 on default, and I am backing out its version on stable.
Tue, 15 Oct 2024 22:30:10 -0400 tests: stabilize `test-clonebundles-autogen.t` on Windows
Matt Harbison <matt_harbison@yahoo.com> [Tue, 15 Oct 2024 22:30:10 -0400] rev 52097
tests: stabilize `test-clonebundles-autogen.t` on Windows The problem was that the commands are spun up with `shell=True`, which uses `cmd.exe`, which doesn't understand `$foo` style variables. The HGCB variable expansion has to be delayed, because it's figured out right before launching the command. We could probably add a conditional for Windows, and rewrite the config to use `%foo%` style variables, but it's more maintainable to just wrap the command in a bash shell invocation. The forward style slashes in the path are needed to avoid accruing double backslashes (when switching between shells- the url template seems fine). Also need to strong quote the command so that the double quotes don't get stripped off of `$HGCB_BUNDLE_PATH`, which results in: sh: 1: Syntax error: Unterminated quoted string abort: command returned status 2: sh -c "cp $HGCB_BUNDLE_PATH $TESTTMP/final-upload/"
Tue, 15 Oct 2024 22:19:30 -0400 clonebundles: stop shell quoting `HGCB_BUNDLE_BASENAME` environment variable
Matt Harbison <matt_harbison@yahoo.com> [Tue, 15 Oct 2024 22:19:30 -0400] rev 52096
clonebundles: stop shell quoting `HGCB_BUNDLE_BASENAME` environment variable This causes problems in `test-clonebundles-autogen.t` on Windows, because the quoted path ends up being passed to the `cp` command, which fails, because quote characters are not a legal part of a file name. I don't see any quoting in environment variables on either MSYS or WSL, even with weird ones that appear to have escape sequences like `PS1=\[\033]0;$MSYSTEM:\w\007` (in MSYS). The quoting was added back in 5ae30ff79c76, and as shown here, was causing problems even on posix when a quote was slipped into the path. (The other obvious problem is that the command is spun up shell style, which invokes `cmd.exe`, which doesn't know about `$foo` style variables. That will be addressed next, but that change didn't work without this too.)
Mon, 21 Oct 2024 15:24:55 -0400 tests: add coverage to for `HGCB_BUNDLE_BASENAME` with special characters
Matt Harbison <matt_harbison@yahoo.com> [Mon, 21 Oct 2024 15:24:55 -0400] rev 52095
tests: add coverage to for `HGCB_BUNDLE_BASENAME` with special characters Per request on IRC, to show the behavior of dropping the quoting of `HGCB_BUNDLE_BASENAME` in the next commit. This current failure is basically the same error and output that currently happens on Windows with any path (even without the embedded quote). The only difference is Windows doesn't print the `cp: cannot stat ...` line.
Tue, 15 Oct 2024 18:58:47 -0400 tests: stabilize `test-eol-update.t` on Windows
Matt Harbison <matt_harbison@yahoo.com> [Tue, 15 Oct 2024 18:58:47 -0400] rev 52094
tests: stabilize `test-eol-update.t` on Windows Perhaps it's better if this doesn't happen, but there are a bunch of tests that spew this, and we already have a conditional match for this in the block prior to the comment right above this section. So accept it as a possibility, and reduce the noise in the Windows tests.
Tue, 15 Oct 2024 18:35:45 -0400 tests: force `dummysmtpd.py` to write its log file with '\n' on Windows
Matt Harbison <matt_harbison@yahoo.com> [Tue, 15 Oct 2024 18:35:45 -0400] rev 52093
tests: force `dummysmtpd.py` to write its log file with '\n' on Windows The log files were being `cat'd` in `test-patchbomb-tls.t`, and causing gratuitous failures. Since `sys.stdout` is being written to with `str` instead of `bytes`, use a `io.TextIOWrapper` to change the EOL, like 2924676d4728.
Mon, 14 Oct 2024 20:11:27 -0400 tests: raise the default value for the various `devel.sync.*-timeout` configs
Matt Harbison <matt_harbison@yahoo.com> [Mon, 14 Oct 2024 20:11:27 -0400] rev 52092
tests: raise the default value for the various `devel.sync.*-timeout` configs These are used in `mercurial.testing.wait_file()` to stall for a file to appear in the filesystem, and raise an error if the file doesn't show up before the timeout expires. The default of 2s was way too low on Windows, especially when running tests in parallel, and resulted in various timeouts in `test-dirstate-read-race.t`, `test-dirstate-status-write-race.t`, and `test-clone-stream-revlog-split.t`. The various `wait-on-file` invocations in the tests are inconsistent, and wait anywhere from 5s - 20s. I'm using 20s here because if everything is working, the timeout won't matter. Also with the default timeout being raised on Windows in f4c038081561, both `HGTEST_TIMEOUT_DEFAULT` and `HGTEST_TIMEOUT` are 1440 in the default case where the timeout is not specified on the command line of the test runner, so the timing factor that is multipled with the value is 1, resulting in no changes. (But if someone specified a lower value on the command line, that would *lower* the timeout period used.)
Tue, 22 Oct 2024 15:59:01 +0200 tests: remove deprecated test-check-py3-compat.t
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 22 Oct 2024 15:59:01 +0200] rev 52091
tests: remove deprecated test-check-py3-compat.t If our current source files were not compatible with Python 3, we would know by now. This check has not been relevant for a couple of years now and we can safely remove it.
Thu, 24 Oct 2024 18:58:58 +0200 zope-interface: add compatibility with 3.13 compiler attributes stable
Raphaël Gomès <rgomes@octobus.net> [Thu, 24 Oct 2024 18:58:58 +0200] rev 52090
zope-interface: add compatibility with 3.13 compiler attributes We could follow-up with an actual vendoring update from the newest version of zope-interface in the new cycle since we're dropping 3.7 and down. However we are also in the process of replacing zope-interface with Protocol, so hopefully we can simply drop the zope-interface vendoring.
Thu, 24 Oct 2024 15:35:45 +0200 py-3-13: fix traceback matching for the new Python version stable
Raphaël Gomès <rgomes@octobus.net> [Thu, 24 Oct 2024 15:35:45 +0200] rev 52089
py-3-13: fix traceback matching for the new Python version
Thu, 24 Oct 2024 15:23:52 +0200 py-3-13: stabilize the docstring output across all supported Python versions stable
Raphaël Gomès <rgomes@octobus.net> [Thu, 24 Oct 2024 15:23:52 +0200] rev 52088
py-3-13: stabilize the docstring output across all supported Python versions Python 3.13 now trims indents from docstrings at compilation time (to save space in .pyc), so all of our helptext is affected. The indentation has never served a user-facing purpose and was more here because nobody cared enough to remove it: we gain some screen space this way. Rather than undo the transformation (which isn't really possible since the transform also deletes leading/trailing whitespace), we align the behavior of older Python versions with that of 3.13. Unfortunately, this means breaking some of the translations. I've only touched the ones that need to work for some tooling tests to pass, but I do not have the time to fix the rest of them across all languages, since they cannot be done in an automated way. i18n updates have been basically abandonned for a good while now, hopefully someone cares enough to bring them back.
Thu, 24 Oct 2024 18:04:26 +0200 test-lfs-serve-access: vastly simplify the error output check stable
Raphaël Gomès <rgomes@octobus.net> [Thu, 24 Oct 2024 18:04:26 +0200] rev 52087
test-lfs-serve-access: vastly simplify the error output check The traceback differences between all supported Python versions is about to become insane to handle, so let's check what we're actually looking to check.
Sun, 31 Mar 2024 17:57:46 -0300 subrepo: propagate non-default path on outgoing stable
Felipe Resende <felipe@fcresende.dev.br> [Sun, 31 Mar 2024 17:57:46 -0300] rev 52086
subrepo: propagate non-default path on outgoing There was already a fix made in 5dbff89cf107 for pull and push commands. I did the same for the outgoing command. The problem I identified is that when the parent repository has multiple paths, the outgoing command was not respecting the parent path used and was always using the default path for subrepositories.
Fri, 25 Oct 2024 01:14:53 +0200 outgoing: pre-indent some code stable
Felipe Resende <felipe@fcresende.dev.br> [Fri, 25 Oct 2024 01:14:53 +0200] rev 52085
outgoing: pre-indent some code This will make the next changeset clearer.
Fri, 25 Oct 2024 01:23:24 +0200 outgoing: move sorting in the display function stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 25 Oct 2024 01:23:24 +0200] rev 52084
outgoing: move sorting in the display function This make the core code simpler.
Fri, 25 Oct 2024 01:04:38 +0200 outgoing: extract changeset display in its own function stable
Felipe Resende <felipe@fcresende.dev.br> [Fri, 25 Oct 2024 01:04:38 +0200] rev 52083
outgoing: extract changeset display in its own function This will clarify future patches.
Tue, 11 Jun 2024 14:35:52 +0200 subrepo: move code around stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 11 Jun 2024 14:35:52 +0200] rev 52082
subrepo: move code around
Thu, 24 Oct 2024 17:35:53 +0200 merge: add a config to allow conflict-free merge of changes on adjacent lines
Arseniy Alekseyev <aalekseyev@janestreet.com [Thu, 24 Oct 2024 17:35:53 +0200] rev 52081
merge: add a config to allow conflict-free merge of changes on adjacent lines This change adds a config to make it no longer a conflict to merge changes made on adjacent lines. The reason these changes are considered a conflict is that there's no region of text at the relevant position (sync region) that's kept unchanged by both sides of the merge. The problem can be solved by making the sync regions being a bit more powerful: we can keep a 0-length sync region if we find that a block unchanged by one side is ajacent to a block unchanged by the other side. Since these 0-length sync regions are emitted using the ~same algorithm as the normal non-empty sync regions, this change involves no arbitrary decisions and I expect it to work pretty well. 0-length sync regions do create an ambiguity in a special case where two pairs of adjacent regions "meet" at the same point. This corresponds to an insertion made at the same place by the two sides of the merge, and this still results in a conflict.
Wed, 23 Oct 2024 17:08:57 -0400 localrepo: drop the CamelCase name for `localrepo.ilocalrepositorymain`
Matt Harbison <matt_harbison@yahoo.com> [Wed, 23 Oct 2024 17:08:57 -0400] rev 52080
localrepo: drop the CamelCase name for `localrepo.ilocalrepositorymain` See 61557734c0ae for the reasoning. This one is slightly different, however, because the `localrepository` class already subclasses the interface class in the type checking phase.
Wed, 23 Oct 2024 17:04:59 -0400 localrepo: drop the CamelCase name for `localrepo.revlognarrowfilestorage`
Matt Harbison <matt_harbison@yahoo.com> [Wed, 23 Oct 2024 17:04:59 -0400] rev 52079
localrepo: drop the CamelCase name for `localrepo.revlognarrowfilestorage` See 61557734c0ae for the reasoning.
Wed, 23 Oct 2024 17:03:33 -0400 localrepo: drop the CamelCase name for `localrepo.revlogfilestorage`
Matt Harbison <matt_harbison@yahoo.com> [Wed, 23 Oct 2024 17:03:33 -0400] rev 52078
localrepo: drop the CamelCase name for `localrepo.revlogfilestorage` See 61557734c0ae for the reasoning.
Wed, 23 Oct 2024 17:01:35 -0400 localrepo: drop the CamelCase name for `localrepo.locallegacypeer`
Matt Harbison <matt_harbison@yahoo.com> [Wed, 23 Oct 2024 17:01:35 -0400] rev 52077
localrepo: drop the CamelCase name for `localrepo.locallegacypeer` See 61557734c0ae for the reasoning.
Wed, 23 Oct 2024 16:59:43 -0400 localrepo: drop the CamelCase name for `localrepo.localpeer`
Matt Harbison <matt_harbison@yahoo.com> [Wed, 23 Oct 2024 16:59:43 -0400] rev 52076
localrepo: drop the CamelCase name for `localrepo.localpeer` See 61557734c0ae for the reasoning.
Wed, 23 Oct 2024 16:51:18 -0400 localrepo: drop the CamelCase name for `localrepo.localcommandexecutor`
Matt Harbison <matt_harbison@yahoo.com> [Wed, 23 Oct 2024 16:51:18 -0400] rev 52075
localrepo: drop the CamelCase name for `localrepo.localcommandexecutor` See 61557734c0ae for the reasoning.
Wed, 23 Oct 2024 16:48:46 -0400 manifest: drop the CamelCase name for `manifest.treemanifestctx`
Matt Harbison <matt_harbison@yahoo.com> [Wed, 23 Oct 2024 16:48:46 -0400] rev 52074
manifest: drop the CamelCase name for `manifest.treemanifestctx` See 61557734c0ae for the reasoning.
Wed, 23 Oct 2024 16:45:12 -0400 manifest: drop the CamelCase name for `manifest.memtreemanifestctx`
Matt Harbison <matt_harbison@yahoo.com> [Wed, 23 Oct 2024 16:45:12 -0400] rev 52073
manifest: drop the CamelCase name for `manifest.memtreemanifestctx` See 61557734c0ae for the reasoning.
Wed, 23 Oct 2024 16:43:22 -0400 manifest: drop the CamelCase name for `manifest.manifestctx`
Matt Harbison <matt_harbison@yahoo.com> [Wed, 23 Oct 2024 16:43:22 -0400] rev 52072
manifest: drop the CamelCase name for `manifest.manifestctx` See 61557734c0ae for the reasoning.
Wed, 23 Oct 2024 16:41:02 -0400 manifest: drop the CamelCase name for `manifest.memmanifestctx`
Matt Harbison <matt_harbison@yahoo.com> [Wed, 23 Oct 2024 16:41:02 -0400] rev 52071
manifest: drop the CamelCase name for `manifest.memmanifestctx` See 61557734c0ae for the reasoning.
Wed, 23 Oct 2024 16:39:12 -0400 manifest: drop the CamelCase name for `manifest.manifestlog`
Matt Harbison <matt_harbison@yahoo.com> [Wed, 23 Oct 2024 16:39:12 -0400] rev 52070
manifest: drop the CamelCase name for `manifest.manifestlog` See 61557734c0ae for the reasoning.
Wed, 23 Oct 2024 16:36:50 -0400 manifest: drop the CamelCase name for `manifest.manifestrevlog`
Matt Harbison <matt_harbison@yahoo.com> [Wed, 23 Oct 2024 16:36:50 -0400] rev 52069
manifest: drop the CamelCase name for `manifest.manifestrevlog` See 61557734c0ae for the reasoning.
Wed, 23 Oct 2024 16:32:34 -0400 manifest: drop the CamelCase name for `manifest.treemanifest`
Matt Harbison <matt_harbison@yahoo.com> [Wed, 23 Oct 2024 16:32:34 -0400] rev 52068
manifest: drop the CamelCase name for `manifest.treemanifest` See 61557734c0ae for the reasoning.
Wed, 23 Oct 2024 16:30:23 -0400 manifest: drop the CamelCase name for `manifest.manifestdict`
Matt Harbison <matt_harbison@yahoo.com> [Wed, 23 Oct 2024 16:30:23 -0400] rev 52067
manifest: drop the CamelCase name for `manifest.manifestdict` See 61557734c0ae for the reasoning.
Wed, 23 Oct 2024 16:24:18 -0400 filelog: drop the CamelCase name for `filelog.filelog`
Matt Harbison <matt_harbison@yahoo.com> [Wed, 23 Oct 2024 16:24:18 -0400] rev 52066
filelog: drop the CamelCase name for `filelog.filelog` See 61557734c0ae for the reasoning.
Wed, 23 Oct 2024 16:22:21 -0400 revlog: drop the CamelCase name for `revlog.revlogproblem`
Matt Harbison <matt_harbison@yahoo.com> [Wed, 23 Oct 2024 16:22:21 -0400] rev 52065
revlog: drop the CamelCase name for `revlog.revlogproblem` See 61557734c0ae for the reasoning.
Wed, 23 Oct 2024 16:19:24 -0400 revlog: drop the CamelCase name for `revlog.revlogrevisiondelta`
Matt Harbison <matt_harbison@yahoo.com> [Wed, 23 Oct 2024 16:19:24 -0400] rev 52064
revlog: drop the CamelCase name for `revlog.revlogrevisiondelta` These CamelCase names popped up this cycle because pytype was getting confused by the zope decorator, and so the decoration was decoupled from the class declaration. We're in the process of switching all of the zope interfaces to `typing.Protocol` classes, but we're up against the code freeze. It would be nice to use CamelCase for protocol classes (or classes in general), but let's reset to a consistent state and buy some more time to think about this. Since we're moving to Protocol classes and I disabled the interface tests back in ef7d85089952, I'm not bothering to re-add the decorator, and re-confuse pytype. But do place the interface next to the class, so that these places can be found with the `grep` when the time comes to subclass.
Wed, 23 Oct 2024 16:14:13 +0200 tests: use pyflakes as a tool, not a python module
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 23 Oct 2024 16:14:13 +0200] rev 52063
tests: use pyflakes as a tool, not a python module The usage of pyflakes as a Python module was introduced in e397c6d74652, to work around issue between Python 2 and Python 3. This issues are long behind us now and we can get beck to using pyflakes as a tool, giving us more flexibility about how we install it. The `hghave` requirements is modified to check that we have a tool available, instead of a python module.
Tue, 22 Oct 2024 15:50:47 +0200 clang-format: do not accept version above 19.x
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 22 Oct 2024 15:50:47 +0200] rev 52062
clang-format: do not accept version above 19.x This gives me different formatting on latest version available in Debian. So disabling for now.
Wed, 16 Oct 2024 17:21:03 +0200 rust-update: add a config item to disable the Rust update fastpath
Raphaël Gomès <rgomes@octobus.net> [Wed, 16 Oct 2024 17:21:03 +0200] rev 52061
rust-update: add a config item to disable the Rust update fastpath Explanations inline.
Tue, 01 Oct 2024 13:49:11 +0200 update: add a Rust fast-path when updating from null (and clean)
Raphaël Gomès <rgomes@octobus.net> [Tue, 01 Oct 2024 13:49:11 +0200] rev 52060
update: add a Rust fast-path when updating from null (and clean) This case is easy to detect and we have all we need to generate a valid working copy and dirstate entirely in Rust, which speeds things up considerably: On my machine updating a repo of ~300k files goes from 10.00s down to 4.2s, all while consuming 50% less system time, with all caches hot. Something to note is that further improvements will probably happen with the upcoming `InnerRevlog` series that does smarter mmap hanlding, especially for filelogs. Here are benchmark numbers on a machine with only 4 cores (and no SMT enabled) ``` ### data-env-vars.name = heptapod-public-2024-03-25-ds2-pnm # benchmark.name = hg.command.update # bin-env-vars.hg.py-re2-module = default # bin-env-vars.hg.changeset.node = <this change> # benchmark.variants.atomic-update = no # benchmark.variants.scenario = null-to-tip # benchmark.variants.worker = default default: 5.328762 ~~~~~ rust: 1.308654 (-75.44%, -4.02) ### data-env-vars.name = mercurial-devel-2024-03-22-ds2-pnm # benchmark.name = hg.command.update # bin-env-vars.hg.py-re2-module = default # bin-env-vars.hg.changeset.node = <this change> # benchmark.variants.atomic-update = no # benchmark.variants.scenario = null-to-tip # benchmark.variants.worker = default default: 1.693271 ~~~~~ rust: 1.151053 (-32.02%, -0.54) ### data-env-vars.name = mozilla-unified-2024-03-22-ds2-pnm # benchmark.name = hg.command.update # bin-env-vars.hg.py-re2-module = default # bin-env-vars.hg.changeset.node = <this change> # benchmark.variants.atomic-update = no # benchmark.variants.scenario = null-to-tip # benchmark.variants.worker = default default: 38.901613 ~~~~~ rust: 11.637880 (-70.08%, -27.26) ### data-env-vars.name = netbsd-xsrc-public-2024-09-19-ds2-pnm # benchmark.name = hg.command.update # bin-env-vars.hg.py-re2-module = default # bin-env-vars.hg.changeset.node = <this change> # benchmark.variants.atomic-update = no # benchmark.variants.scenario = null-to-tip # benchmark.variants.worker = default default: 4.793727 ~~~~~ rust: 1.505905 (-68.59%, -3.29) ```
Wed, 16 Oct 2024 19:14:30 +0200 merge: improve working-copy mtime race handling
Raphaël Gomès <rgomes@octobus.net> [Wed, 16 Oct 2024 19:14:30 +0200] rev 52059
merge: improve working-copy mtime race handling Explanations inline. This also makes use of `make_mtime_reliable`, which unifies our mtime raciness logic from the status. On top of this, this fixes the handling of the pure dirstate status to better catch racy status, as we've been doing in Rust for a long time now.
Wed, 16 Oct 2024 18:56:19 +0200 merge: move the filtering of ambiguous files to a dedicated function
Raphaël Gomès <rgomes@octobus.net> [Wed, 16 Oct 2024 18:56:19 +0200] rev 52058
merge: move the filtering of ambiguous files to a dedicated function I have multiple reasons: - The body of `_update` is way too long - This adds typing which will help our tooling and brains understand this code more easily - This function will get more nested and complex in the next patch I've taken the liberty of rewrapping and typo-passing the docstring.
Wed, 16 Oct 2024 18:41:49 +0200 timestamp: make the reliable comparison more usable from outside
Raphaël Gomès <rgomes@octobus.net> [Wed, 16 Oct 2024 18:41:49 +0200] rev 52057
timestamp: make the reliable comparison more usable from outside This is going to be used with pre-computed times unlike in status.
Wed, 16 Oct 2024 18:40:59 +0200 timestamp: add type information to the module
Raphaël Gomès <rgomes@octobus.net> [Wed, 16 Oct 2024 18:40:59 +0200] rev 52056
timestamp: add type information to the module This is easy to do and helps both Pytype and developpers understand what objects they are dealing with.
Wed, 16 Oct 2024 17:19:38 +0200 rust-dirstate: make the reliable timestamp comparison more usable from outside
Raphaël Gomès <rgomes@octobus.net> [Wed, 16 Oct 2024 17:19:38 +0200] rev 52055
rust-dirstate: make the reliable timestamp comparison more usable from outside This is going to be used with pre-computed times unlike in status.
Thu, 03 Oct 2024 16:35:31 +0200 rust-dirstate-map: use a more precise identity
Raphaël Gomès <rgomes@octobus.net> [Thu, 03 Oct 2024 16:35:31 +0200] rev 52054
rust-dirstate-map: use a more precise identity This is closer to the behavior of what Python does. So far, we were checking only the inode, but this might not be good enough for the v1 case.
Mon, 14 Oct 2024 14:14:21 +0200 dirstate-map: add a missing debug wait point when accessing the v2 docket
Raphaël Gomès <rgomes@octobus.net> [Mon, 14 Oct 2024 14:14:21 +0200] rev 52053
dirstate-map: add a missing debug wait point when accessing the v2 docket fc8e37c380d3 added synchronization points to the dirstate to allow for race condition testing without actually requiring a time-based race condition to happen. This changes adds the `pre-read-file` wait point before we read the docket, since callers might ask for the parents before anything else is read, leading to the first read being done before the wait point. This removes some differences in test output which were presumed to be speed related, but weren't.
Thu, 03 Oct 2024 00:31:25 +0200 rust-parsers: use the same error message as with the higher-level code
Raphaël Gomès <rgomes@octobus.net> [Thu, 03 Oct 2024 00:31:25 +0200] rev 52052
rust-parsers: use the same error message as with the higher-level code This can happen at two places, but it's not really enough time to justify it being refactored. Let's ensure we have the same error message, the newer one being slightly more helpful.
Thu, 03 Oct 2024 01:52:44 +0200 rust-pathauditor: make sure we actually test the nested repo case
Raphaël Gomès <rgomes@octobus.net> [Thu, 03 Oct 2024 01:52:44 +0200] rev 52051
rust-pathauditor: make sure we actually test the nested repo case This covers the *on-disk* case, where the path itself does not have a `.hg` component.
Wed, 02 Oct 2024 20:29:48 +0200 rust-pathauditor: match more of Python's behavior and display messages
Raphaël Gomès <rgomes@octobus.net> [Wed, 02 Oct 2024 20:29:48 +0200] rev 52050
rust-pathauditor: match more of Python's behavior and display messages We will make use of the path auditor when running our update fast-path, and we want to output of it to be close enough.
Wed, 02 Oct 2024 18:31:32 +0200 rust-dirstate: pass dirstate tracked key from the requirements
Raphaël Gomès <rgomes@octobus.net> [Wed, 02 Oct 2024 18:31:32 +0200] rev 52049
rust-dirstate: pass dirstate tracked key from the requirements We will make use of this with the `hg update` fastpath
Wed, 02 Oct 2024 13:39:43 +0200 rust-files: check for empty manifests caused by narrow
Raphaël Gomès <rgomes@octobus.net> [Wed, 02 Oct 2024 13:39:43 +0200] rev 52048
rust-files: check for empty manifests caused by narrow Explanations inline
Wed, 02 Oct 2024 13:36:51 +0200 rust-repo: don't use on-disk dirstate parents in v1
Raphaël Gomès <rgomes@octobus.net> [Wed, 02 Oct 2024 13:36:51 +0200] rev 52047
rust-repo: don't use on-disk dirstate parents in v1 This mistake was not causing any problems yet since we were never updating parents from Rust code. This is about to change, so let's fix it.
Tue, 01 Oct 2024 13:45:18 +0200 rust-cpython: add a util to get a `Repo` from a python path
Raphaël Gomès <rgomes@octobus.net> [Tue, 01 Oct 2024 13:45:18 +0200] rev 52046
rust-cpython: add a util to get a `Repo` from a python path I suspect this will not be the last time we need to do something like this.
Tue, 01 Oct 2024 13:20:40 +0200 rust: improve `InvalidRevision` error message
Raphaël Gomès <rgomes@octobus.net> [Tue, 01 Oct 2024 13:20:40 +0200] rev 52045
rust: improve `InvalidRevision` error message I encountered this when debugging earlier and felt like we were losing some information along the way, which we were!
Mon, 30 Sep 2024 17:19:35 +0200 rust-dirstate: use a struct as arguments for the high-level `reset_state`
Raphaël Gomès <rgomes@octobus.net> [Mon, 30 Sep 2024 17:19:35 +0200] rev 52044
rust-dirstate: use a struct as arguments for the high-level `reset_state` This makes the interface a lot clearer at the call site and prevents silly mistakes, as an API with a bunch of booleans is prone to errors. This refactor adds a `from_empty` parameter for a fast-path when resetting and entry we're sure does not exist. It will be used in the upcoming update Rust fastpath, and was not split to prevent more churn.
Mon, 30 Sep 2024 16:55:11 +0200 rust: implement `From<SparseConfigWarning>` for `HgError`
Raphaël Gomès <rgomes@octobus.net> [Mon, 30 Sep 2024 16:55:11 +0200] rev 52043
rust: implement `From<SparseConfigWarning>` for `HgError` This will be useful in a future patch to avoid a lot of boilerplate.
Mon, 30 Sep 2024 16:04:51 +0200 rust-hg-cpython: add an `HgProgressBar` util
Raphaël Gomès <rgomes@octobus.net> [Mon, 30 Sep 2024 16:04:51 +0200] rev 52042
rust-hg-cpython: add an `HgProgressBar` util This will be the entry point for all progress bars from a Python context in upcoming patches. Like the `Progress` trait, this is subject to change once we have more use cases, but this is good enough for now.
(0) -30000 -10000 -3000 -1000 -192 tip