Tue, 07 Mar 2023 23:38:14 -0500 run-tests: fix a crash when using the coverage options stable
Matt Harbison <matt_harbison@yahoo.com> [Tue, 07 Mar 2023 23:38:14 -0500] rev 50275
run-tests: fix a crash when using the coverage options 35bf7f23b84c attempted to transition away from `distutils`, but the `packaging` code lacks `StrictVersion`. I have no idea when `packaging.version` became available, but I have it in python 3.6, so that should be good enough. For some reason, the import checker thinks this is a local import, and needs help to decide otherwise. Alternately we could ditch the version check entirely, because `coverage` is currently at 7.2.1, and the original check was added back in 2010.
Tue, 07 Mar 2023 13:39:31 +0100 rust: fix building on macOS (issue6801) stable
Dan Villiom Podlaski Christiansen <danchr@gmail.com> [Tue, 07 Mar 2023 13:39:31 +0100] rev 50274
rust: fix building on macOS (issue6801) The VFS change is copied over from Cargo, and likely to apply to other platforms as well. The dirstate change is essentially a replay of 440972d2175d, which was reverted in e98fd81bb151, part of !383, to silence some clippy warnings.
Wed, 08 Mar 2023 00:46:53 +0100 tests: fix timeout adjustement in delaypush.py stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 08 Mar 2023 00:46:53 +0100] rev 50273
tests: fix timeout adjustement in delaypush.py Doing integer arithmetic with string is bound to fail.
Thu, 02 Mar 2023 23:45:30 +0100 relnotes: add 6.4 and empty next stable
Raphaël Gomès <rgomes@octobus.net> [Thu, 02 Mar 2023 23:45:30 +0100] rev 50272
relnotes: add 6.4 and empty next
Thu, 02 Mar 2023 23:30:04 +0100 Added signature for changeset 05de4896508e stable
Raphaël Gomès <rgomes@octobus.net> [Thu, 02 Mar 2023 23:30:04 +0100] rev 50271
Added signature for changeset 05de4896508e
Thu, 02 Mar 2023 23:29:52 +0100 Added tag 6.4rc0 for changeset 05de4896508e stable
Raphaël Gomès <rgomes@octobus.net> [Thu, 02 Mar 2023 23:29:52 +0100] rev 50270
Added tag 6.4rc0 for changeset 05de4896508e
Thu, 02 Mar 2023 22:45:44 +0100 branching: merge default into stable stable 6.4rc0
Raphaël Gomès <rgomes@octobus.net> [Thu, 02 Mar 2023 22:45:44 +0100] rev 50269
branching: merge default into stable
Thu, 02 Mar 2023 15:34:45 +0100 transaction: drive the aberratant branch special case away
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 02 Mar 2023 15:34:45 +0100] rev 50268
transaction: drive the aberratant branch special case away shoo shoo shoo shoo. Happy to remove this awful special case (that I introduced myself last week…)
Thu, 02 Mar 2023 15:33:04 +0100 transaction: remove the `branch` backup for transaction
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 02 Mar 2023 15:33:04 +0100] rev 50267
transaction: remove the `branch` backup for transaction We can now back it up at the end of the transaction as we do for the rest of the dirstate.
Thu, 02 Mar 2023 11:54:29 +0100 dirstate: deprecate calling `setbranch` without a transaction parameter
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 02 Mar 2023 11:54:29 +0100] rev 50266
dirstate: deprecate calling `setbranch` without a transaction parameter The new way is now enforced.
Thu, 02 Mar 2023 14:46:37 +0100 branch: pass current transaction when writing branch for transaction backup
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 02 Mar 2023 14:46:37 +0100] rev 50265
branch: pass current transaction when writing branch for transaction backup This will requires more change soon (as we can simplify this backup). This will be done in later changesets.
Thu, 02 Mar 2023 14:46:51 +0100 branch: pass current transaction when writing branch in shelve
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 02 Mar 2023 14:46:51 +0100] rev 50264
branch: pass current transaction when writing branch in shelve
Thu, 02 Mar 2023 14:45:39 +0100 branch: pass current transaction when writing branch in import
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 02 Mar 2023 14:45:39 +0100] rev 50263
branch: pass current transaction when writing branch in import
Thu, 02 Mar 2023 14:45:29 +0100 branch: pass current transaction when writing branch in backout command
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 02 Mar 2023 14:45:29 +0100] rev 50262
branch: pass current transaction when writing branch in backout command
Thu, 02 Mar 2023 14:45:21 +0100 branch: pass current transaction when writing branch in branch command
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 02 Mar 2023 14:45:21 +0100] rev 50261
branch: pass current transaction when writing branch in branch command
Thu, 02 Mar 2023 14:44:43 +0100 branch: pass current transaction when writing branch in merge
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 02 Mar 2023 14:44:43 +0100] rev 50260
branch: pass current transaction when writing branch in merge
Thu, 02 Mar 2023 14:44:33 +0100 branch: pass current transaction when writing branch in rebase
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 02 Mar 2023 14:44:33 +0100] rev 50259
branch: pass current transaction when writing branch in rebase
Thu, 02 Mar 2023 14:44:26 +0100 branch: pass current transaction when writing branch in keyword
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 02 Mar 2023 14:44:26 +0100] rev 50258
branch: pass current transaction when writing branch in keyword
Thu, 02 Mar 2023 14:44:17 +0100 branch: pass current transaction when writing branch in histedit
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 02 Mar 2023 14:44:17 +0100] rev 50257
branch: pass current transaction when writing branch in histedit
Thu, 02 Mar 2023 11:47:18 +0100 dirstate: write the `branch` as part of the transaction if any
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 02 Mar 2023 11:47:18 +0100] rev 50256
dirstate: write the `branch` as part of the transaction if any Bypassing the transaction means we could get out of sync with the dirstatemap content. The branch is stil written right away if no transaction is around, but at least it no longer bypass the transaction. Actual caller of this still need to be updated.
Thu, 02 Mar 2023 11:46:51 +0100 dirstate: factor the transaction abort logic
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 02 Mar 2023 11:46:51 +0100] rev 50255
dirstate: factor the transaction abort logic We will need it in more occasion if the branch is to be written as part of the transaction.
Thu, 02 Mar 2023 14:50:17 +0100 dirstate: use a context manager to handle the file used for writing the branch
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 02 Mar 2023 14:50:17 +0100] rev 50254
dirstate: use a context manager to handle the file used for writing the branch This is more modern.
Thu, 02 Mar 2023 11:54:21 +0100 style: rewrap `ui.deprecwarn` declaration
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 02 Mar 2023 11:54:21 +0100] rev 50253
style: rewrap `ui.deprecwarn` declaration This get easier to read, especially with the type annotation.
Thu, 02 Mar 2023 19:02:52 +0100 branching: merge stable into default
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 02 Mar 2023 19:02:52 +0100] rev 50252
branching: merge stable into default The clippy god had to be appeased on some aspect.
Thu, 02 Mar 2023 15:21:36 +0100 Added signature for changeset 8830004967ad stable
Raphaël Gomès <rgomes@octobus.net> [Thu, 02 Mar 2023 15:21:36 +0100] rev 50251
Added signature for changeset 8830004967ad
Thu, 02 Mar 2023 15:21:23 +0100 Added tag 6.3.3 for changeset 8830004967ad stable
Raphaël Gomès <rgomes@octobus.net> [Thu, 02 Mar 2023 15:21:23 +0100] rev 50250
Added tag 6.3.3 for changeset 8830004967ad
Thu, 02 Mar 2023 15:07:47 +0100 relnotes: add 6.3.3 stable 6.3.3
Raphaël Gomès <rgomes@octobus.net> [Thu, 02 Mar 2023 15:07:47 +0100] rev 50249
relnotes: add 6.3.3
Thu, 02 Mar 2023 04:16:47 +0100 narrow: read pending file when applicable
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 02 Mar 2023 04:16:47 +0100] rev 50248
narrow: read pending file when applicable Now that this is part of the transaction, this is necessary to make sure we read the right data in hooks (if any).
Tue, 28 Feb 2023 16:42:38 -0500 typing: add typehints to mercurial/diffutil.py stable
Matt Harbison <matt_harbison@yahoo.com> [Tue, 28 Feb 2023 16:42:38 -0500] rev 50247
typing: add typehints to mercurial/diffutil.py Lack of typehints here caused the fact that TortoiseHg was passing str instead of bytes as the key in `opts` to be missed, resulting in shelf corruption in cases where `diff.git` is required.
Tue, 28 Feb 2023 18:14:11 -0500 patchbomb: respect the `--git` option stable
Matt Harbison <matt_harbison@yahoo.com> [Tue, 28 Feb 2023 18:14:11 -0500] rev 50246
patchbomb: respect the `--git` option I *think* this is the only diffopt exposed on the command line. TortoiseHg had a similar issue creating diffopts, and this was caught by type hints in the next commit.
Wed, 01 Mar 2023 16:48:09 +0100 rhg: remember the inode of .hg/dirstate stable
Raphaël Gomès <rgomes@octobus.net> [Wed, 01 Mar 2023 16:48:09 +0100] rev 50245
rhg: remember the inode of .hg/dirstate This allows us to detect changes of `.hg/dirstate`, which is either the full dirstate (in dirstate-v1) or the docket file (v2) without relying on data inside the file. It only works on UNIX systems. This fixes a race condition for dirstate-v1 (as demonstrated by the test changes) and adds a confortable layer of sanity for dirstate-v2.
Tue, 28 Feb 2023 17:58:15 +0100 rust-dirstate-v2: don't write dirstate if data file has changed stable
Raphaël Gomès <rgomes@octobus.net> [Tue, 28 Feb 2023 17:58:15 +0100] rev 50244
rust-dirstate-v2: don't write dirstate if data file has changed This fixes the following race: - process A reads the dirstate - process B reads and writes the dirstate - process A writes the dirstate This either resulted in losing what process B had just written or a crash because the `uuid` had changed and we were trying to write to a file that doesn't exist. More explanations inside. This doesn't fix the issue for dirstate-v1, a later patch addresses it.
Mon, 12 Dec 2022 17:08:12 +0100 rust-dirstate: remember the data file uuid dirstate was loaded with stable
Raphaël Gomès <rgomes@octobus.net> [Mon, 12 Dec 2022 17:08:12 +0100] rev 50243
rust-dirstate: remember the data file uuid dirstate was loaded with This will be used in the next patch to fix a race condition.
Wed, 01 Mar 2023 02:38:20 +0100 dirstate: set identity whenever we read the dirstate's v2 docket stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 01 Mar 2023 02:38:20 +0100] rev 50242
dirstate: set identity whenever we read the dirstate's v2 docket The docket can be loaded outside of a full read (for exemple when pre-fetching parents), so the current code would read/set the identity after loading the data, opening a race condition: A0: first process docket is read B0: other process appends new data to the dirstate (and changes the docket) A1: first process sets the identity (based on pre-B content, but with post-B identity) A1: first process loads the dirstatemap from the data file A1: first process does not detect the race and overwrites the update from B.
Tue, 21 Feb 2023 15:10:12 +0100 dirstate: factor the identity setting code in the dirstate map stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 21 Feb 2023 15:10:12 +0100] rev 50241
dirstate: factor the identity setting code in the dirstate map We need it in more locations, so let us start factoring thing out first to make sure the same code is called everywhere. This bears some similarity with 85746485a4dd on default, but at a smaller scope and for a different purpose.
Wed, 01 Mar 2023 00:07:26 +0100 dirstate: simplify the dirstate's read race testing stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 01 Mar 2023 00:07:26 +0100] rev 50240
dirstate: simplify the dirstate's read race testing Now that most code behaves properly, we can simplify the expected matching.
Tue, 28 Feb 2023 19:36:46 +0100 dirstate: deal with read-race for pure rust code path (rhg) stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 28 Feb 2023 19:36:46 +0100] rev 50239
dirstate: deal with read-race for pure rust code path (rhg) If we cannot read the dirstate data, this is probably because a writing process wrote it under our feet. So refresh the docket and try again a handful of time.
Tue, 28 Feb 2023 23:35:52 +0100 dirstate: deal with read-race for python code using rust object stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 28 Feb 2023 23:35:52 +0100] rev 50238
dirstate: deal with read-race for python code using rust object If we cannot read the dirstate data, this is probably because a writing process wrote it under our feet. So refresh the docket and try again a handful of time.
Tue, 28 Feb 2023 19:01:20 +0100 dirstate: deal with read-race for pure python code stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 28 Feb 2023 19:01:20 +0100] rev 50237
dirstate: deal with read-race for pure python code If we cannot read the dirstate data, this is probably because a writing process wrote it under our feet. So refresh the docket and try again a handful of time.
Wed, 01 Mar 2023 16:05:28 +0100 dirstate: abstract the reading of the data file in v2 in a method stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 01 Mar 2023 16:05:28 +0100] rev 50236
dirstate: abstract the reading of the data file in v2 in a method We will need more changes to avoid some race conditions during read, so we first isolate the simple logic before making it more complicated.
Mon, 27 Feb 2023 03:14:30 +0100 dirstate: add append/new-file variants in the dirstate's read race tests stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 27 Feb 2023 03:14:30 +0100] rev 50235
dirstate: add append/new-file variants in the dirstate's read race tests This covers more ground and finds more bugs. At that point I gave up on making things as `known-bad-output` / `missing-correct-output` as this gets too messy.
Tue, 13 Dec 2022 14:51:36 +0100 dirstate: add a synchronisation point in the middle of the read stable
Raphaël Gomès <rgomes@octobus.net> [Tue, 13 Dec 2022 14:51:36 +0100] rev 50234
dirstate: add a synchronisation point in the middle of the read This will be useful to test some more race conditions around dirstate.
Sun, 26 Feb 2023 16:27:50 +0100 dirstate: add v1-v2 variants to the dirstate's read race tests stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 26 Feb 2023 16:27:50 +0100] rev 50233
dirstate: add v1-v2 variants to the dirstate's read race tests More cases mean different issues.
Sun, 26 Feb 2023 08:17:23 +0100 dirstate: check dirstate race condition around status stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 26 Feb 2023 08:17:23 +0100] rev 50232
dirstate: check dirstate race condition around status More problems to solve.
Sun, 26 Feb 2023 07:08:16 +0100 dirstate: check dirstate race condition around update stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 26 Feb 2023 07:08:16 +0100] rev 50231
dirstate: check dirstate race condition around update More problems to solve.
Sun, 26 Feb 2023 07:02:13 +0100 dirstate: check dirstate race condition around commit stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 26 Feb 2023 07:02:13 +0100] rev 50230
dirstate: check dirstate race condition around commit Once in a while, rhg is the only one to behave right here.
Sat, 25 Feb 2023 00:54:30 +0100 dirstate: initial creation of a test file to check dirstate race read stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 25 Feb 2023 00:54:30 +0100] rev 50229
dirstate: initial creation of a test file to check dirstate race read More problems to solve… yeah ! (I guess)
Sat, 25 Feb 2023 01:07:44 +0100 dirstate: add a synchronisation point before doing a full dirstate read stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 25 Feb 2023 01:07:44 +0100] rev 50228
dirstate: add a synchronisation point before doing a full dirstate read This will be useful to test some race conditions around the dirstate.
Tue, 28 Feb 2023 12:15:19 +0100 rust-repo: move dirstate-v2 opening to a separate method stable
Raphaël Gomès <rgomes@octobus.net> [Tue, 28 Feb 2023 12:15:19 +0100] rev 50227
rust-repo: move dirstate-v2 opening to a separate method The next changeset will make changes to this logic, it helps to have it in order first.
Tue, 28 Feb 2023 16:19:21 +0100 rhg: fix race when an ambiguous file is deleted on disk stable
Raphaël Gomès <rgomes@octobus.net> [Tue, 28 Feb 2023 16:19:21 +0100] rev 50226
rhg: fix race when an ambiguous file is deleted on disk There are two places in the status code where we handle files whose status we are unsure of based off of metadata alone: this one is the first one to actually disambiguate, and the second one is later in the code (but updated in the previous commit) for files that are actually clean to update the dirstate. Since there is a chance that the contents have changed between those two moments, we need to stat the files again, since re-using the old stat could lie about the clean state of the file.
Mon, 27 Feb 2023 15:18:50 +0100 rhg: fix race when a fixup file is deleted on disk stable
Raphaël Gomès <rgomes@octobus.net> [Mon, 27 Feb 2023 15:18:50 +0100] rev 50225
rhg: fix race when a fixup file is deleted on disk See next changeset for the other race in the same kind of logic and why there are two different places.
Sat, 25 Feb 2023 06:11:14 +0100 dirstate: test a `hg status` raced by a `hg remove` stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 25 Feb 2023 06:11:14 +0100] rev 50224
dirstate: test a `hg status` raced by a `hg remove` This shows that `rhg` is misbehaving here.
Fri, 24 Feb 2023 01:19:37 +0100 dirstate: tests racing status with both dirstate-v2 append and rewrite stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 24 Feb 2023 01:19:37 +0100] rev 50223
dirstate: tests racing status with both dirstate-v2 append and rewrite The way the racing process touches the dirstate results in different challenges for the raced process. We now test each variant in the `test-dirstate-status-race.t` tests.
Tue, 28 Feb 2023 15:49:53 +0100 dirstate-v2: add devel config option to control write behavior stable
Raphaël Gomès <rgomes@octobus.net> [Tue, 28 Feb 2023 15:49:53 +0100] rev 50222
dirstate-v2: add devel config option to control write behavior This will help us to write predictable tests checking behavior in each case.
Fri, 24 Feb 2023 18:21:54 +0100 dirstate: use more than a bool to control append behavior stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 24 Feb 2023 18:21:54 +0100] rev 50221
dirstate: use more than a bool to control append behavior When writing dirstate-v2, we might either append to the existing file, or create a new file. We are about to introduce some configuration to control this behavior. As a prelude, we change the current way the behavior was automatically controlled to make the change smaller/clearer.
Fri, 24 Feb 2023 01:15:45 +0100 dirstate: cover each dirstate version when testing for status race stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 24 Feb 2023 01:15:45 +0100] rev 50220
dirstate: cover each dirstate version when testing for status race Previously we were only testing it with the default (dirstate-v1 currently). Now we explicitly test each variant.
Fri, 24 Feb 2023 01:09:11 +0100 dirstate: test a `hg status` raced by another `hg status` stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 24 Feb 2023 01:09:11 +0100] rev 50219
dirstate: test a `hg status` raced by another `hg status` This shows that `rhg` is misbehaving here.
Fri, 24 Feb 2023 01:01:04 +0100 dirstate: test a `hg status` raced by a `hg update` stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 24 Feb 2023 01:01:04 +0100] rev 50218
dirstate: test a `hg status` raced by a `hg update` This shows that `rhg` is misbehaving here.
Fri, 24 Feb 2023 00:55:13 +0100 dirstate: test a `hg status` raced by a `hg commit` stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 24 Feb 2023 00:55:13 +0100] rev 50217
dirstate: test a `hg status` raced by a `hg commit` This shows that `rhg` is misbehaving here.
Fri, 24 Feb 2023 16:12:01 +0100 dirstate: test a `hg status` raced by a `hg add` stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 24 Feb 2023 16:12:01 +0100] rev 50216
dirstate: test a `hg status` raced by a `hg add` This shows that `rhg` is misbehaving here.
(0) -30000 -10000 -3000 -1000 -300 -100 -60 +60 +100 +300 +1000 tip