Mon, 30 May 2022 11:52:31 +0200 chg: ignore already closed fds when cleaning up stable
Raphaël Gomès <rgomes@octobus.net> [Mon, 30 May 2022 11:52:31 +0200] rev 49240
chg: ignore already closed fds when cleaning up This should fix this error we see in the CI from time to time: ``` --- /tmp/mercurial-ci/tests/test-chg.t +++ /tmp/mercurial-ci/tests/test-chg.t.err @@ -187,6 +187,26 @@ $ chg bulkwrite --pager=on --color no --config ui.formatted=True paged! 'going to write massive data\n' killed! (?) + Traceback (most recent call last): + File "/tmp/hgtests._uvojvqb/install/lib/python/mercurial/commandserver.py", line 509, in _serverequest + sv.cleanup() + File "/tmp/hgtests._uvojvqb/install/lib/python/mercurial/chgserver.py", line 382, in cleanup + self._restoreio() + File "/tmp/hgtests._uvojvqb/install/lib/python/mercurial/chgserver.py", line 461, in _restoreio + os.close(fd) + OSError: [Errno 9] Bad file descriptor + Traceback (most recent call last): + File "/tmp/hgtests._uvojvqb/install/lib/python/mercurial/commandserver.py", line 693, in _acceptnewconnection + self._runworker(conn) + File "/tmp/hgtests._uvojvqb/install/lib/python/mercurial/commandserver.py", line 744, in _runworker + prereposetups=[self._reposetup], + File "/tmp/hgtests._uvojvqb/install/lib/python/mercurial/commandserver.py", line 509, in _serverequest + sv.cleanup() + File "/tmp/hgtests._uvojvqb/install/lib/python/mercurial/chgserver.py", line 382, in cleanup + self._restoreio() + File "/tmp/hgtests._uvojvqb/install/lib/python/mercurial/chgserver.py", line 461, in _restoreio + os.close(fd) + OSError: [Errno 9] Bad file descriptor [255] ```
Fri, 27 May 2022 02:54:20 +0200 test-revlog: adds a new root revision with a delta against nullrev
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 27 May 2022 02:54:20 +0200] rev 49239
test-revlog: adds a new root revision with a delta against nullrev We add a revision with null parent but that is not the first revision of the revlog. It make it a different a case that is worthy of testing.
Fri, 27 May 2022 02:52:46 +0200 test-revlog: adds a non-root revision with a delta against nullrev
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 27 May 2022 02:52:46 +0200] rev 49238
test-revlog: adds a non-root revision with a delta against nullrev Using a revision with non-null parents makes it a different case that is worthy of testing.
Fri, 27 May 2022 03:14:23 +0200 test-revlog: update the patch used to test delta againts nullrev
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 27 May 2022 03:14:23 +0200] rev 49237
test-revlog: update the patch used to test delta againts nullrev We need to be careful to not create invalid delta for changelog. Changelog is special because it does not use any delta in practice and don't use general delta in its format. Using the new patch will help use to test more cases.
Fri, 27 May 2022 14:37:12 +0400 tests: remove hg10 requirement from test-check-pylint.t
Anton Shestakov <av6@dwimlabs.net> [Fri, 27 May 2022 14:37:12 +0400] rev 49236
tests: remove hg10 requirement from test-check-pylint.t Since pylint does its own directory traversal to find files to check and doesn't use hg locate command, this requirement is not valid. See also a29f071751df.
Fri, 27 May 2022 14:33:32 +0400 tests: add hg10 requirement to test-check-module-imports.t
Anton Shestakov <av6@dwimlabs.net> [Fri, 27 May 2022 14:33:32 +0400] rev 49235
tests: add hg10 requirement to test-check-module-imports.t This requirement exists to make sure for hg has locate command, which is used in this test file for getting a list of files to check. Since in theory current versions of tests could be run on older hg, it doesn't hurt to mark even this version requirement (as old as it is). See also: a29f071751df.
Sun, 29 May 2022 14:44:19 +0200 tests: work around non-thread-safeness of sysconfig.get_config_var() stable
Manuel Jacob <me@manueljacob.de> [Sun, 29 May 2022 14:44:19 +0200] rev 49234
tests: work around non-thread-safeness of sysconfig.get_config_var()
Sun, 22 May 2022 00:10:58 +0200 worker: implement _blockingreader.readinto() (issue6444)
Manuel Jacob <me@manueljacob.de> [Sun, 22 May 2022 00:10:58 +0200] rev 49233
worker: implement _blockingreader.readinto() (issue6444) The core logic for readinto() was already implemented in read(), so this is mostly extracting that code into its own method. Another fix for issue6444 was committed to the stable branch: 2fe4efaa59af. That is a minimal fix that implements readinto() only on Python versions that require readinto() (3.8.0 and 3.8.1), which is the right approach for the stable branch. However, I think that this changeset has its value. It improves performance in cases when pickle can use readinto(), it reduces code duplication compared to the other patch, and by defining readinto() on all Python versions, it makes behavior more consistent across all Python versions. This changesets reverts the other change.
Sat, 21 May 2022 23:31:30 +0200 worker: stop relying on garbage collection to release memoryview
Manuel Jacob <me@manueljacob.de> [Sat, 21 May 2022 23:31:30 +0200] rev 49232
worker: stop relying on garbage collection to release memoryview On CPython, before resizing the bytearray, all memoryviews referencing it must be released. Before this change, we ensured that all references to them were deleted. On CPython, this was enough to set the reference count to zero, which results in garbage collecting and releasing them. On PyPy, releasing the memoryviews is not necessary because they are implemented differently. If it would be necessary however, ensuring that all references are deleted would not be suffient because PyPy doesn’t use reference counting. By using with statements that take care of releasing the memoryviews, we ensure that the bytearray is resizable without relying on implementation details. So while this doesn’t fix any observable bug, it increases compatiblity with other and future Python implementations.
Sat, 21 May 2022 22:24:02 +0200 worker: add docstring to _blockingreader
Manuel Jacob <me@manueljacob.de> [Sat, 21 May 2022 22:24:02 +0200] rev 49231
worker: add docstring to _blockingreader
Sat, 21 May 2022 22:22:19 +0200 worker: explain why pickle reading stream has to be unbuffered
Manuel Jacob <me@manueljacob.de> [Sat, 21 May 2022 22:22:19 +0200] rev 49230
worker: explain why pickle reading stream has to be unbuffered
Tue, 17 May 2022 13:53:14 +0100 bundle: quick fix to ludicrous performance penalty
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 17 May 2022 13:53:14 +0100] rev 49229
bundle: quick fix to ludicrous performance penalty We tried a `hg bundle --base ':(tip^)' --rev 'all()'` on a large repository and it spent 3 minutes on this 2 list comprehensions. This change remove this cost. There are still a lot of low hanging fruits as the command still take 30 seconds. However this is a trivial patch with a massive speedup so I'll just sent it.
Fri, 20 May 2022 14:27:46 +0200 deltas: add a debug-delta-find command to analyse delta search
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 20 May 2022 14:27:46 +0200] rev 49228
deltas: add a debug-delta-find command to analyse delta search See command documentation for details. For some reason, pytype is confused by our usage of None/deltainfo variable, so I had to quiet it.
Thu, 19 May 2022 23:39:42 +0100 deltas: add a `debug.revlog.debug-delta` config option enable output
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 19 May 2022 23:39:42 +0100] rev 49227
deltas: add a `debug.revlog.debug-delta` config option enable output This provide a way to enable the code introduced in the previous changeset. This will provide a large amount of output when applying a bundle with details about each delta "computation".
Thu, 19 May 2022 23:39:23 +0100 deltas: add code to display information about the result of `finddeltainfo`
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 19 May 2022 23:39:23 +0100] rev 49226
deltas: add code to display information about the result of `finddeltainfo` I have been looking into performance issue around pull and getting more information about the computation and time involved into applying each revision is very useful. There will be various way to use this new output, so I am introducing the code first.
Thu, 21 Apr 2022 11:32:51 +0200 test: update `test-sparse-revlog` output
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 21 Apr 2022 11:32:51 +0200] rev 49225
test: update `test-sparse-revlog` output This got changed at some point.
Wed, 25 May 2022 17:23:16 +0200 branching: fix wrong merge conflict resolution from 13dfad0f9f7a
Manuel Jacob <me@manueljacob.de> [Wed, 25 May 2022 17:23:16 +0200] rev 49224
branching: fix wrong merge conflict resolution from 13dfad0f9f7a 13dfad0f9f7a merged stable into default, but accidentally added the _blockingreader class from stable (but deindented) instead of merging the changes from stable (2fe4efaa59af) into the existing _blockingreader class. This resulted in the _blockingreader being there two times.
Thu, 19 May 2022 00:51:36 +0100 debugdeltachain: detect a special case where parents are "skipped"
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 19 May 2022 00:51:36 +0100] rev 49223
debugdeltachain: detect a special case where parents are "skipped" See inline comment for details, this is a case where the delta is neither against p1 or p2, Yet it is still a simple delta part of a simple chain. We now display them as `skip1/skip2` instead of `other`.
Wed, 18 May 2022 17:29:03 +0100 debugdeltachain: document the possible value for deltatype
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 18 May 2022 17:29:03 +0100] rev 49222
debugdeltachain: document the possible value for deltatype So that one can understand what is displayed by the command.
Wed, 18 May 2022 17:22:32 +0100 debugdeltachain: also display p1/p2
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 18 May 2022 17:22:32 +0100] rev 49221
debugdeltachain: also display p1/p2 Looking at the parents is a common need when trying to understanding why a delta was chosen, having it readily available helps a lot.
Wed, 18 May 2022 16:50:55 +0100 debugdeltachain: glob variance of "test-generaldelta"
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 18 May 2022 16:50:55 +0100] rev 49220
debugdeltachain: glob variance of "test-generaldelta" We mostly care about generaldelta happening, the exact details of storage size variation is not really important so we can glob it instead of having multiple lines for each variances. This will make updating the output of the command simpler.
Wed, 18 May 2022 16:07:55 +0100 debugdeltachain: use the symbolic constant to access entry information
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 18 May 2022 16:07:55 +0100] rev 49219
debugdeltachain: use the symbolic constant to access entry information This is more robust and easier to read
Wed, 18 May 2022 15:55:14 +0100 debugdeltachain: distinct between snapshot and "other" diffs
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 18 May 2022 15:55:14 +0100] rev 49218
debugdeltachain: distinct between snapshot and "other" diffs Snapshot are expected to be healthy behavior, while "other" is a bit more suspicious. So we distinct between the two to make it easier to inspect repositories.
Wed, 25 May 2022 13:28:24 +0200 branching: merge stable into default
Raphaël Gomès <rgomes@octobus.net> [Wed, 25 May 2022 13:28:24 +0200] rev 49217
branching: merge stable into default
Tue, 24 May 2022 11:19:24 +0200 workflow: add a default template for Merge Request stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 24 May 2022 11:19:24 +0200] rev 49216
workflow: add a default template for Merge Request Introduce a first basic template to try the feature.
Tue, 24 May 2022 10:34:42 +0200 run-tests: prevent race-condition when picking a channel stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 24 May 2022 10:34:42 +0200] rev 49215
run-tests: prevent race-condition when picking a channel Before this, multiple jobs could search the list at the same time and pick the same free channel. We now project this search/assignment with a simple lock.
Tue, 24 May 2022 09:57:53 +0200 run-tests: send the test result after freeing the channel stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 24 May 2022 09:57:53 +0200] rev 49214
run-tests: send the test result after freeing the channel Sending the message about the test being "done" signals to the main thread that a new test can be started. Before this changeset, we sent this signal before freeing the channel, there is room for a race condition where a new test would search for a channel before the old test freed the one it used. This is an example of the failure it would produce: https://foss.heptapod.net/mercurial/mercurial-devel/-/jobs/552404
Tue, 24 May 2022 09:36:40 +0200 run-tests: also send a message in the Keyboard interrupt case stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 24 May 2022 09:36:40 +0200] rev 49213
run-tests: also send a message in the Keyboard interrupt case The next patch will do something equivalent, so lets do the change in an independant changeset first in case we need to bisect something in the future.
Tue, 24 May 2022 19:09:24 +0400 revlog: use appropriate format char for int ("i" instead of "I")
Anton Shestakov <av6@dwimlabs.net> [Tue, 24 May 2022 19:09:24 +0400] rev 49212
revlog: use appropriate format char for int ("i" instead of "I") From https://docs.python.org/3.8/c-api/arg.html#numbers : i (int) [int] Convert a Python integer to a plain C int. I (int) [unsigned int] Convert a Python integer to a C unsigned int, without overflow checking.
Tue, 17 May 2022 21:49:36 +0400 revlog: use %d to format int instead of %lu (issue6565)
Anton Shestakov <av6@dwimlabs.net> [Tue, 17 May 2022 21:49:36 +0400] rev 49211
revlog: use %d to format int instead of %lu (issue6565) The issue says gcc warns that the data types don't match. I couldn't reproduce the warning locally for some reason, but this patch shouldn't break things. Maybe %lu was simply a copy-paste error from 6b1eae313b2f (https://phab.mercurial-scm.org/D10625).
Sun, 22 May 2022 14:21:59 +0200 rhg: correctly handle the case where diffs are encoded relative to nullrev stable
Arseniy Alekseyev <aalekseyev@janestreet.com> [Sun, 22 May 2022 14:21:59 +0200] rev 49210
rhg: correctly handle the case where diffs are encoded relative to nullrev returning a valid entry for nullrev fix chain that delta against nullrev.
Sun, 22 May 2022 23:26:06 +0200 test-revlog: test a repository that contains a diff against nullrev stable
Arseniy Alekseyev <aalekseyev@janestreet.com> [Sun, 22 May 2022 23:26:06 +0200] rev 49209
test-revlog: test a repository that contains a diff against nullrev We are witnessing a crash in the rust code, so we lets make sure this case is tested.
Tue, 17 May 2022 14:36:57 -0400 worker: adapt _blockingreader to work around a python3.8.[0-1] bug (issue6444) stable
Matt Harbison <matt_harbison@yahoo.com> [Tue, 17 May 2022 14:36:57 -0400] rev 49208
worker: adapt _blockingreader to work around a python3.8.[0-1] bug (issue6444) Python 3.8.0 is the latest I can load on Ubuntu 18.04, and I regularly hit the TypeError because this function is missing. While it can be avoided by disabling worker usage via config option, that's a bit obscure. I'm limiting the function definition to the narrow range of affected pythons because there were other bugs in this area that were worked around, that I don't fully understand. See the bug report for discussions on why the narrow range, and related commits working around other bugs. Differential Revision: https://phab.mercurial-scm.org/D12627
Tue, 06 Apr 2021 03:24:26 +0200 filelog: show the passed argument on error
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 06 Apr 2021 03:24:26 +0200] rev 49207
filelog: show the passed argument on error The error now do more than stating what it need. It also state what it got.
Tue, 06 Apr 2021 03:23:46 +0200 manifest: improve error message in case for tree manifest
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 06 Apr 2021 03:23:46 +0200] rev 49206
manifest: improve error message in case for tree manifest In the case where tree manifest is not enabled but we still receive an sub directory information for the manifest. The error now inform which sub-directory was passed.
Wed, 04 May 2022 13:53:12 +0400 doc: use an absolute path in sys.path stable
Anton Shestakov <av6@dwimlabs.net> [Wed, 04 May 2022 13:53:12 +0400] rev 49205
doc: use an absolute path in sys.path The idea and rationale is similar to https://phab.mercurial-scm.org/D12599 (landed as 1b6e381521c5). Differential Revision: https://phab.mercurial-scm.org/D12622
Wed, 04 May 2022 13:48:40 +0400 check-py3-compat: use an absolute path in sys.path stable
Anton Shestakov <av6@dwimlabs.net> [Wed, 04 May 2022 13:48:40 +0400] rev 49204
check-py3-compat: use an absolute path in sys.path The idea and rationale is similar to https://phab.mercurial-scm.org/D12599 (landed as 1b6e381521c5). Differential Revision: https://phab.mercurial-scm.org/D12621
Fri, 13 May 2022 15:19:57 +0200 branchmap: use a context manager when writing the branchmap
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 13 May 2022 15:19:57 +0200] rev 49203
branchmap: use a context manager when writing the branchmap This is cleaner and safer. The previous code date from long before we had context manager available.
Thu, 19 May 2022 12:23:38 +0100 rhg: align the dirstate v2 writing algorithm with python stable
Arseniy Alekseyev <aalekseyev@janestreet.com> [Thu, 19 May 2022 12:23:38 +0100] rev 49202
rhg: align the dirstate v2 writing algorithm with python Use the same algorithm of file append as python does, where we do a manual seek instead of relying on O_APPEND. (see the reasons in the inline comment)
Tue, 17 May 2022 14:59:25 +0100 test-dirstate: actually test the append code path in dirstate v2 stable
Arseniy Alekseyev <aalekseyev@janestreet.com> [Tue, 17 May 2022 14:59:25 +0100] rev 49201
test-dirstate: actually test the append code path in dirstate v2 Apparently it's not sufficient to modify a file to force the dirstate write-out, so the append code path was untested. By removing a file instead of changing we're forcing append to happen.
Tue, 05 Apr 2022 05:01:58 +0200 auto-upgrade: skip the operation if the repository cannot be locked
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 05 Apr 2022 05:01:58 +0200] rev 49200
auto-upgrade: skip the operation if the repository cannot be locked This seems like a fine default behavior for now. If some users wants something more aggressive we can make the behavior configurable in the future. Differential Revision: https://phab.mercurial-scm.org/D12619
Tue, 05 Apr 2022 04:45:48 +0200 auto-upgrade: add a test case where the repository is already locked
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 05 Apr 2022 04:45:48 +0200] rev 49199
auto-upgrade: add a test case where the repository is already locked This show the current behavior when the repository to auto-upgrade is already locked. The current behavior is to abort, which is probably not great. Now that we have a proper test, we can think about the behavior we wants in a later tests. Differential Revision: https://phab.mercurial-scm.org/D12618
Tue, 05 Apr 2022 04:43:34 +0200 wait-on-file: properly wait on any files and symlink
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 05 Apr 2022 04:43:34 +0200] rev 49198
wait-on-file: properly wait on any files and symlink This make the utility more useful, for example to wait on a lock file. We also add an explicit -L check since the lock are "weird" symlink. Differential Revision: https://phab.mercurial-scm.org/D12617
Tue, 05 Apr 2022 04:41:09 +0200 debuglock: make the command more useful in non-interactive mode
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 05 Apr 2022 04:41:09 +0200] rev 49197
debuglock: make the command more useful in non-interactive mode The existing prompt mode simply release the lock immediately in non-interactive mode. That is quite useless in the test so now the non-interactive mode simply wait for a signal. Differential Revision: https://phab.mercurial-scm.org/D12616
Tue, 05 Apr 2022 03:36:31 +0200 auto-upgrade: add a test case with no permission to lock the repository
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 05 Apr 2022 03:36:31 +0200] rev 49196
auto-upgrade: add a test case with no permission to lock the repository This show the current behavior when the repository is unlockable. The current behavior is to abort, which is probably not great. Now that we have a proper test, we can think about the behavior we want in a later changeset. Differential Revision: https://phab.mercurial-scm.org/D12615
Tue, 22 Mar 2022 14:14:52 +0100 auto-upgrade: introduce a way to auto-upgrade to/from dirstate-v2
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 22 Mar 2022 14:14:52 +0100] rev 49195
auto-upgrade: introduce a way to auto-upgrade to/from dirstate-v2 This is similar to what we introduced for `share-safe`, but apply to the tracked-hint feature. Differential Revision: https://phab.mercurial-scm.org/D12614
Tue, 05 Apr 2022 05:20:05 +0200 auto-upgrade: introduce a way to auto-upgrade to/from tracked-hint
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 05 Apr 2022 05:20:05 +0200] rev 49194
auto-upgrade: introduce a way to auto-upgrade to/from tracked-hint This is similar to what we introduced for `share-safe`, but apply to the tracked-hint feature. Differential Revision: https://phab.mercurial-scm.org/D12613
Mon, 04 Apr 2022 19:30:32 +0200 upgrade: split some logic from UpgradeOperation
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 04 Apr 2022 19:30:32 +0200] rev 49193
upgrade: split some logic from UpgradeOperation The logic for automatic-upgrade and the upgrade-repo should be able to use the same code. However that code often need an UpgradeOperation object to function. So we start spliting the Operation into a minimal component that we will be able to reuse outside of the "classic" upgrade path. We will put the base-class to use in the next changeset. Differential Revision: https://phab.mercurial-scm.org/D12612
Tue, 05 Apr 2022 05:19:47 +0200 auto-upgrade: introduce a way to auto-upgrade to/from share-safe
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 05 Apr 2022 05:19:47 +0200] rev 49192
auto-upgrade: introduce a way to auto-upgrade to/from share-safe This is the first "automatic-upgrade" capability. In the following commits, similar features are coming for other "fast to upgrade" formats. This is different from the `safe-mismatch.source-not-safe` and `safe-mismatch.source-safe` configuration that deal with mismatch between a share and its share-source. Here we are dealing with mismatch between a repository configuration and its actual format. We will need further work for cases were the repository cannot be locked. A basic protection is in place to avoid a infinite loop for now, but it will get proper attention in a later changeset. Differential Revision: https://phab.mercurial-scm.org/D12611
Fri, 15 Apr 2022 22:02:07 +0200 rust: make requirements public
Raphaël Gomès <rgomes@octobus.net> [Fri, 15 Apr 2022 22:02:07 +0200] rev 49191
rust: make requirements public These can be used by any client crates (including `rhg`), no need to make them private to the crate. Differential Revision: https://phab.mercurial-scm.org/D12610
Tue, 10 May 2022 20:30:26 +0100 clone: use better names for temp files
Arseniy Alekseyev <aalekseyev@janestreet.com> [Tue, 10 May 2022 20:30:26 +0100] rev 49190
clone: use better names for temp files Before this commit, the file names are /tmp/tmpn8smvlr8 After this commit, they are more like /tmp/hg-clone-n8smvlr8/00manifest.ndb3qj52v6, which makes it much clearer what these files correspond to. Differential Revision: https://phab.mercurial-scm.org/D12623
Mon, 02 May 2022 16:27:14 +0400 tests: make sure .js files stay in ASCII encoding (issue6559)
Anton Shestakov <av6@dwimlabs.net> [Mon, 02 May 2022 16:27:14 +0400] rev 49189
tests: make sure .js files stay in ASCII encoding (issue6559) Differential Revision: https://phab.mercurial-scm.org/D12620
Fri, 13 May 2022 15:48:53 +0200 ci: have rust-cargo-test inherit from all
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 13 May 2022 15:48:53 +0200] rev 49188
ci: have rust-cargo-test inherit from all This help changing configuration for everything at the same time. This was initially the case before being dropped by mistake in 0ddd5e1f5f67.
Thu, 19 May 2022 01:34:51 +0100 copies-sdc: mark upgrade action as changelog only
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 19 May 2022 01:34:51 +0100] rev 49187
copies-sdc: mark upgrade action as changelog only We don't need to recompute the other revlog to add the changelog-v2 feature. This simplify upgrade that use copies-sdc (as shown in the tests).
Thu, 19 May 2022 01:24:16 +0100 changelog-v2: mark upgrade action as changelog only
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 19 May 2022 01:24:16 +0100] rev 49186
changelog-v2: mark upgrade action as changelog only We don't need to recompute the others revlog to add the changelog-v2 feature. This does not have much effect in practice as the `copies-sdc` upgrade still triggers the other revlogs. This will be fixed in the next changeset.
Thu, 19 May 2022 01:40:37 +0100 copies-sdc: no longer suppress the upgrade output
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 19 May 2022 01:40:37 +0100] rev 49185
copies-sdc: no longer suppress the upgrade output To make sure the upgrade simplification we need are taken into account, we need to see more of the output of `debugupgraderepo`. The --quiet flag simplify the output a lot and globing the `preserved` field mean this output should remains stable across (future) unrelated changes.
Thu, 19 May 2022 01:37:59 +0100 copies-sdc: no longer use revlogv2 in `test-copies-in-changeset.t`
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 19 May 2022 01:37:59 +0100] rev 49184
copies-sdc: no longer use revlogv2 in `test-copies-in-changeset.t` We only need changelog-v2 and its usage is automatically inferred. So we can simplify the test by dropping this. This is important to test future simplification of the update process in the coming changesets.
Mon, 16 May 2022 23:12:49 +0100 fix-ci: backed out changeset 308e45f7b455
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 16 May 2022 23:12:49 +0100] rev 49183
fix-ci: backed out changeset 308e45f7b455 The chg variant of the CI see a failure on `tests/test-narrow-pull.t`. Bisecting point the failure as starting at this small changeset… Backing it out, restore the CI on default. It was never broken on stable, which is even more puzzling.
Tue, 17 May 2022 12:05:09 +0100 branching: merge stable into default
Raphaël Gomès <rgomes@octobus.net> [Tue, 17 May 2022 12:05:09 +0100] rev 49182
branching: merge stable into default
Tue, 17 May 2022 00:09:51 +0100 ci: do not trigger phabricator for merge-request stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 17 May 2022 00:09:51 +0100] rev 49181
ci: do not trigger phabricator for merge-request The fast the phabricator steps has a `rules` entry makes it selected for the special `merge_requests` pipelines. The other ones behave as default and are not selected tot the mrege_request pipelines. This result in a second pipeline to be created, with only the phabricator pipeline in it. Which usually succeed fast (since there is nothing to do). This is harmful as this create a false sense of "the series is passing" and Gitlab will use this simplistic pipeline for validation. By explicitly preventing the pipeline to be created in the merge-request case, we prevent this situation to happens Note that the job will be dropped (alonside phabricator) in the next two weeks anyway.
Thu, 12 May 2022 07:36:37 -0700 branching: merge with stable
Martin von Zweigbergk <martinvonz@google.com> [Thu, 12 May 2022 07:36:37 -0700] rev 49180
branching: merge with stable
Wed, 11 May 2022 17:56:29 -0700 amend: stop specifying matcher, get all copies in wctx stable
Kyle Lippincott <spectral@google.com> [Wed, 11 May 2022 17:56:29 -0700] rev 49179
amend: stop specifying matcher, get all copies in wctx When we're recreating the commit that we'll be committing, we don't want to filter our copy information based on just the *new* [versions of the] files we're amending. The test has an example of this case, but for clarity, the situation is: ``` $ hg cp src dst && hg commit <do some work> $ hg amend some_unrelated_file.txt $ hg status --copies A dst A some_unrelated_file.txt ``` What *should* happen is that `dst` should remain marked as a copy of `src`, but this did not previously happen. `matcher` here only includes the files that were specified on the commandline, so it only gets the copy information (if any, in this example there's not) for `some_unrelated_file.txt`. When it goes to apply the memctx to actually create the commit, the file copy information is incomplete and loses the information for the files that shouldn't have been affected at all by the amend. Differential Revision: https://phab.mercurial-scm.org/D12625
Wed, 11 May 2022 17:56:10 -0700 amend: add test showing poor behavior when copies are involved stable
Kyle Lippincott <spectral@google.com> [Wed, 11 May 2022 17:56:10 -0700] rev 49178
amend: add test showing poor behavior when copies are involved Differential Revision: https://phab.mercurial-scm.org/D12624
Thu, 21 Apr 2022 10:39:52 -0700 rust-repo: make `Send` by not storing functions in `LazyCell`
Martin von Zweigbergk <martinvonz@google.com> [Thu, 21 Apr 2022 10:39:52 -0700] rev 49177
rust-repo: make `Send` by not storing functions in `LazyCell` We (Google) want to use `Repo` in a context where we can store it in `Mutex<Repo>`. However, that currently doesn't work because it's not `Send` because the `LazyCell` initialization functions are not `Send`. It's easy to fix that by passing them to the `get_or_init()` and `get_mut_or_init()` functions. We'll probably also want `Repo` to be `Send` (and even `Sync`) in core later, so this seems like a step in the right direction. Differential Revision: https://phab.mercurial-scm.org/D12582
Thu, 05 May 2022 14:45:28 -0400 obsolete: remove two unused constants
Augie Fackler <augie@google.com> [Thu, 05 May 2022 14:45:28 -0400] rev 49176
obsolete: remove two unused constants I'm not sure what these constants were intended for, but they have no users so it's time to say goodbye. Differential Revision: https://phab.mercurial-scm.org/D12609
Thu, 05 May 2022 14:47:26 -0400 node: manually implement Debug
Augie Fackler <augie@google.com> [Thu, 05 May 2022 14:47:26 -0400] rev 49175
node: manually implement Debug I got too irritated today with the default Debug implementation of hg::revlog::Node while playing with a new parser. This isn't quite what I wanted, but it wasn't much code and it at least gives you output that's easy to visually compare to a node.hex()ed identifier from the Python side of things. Sadly, this doesn't influence the output in lldb or the VSCode debugger extension that uses lldb under the covers, but it at least means debug prints are a little more useful. Differential Revision: https://phab.mercurial-scm.org/D12608
Thu, 05 May 2022 15:38:29 +0100 censor: make rhg fall back to python when encountering a censored node
Arseniy Alekseyev <aalekseyev@janestreet.com> [Thu, 05 May 2022 15:38:29 +0100] rev 49174
censor: make rhg fall back to python when encountering a censored node This is to make it support censor.policy=ignore without having to duplicate that logic. Also, change the censor test in such a way that it uses rhg now, because extensions are disabled except when we call [hg censor]. Differential Revision: https://phab.mercurial-scm.org/D12607
Wed, 04 May 2022 16:01:55 -0400 contrib: migrate off of a couple of bitbucket URLs
Matt Harbison <matt_harbison@yahoo.com> [Wed, 04 May 2022 16:01:55 -0400] rev 49173
contrib: migrate off of a couple of bitbucket URLs I noticed this when diffing the thg installer against Mercurial to see what was missing. There are a handful of other URLs in i18n and extension example help text if anyone cares to update those. Differential Revision: https://phab.mercurial-scm.org/D12606
Wed, 04 May 2022 13:39:49 -0400 diff: add help text to highlight the ability to do "merge diffs"
Matt Harbison <matt_harbison@yahoo.com> [Wed, 04 May 2022 13:39:49 -0400] rev 49172
diff: add help text to highlight the ability to do "merge diffs" Differential Revision: https://phab.mercurial-scm.org/D12605
Mon, 02 May 2022 12:10:28 +0400 followlines: don't put Unicode directly into the .js file (issue6559)
Anton Shestakov <av6@dwimlabs.net> [Mon, 02 May 2022 12:10:28 +0400] rev 49171
followlines: don't put Unicode directly into the .js file (issue6559) Apparently some web server setups may serve this file in a different encoding than UTF-8, and that results in visual garbage in the followlines button that renders for every line in a file. So instead of using this Unicode character in UTF-8 we can encode it as \u2212. Or, to be more explicit, we can use &minus; HTML entity, which resolves into exactly that character. Since now we're using innerHTML property to set the minus part of the button, let's use it to set the plus part as well (even though the plus sign was plain ASCII). A wise man once said "A foolish consistency is the hobgob... eh, whatever." Throw a brick at me if this makes things worse. Differential Revision: https://phab.mercurial-scm.org/D12597
Thu, 28 Apr 2022 11:20:17 -0400 wix: bump the minimum Windows required to 8.1
Matt Harbison <matt_harbison@yahoo.com> [Thu, 28 Apr 2022 11:20:17 -0400] rev 49170
wix: bump the minimum Windows required to 8.1 PyOxidizer binaries are built with py 3.9.6, so not even Windows 7 is supported. Unfortunately, there don't appear to be more recent values for newer versions of Windows, but at least Windows 8.1 is still in extended support for another 9 months or so. Differential Revision: https://phab.mercurial-scm.org/D12596
Thu, 28 Apr 2022 11:01:41 -0400 wix: drop python2 conditionals
Matt Harbison <matt_harbison@yahoo.com> [Thu, 28 Apr 2022 11:01:41 -0400] rev 49169
wix: drop python2 conditionals Differential Revision: https://phab.mercurial-scm.org/D12595
Wed, 27 Apr 2022 19:45:19 +0400 tests: fix misspelling of supersede
Anton Shestakov <av6@dwimlabs.net> [Wed, 27 Apr 2022 19:45:19 +0400] rev 49168
tests: fix misspelling of supersede Differential Revision: https://phab.mercurial-scm.org/D12589
Tue, 26 Apr 2022 09:06:30 -0700 filemerge: add configs to disable some or all partial merge tools
Martin von Zweigbergk <martinvonz@google.com> [Tue, 26 Apr 2022 09:06:30 -0700] rev 49167
filemerge: add configs to disable some or all partial merge tools When rolling out partial merge tools to users, it's useful to be able to easily turn one or all of them off if a problem is discovered. This patch adds support for that. They can of course also be useful for individual users to be able to temporarily turn off a tool they are otherwise using. Differential Revision: https://phab.mercurial-scm.org/D12588
Wed, 04 May 2022 17:40:23 +0100 censor: fix [hg update] away from a revision with censored files stable
Arseniy Alekseyev <aalekseyev@janestreet.com> [Wed, 04 May 2022 17:40:23 +0100] rev 49166
censor: fix [hg update] away from a revision with censored files Differential Revision: https://phab.mercurial-scm.org/D12604
Fri, 22 Apr 2022 14:39:00 +0100 censor: demonstrate a bug stable
Arseniy Alekseyev <aalekseyev@janestreet.com> [Fri, 22 Apr 2022 14:39:00 +0100] rev 49165
censor: demonstrate a bug Differential Revision: https://phab.mercurial-scm.org/D12584
Wed, 04 May 2022 18:17:44 +0200 branching: merge stable into default
Raphaël Gomès <rgomes@octobus.net> [Wed, 04 May 2022 18:17:44 +0200] rev 49164
branching: merge stable into default
Wed, 04 May 2022 18:04:46 +0200 Added signature for changeset 0ddd5e1f5f67 stable
Raphaël Gomès <rgomes@octobus.net> [Wed, 04 May 2022 18:04:46 +0200] rev 49163
Added signature for changeset 0ddd5e1f5f67
Wed, 04 May 2022 18:04:06 +0200 Added tag 6.1.2 for changeset 0ddd5e1f5f67 stable
Raphaël Gomès <rgomes@octobus.net> [Wed, 04 May 2022 18:04:06 +0200] rev 49162
Added tag 6.1.2 for changeset 0ddd5e1f5f67
Wed, 04 May 2022 18:00:01 +0200 ci: remove py2-rust support stable 6.1.2
Raphaël Gomès <rgomes@octobus.net> [Wed, 04 May 2022 18:00:01 +0200] rev 49161
ci: remove py2-rust support Nobody cares about this very narrow usecase, and py2 support is over by July 1st. This helps with the CI load, and removes some flakiness.
Wed, 04 May 2022 17:45:20 +0200 relnotes: add release notes for 6.1.2 stable
Raphaël Gomès <rgomes@octobus.net> [Wed, 04 May 2022 17:45:20 +0200] rev 49160
relnotes: add release notes for 6.1.2
Tue, 03 May 2022 12:41:21 +0200 docs: use proper rst markup for preformatted blocks stable
Mads Kiilerich <mads@kiilerich.com> [Tue, 03 May 2022 12:41:21 +0200] rev 49159
docs: use proper rst markup for preformatted blocks The multiple lines were re-flowed to a single line, both in man page and html.
Wed, 04 May 2022 15:49:20 +0200 test-dirstate: print something when the check is skipped stable
Raphaël Gomès <rgomes@octobus.net> [Wed, 04 May 2022 15:49:20 +0200] rev 49158
test-dirstate: print something when the check is skipped This makes a programming error obvious in cases when it should not be skipped Differential Revision: https://phab.mercurial-scm.org/D12602
Wed, 04 May 2022 15:48:13 +0200 test-dirstate: fix detection of Rust environment variable stable
Raphaël Gomès <rgomes@octobus.net> [Wed, 04 May 2022 15:48:13 +0200] rev 49157
test-dirstate: fix detection of Rust environment variable The Rust path never actually worked. This change also improves clarity of the comment. The next change will ensure we print something when this check fails. Differential Revision: https://phab.mercurial-scm.org/D12601
Thu, 28 Apr 2022 17:15:35 +0200 rust-dirstate-v2: fix the unused bytes counter when rewriting the dirstate stable
Raphaël Gomès <rgomes@octobus.net> [Thu, 28 Apr 2022 17:15:35 +0200] rev 49156
rust-dirstate-v2: fix the unused bytes counter when rewriting the dirstate As per the previous patch, the counter was incorrectly carried over from the old docket when it should be reset for a complete rewrite. Differential Revision: https://phab.mercurial-scm.org/D12594
Thu, 28 Apr 2022 17:11:51 +0200 rust-dirstate-v2: show `unused_bytes` counter is not reset on total rewrite stable
Raphaël Gomès <rgomes@octobus.net> [Thu, 28 Apr 2022 17:11:51 +0200] rev 49155
rust-dirstate-v2: show `unused_bytes` counter is not reset on total rewrite This was picked up by @aalekseyev when doing unrelated debugging. The Rust implementation was never resetting this counter, so a brand new file would carry over the old counter. As I write this, my counter is a supposed 7389089 unused bytes for a total of 170978 bytes in the data file. Feel free to post your own high score. Differential Revision: https://phab.mercurial-scm.org/D12593
Thu, 28 Apr 2022 16:24:55 +0200 test-dirstate: use new `--docket` flag to get the data uuid stable
Raphaël Gomès <rgomes@octobus.net> [Thu, 28 Apr 2022 16:24:55 +0200] rev 49154
test-dirstate: use new `--docket` flag to get the data uuid This is more robust. Differential Revision: https://phab.mercurial-scm.org/D12592
Thu, 28 Apr 2022 15:22:08 +0200 debugcommands: remove `debugdirstateignorepatternhash` stable
Raphaël Gomès <rgomes@octobus.net> [Thu, 28 Apr 2022 15:22:08 +0200] rev 49153
debugcommands: remove `debugdirstateignorepatternhash` This is replaced by the more complete `--docket` option to `debugstate`. Differential Revision: https://phab.mercurial-scm.org/D12591
Thu, 28 Apr 2022 15:19:19 +0200 dirstate-v2: add flag to `debugstate` to print docket information stable
Raphaël Gomès <rgomes@octobus.net> [Thu, 28 Apr 2022 15:19:19 +0200] rev 49152
dirstate-v2: add flag to `debugstate` to print docket information This is useful information that we don't easily have access to currently, unless you speak fluent xxd. This replaces `debugdirstateignorepatternshash`, which I'll remove in the next changeset. Differential Revision: https://phab.mercurial-scm.org/D12590
Mon, 02 May 2022 22:04:59 -0400 doc: use an absolute path in sys.path to work around a python DLL loading bug stable
Matt Harbison <matt_harbison@yahoo.com> [Mon, 02 May 2022 22:04:59 -0400] rev 49151
doc: use an absolute path in sys.path to work around a python DLL loading bug This bug[1] was causing the zstd entry under "Available Compression Engines" to be omitted from the documentation for some versions of python3. I could upgrade, but past upgrades have broken venvs and clobbered installed packages. It's a trivial workaround, so there's no sense in leaving this subtle issue. It was flushed out by changing the module policy here from 'allow' to 'c', and seeing this error: ImportError: DLL load failed while importing parsers: The parameter is incorrect. [1] https://github.com/python/cpython/issues/87271 Differential Revision: https://phab.mercurial-scm.org/D12599
Mon, 25 Apr 2022 16:45:03 +0200 rhg: fix dirstate-v2 data file removal system stable
Raphaël Gomès <rgomes@octobus.net> [Mon, 25 Apr 2022 16:45:03 +0200] rev 49150
rhg: fix dirstate-v2 data file removal system In D12581 I introduced logic to remove the previous dirstate-v2 data file after a new one is created (and its corresponding docket), but the logic was flawed. I fixed it and made it simpler to understand by gather all logic in a single expression. Differential Revision: https://phab.mercurial-scm.org/D12586
Tue, 19 Apr 2022 12:27:40 +0200 rhg: use `Command::exec` instead of `Command::status` stable
Raphaël Gomès <rgomes@octobus.net> [Tue, 19 Apr 2022 12:27:40 +0200] rev 49149
rhg: use `Command::exec` instead of `Command::status` `rhg` is supposed to be a transparent executable, using a subprocess defeats that purpose. See inline comments for more details. This also introduces the `which` crate to check if the fallback executable actually exists to help debugging (plain `execve` doesn't give much information). The error code 253 is used to signify that the fallback is not found, but may mean in the future that it is otherwise invalid if we start being more specific. Differential Revision: https://phab.mercurial-scm.org/D12578
Wed, 27 Apr 2022 15:47:57 +0200 commit: don't use hard-coded `.hg/last-message.txt` path in error message stable
Martin von Zweigbergk <martinvonz@google.com> [Wed, 27 Apr 2022 15:47:57 +0200] rev 49148
commit: don't use hard-coded `.hg/last-message.txt` path in error message Whoever wrote D8463 just used a hard-coded path to `.hg/last-message.text` instead of using the relative path that was already available in the `msgfn` variable (and used just a few lines up in related message). Let's fix that. Differential Revision: https://phab.mercurial-scm.org/D12585
Mon, 25 Apr 2022 11:09:33 +0200 branching: merge stable into default
Raphaël Gomès <rgomes@octobus.net> [Mon, 25 Apr 2022 11:09:33 +0200] rev 49147
branching: merge stable into default This also added the small fix need in Rust tests for the new `DirstateMap::pack_v2` API change in stable.
Thu, 21 Apr 2022 15:10:57 +0200 rust-dirstate-v2: clean up previous data file after the docket is written stable
Raphaël Gomès <rgomes@octobus.net> [Thu, 21 Apr 2022 15:10:57 +0200] rev 49146
rust-dirstate-v2: clean up previous data file after the docket is written This was overlooked before and caused many data files to keep living forever. We could potentially consider adding a random cleanup of them in case they slipped through one day. Differential Revision: https://phab.mercurial-scm.org/D12581
Thu, 21 Apr 2022 14:47:13 +0200 rust-dirstate-v2: save proper data size if no new data on append stable
Raphaël Gomès <rgomes@octobus.net> [Thu, 21 Apr 2022 14:47:13 +0200] rev 49145
rust-dirstate-v2: save proper data size if no new data on append This is currently only triggered with the tests ran with `--rhg` without `--rust`, by "luck", there probably always was something to write, like an mtime when also using Rust extensions alongside `rhg`. Differential Revision: https://phab.mercurial-scm.org/D12580
Tue, 19 Apr 2022 12:17:23 -0700 amend: move "return None for removed files" into block handling filestoamend
Kyle Lippincott <spectral@google.com> [Tue, 19 Apr 2022 12:17:23 -0700] rev 49144
amend: move "return None for removed files" into block handling filestoamend This is just a small logic cleanup from D12573, no change in behavior. Differential Revision: https://phab.mercurial-scm.org/D12576
Tue, 12 Apr 2022 17:35:25 +0200 rust-dirstatemap: remove unused helper from the old API
Raphaël Gomès <rgomes@octobus.net> [Tue, 12 Apr 2022 17:35:25 +0200] rev 49143
rust-dirstatemap: remove unused helper from the old API Differential Revision: https://phab.mercurial-scm.org/D12541
Tue, 12 Apr 2022 17:35:02 +0200 rust-status: stop using `state()` in the dispatch logic
Raphaël Gomès <rgomes@octobus.net> [Tue, 12 Apr 2022 17:35:02 +0200] rev 49142
rust-status: stop using `state()` in the dispatch logic Let's use the new API. Differential Revision: https://phab.mercurial-scm.org/D12540
Tue, 12 Apr 2022 17:34:18 +0200 rust-status: stop using `state()` in `handle_normal_file`
Raphaël Gomès <rgomes@octobus.net> [Tue, 12 Apr 2022 17:34:18 +0200] rev 49141
rust-status: stop using `state()` in `handle_normal_file` Let's use the new API Differential Revision: https://phab.mercurial-scm.org/D12539
Tue, 12 Apr 2022 17:30:34 +0200 rust-dirstatemap: stop using `state()` in the cache logic
Raphaël Gomès <rgomes@octobus.net> [Tue, 12 Apr 2022 17:30:34 +0200] rev 49140
rust-dirstatemap: stop using `state()` in the cache logic Let's use the new API Differential Revision: https://phab.mercurial-scm.org/D12538
Tue, 12 Apr 2022 16:24:25 +0200 rust-dirstatemap: stop using `.state` in `is_from_other_parent`
Raphaël Gomès <rgomes@octobus.net> [Tue, 12 Apr 2022 16:24:25 +0200] rev 49139
rust-dirstatemap: stop using `.state` in `is_from_other_parent` This is a deprecated API and will be removed one day. Differential Revision: https://phab.mercurial-scm.org/D12537
Tue, 12 Apr 2022 17:29:21 +0200 rust-dirstate-entry: add `modified` method
Raphaël Gomès <rgomes@octobus.net> [Tue, 12 Apr 2022 17:29:21 +0200] rev 49138
rust-dirstate-entry: add `modified` method This will also be used in other places later in the series. Differential Revision: https://phab.mercurial-scm.org/D12536
Tue, 12 Apr 2022 17:27:56 +0200 rust: remove use of `EntryState` in `DirsMultiset`
Raphaël Gomès <rgomes@octobus.net> [Tue, 12 Apr 2022 17:27:56 +0200] rev 49137
rust: remove use of `EntryState` in `DirsMultiset` Let's use the new API. Differential Revision: https://phab.mercurial-scm.org/D12535
Tue, 12 Apr 2022 17:26:23 +0200 rust: use `entry.tracked()` directly
Raphaël Gomès <rgomes@octobus.net> [Tue, 12 Apr 2022 17:26:23 +0200] rev 49136
rust: use `entry.tracked()` directly This is the new API Differential Revision: https://phab.mercurial-scm.org/D12534
Tue, 12 Apr 2022 17:25:38 +0200 rust-hg-cpython: remove use of `EntryState`
Raphaël Gomès <rgomes@octobus.net> [Tue, 12 Apr 2022 17:25:38 +0200] rev 49135
rust-hg-cpython: remove use of `EntryState` Let's use the new API Differential Revision: https://phab.mercurial-scm.org/D12533
Fri, 08 Apr 2022 18:10:12 +0200 rust-dirstatemap: use a checked sub instead of a potentially underflowing one
Raphaël Gomès <rgomes@octobus.net> [Fri, 08 Apr 2022 18:10:12 +0200] rev 49134
rust-dirstatemap: use a checked sub instead of a potentially underflowing one This was missed in 2593873cda0f Differential Revision: https://phab.mercurial-scm.org/D12532
Fri, 08 Apr 2022 17:55:03 +0200 rust-dirstatemap: add simpler version of `get_node_mut`
Raphaël Gomès <rgomes@octobus.net> [Fri, 08 Apr 2022 17:55:03 +0200] rev 49133
rust-dirstatemap: add simpler version of `get_node_mut` This will help reduce code and footgun potential for simpler callers. Differential Revision: https://phab.mercurial-scm.org/D12531
Fri, 08 Apr 2022 17:22:39 +0200 rust-dirstatemap: use `get_node_mut` instead or `get_or_insert_node`
Raphaël Gomès <rgomes@octobus.net> [Fri, 08 Apr 2022 17:22:39 +0200] rev 49132
rust-dirstatemap: use `get_node_mut` instead or `get_or_insert_node` This (along with the docstring), makes it more obvious that we're not expecting to insert a node here. This is less prone to bugs in later refactorings. Differential Revision: https://phab.mercurial-scm.org/D12530
Fri, 08 Apr 2022 16:56:52 +0200 rust-dirstatemap: add `each_ancestor` argument to `get_node_mut`
Raphaël Gomès <rgomes@octobus.net> [Fri, 08 Apr 2022 16:56:52 +0200] rev 49131
rust-dirstatemap: add `each_ancestor` argument to `get_node_mut` This forces the callers to think about if the counters in the ancestors need to be adjusted. Differential Revision: https://phab.mercurial-scm.org/D12529
Fri, 08 Apr 2022 16:53:06 +0200 rust-dirstatemap: add simpler method `get_or_insert_node` for the common case
Raphaël Gomès <rgomes@octobus.net> [Fri, 08 Apr 2022 16:53:06 +0200] rev 49130
rust-dirstatemap: add simpler method `get_or_insert_node` for the common case All but one case use the exact same input for most arguments, this simplifies code and reduces footgun potential. Differential Revision: https://phab.mercurial-scm.org/D12528
Fri, 08 Apr 2022 16:05:47 +0200 rust-dirstatemap: inline the last `get_or_insert` call
Raphaël Gomès <rgomes@octobus.net> [Fri, 08 Apr 2022 16:05:47 +0200] rev 49129
rust-dirstatemap: inline the last `get_or_insert` call The `get_or_insert` method was dangerous because it did not take the `DirstateMap` counters into account. This particular instance does not need to update the counters. Differential Revision: https://phab.mercurial-scm.org/D12527
Fri, 08 Apr 2022 16:04:17 +0200 rust-dirstatemap: add `set_cached_mtime` helper method
Raphaël Gomès <rgomes@octobus.net> [Fri, 08 Apr 2022 16:04:17 +0200] rev 49128
rust-dirstatemap: add `set_cached_mtime` helper method This will help remove the `get_or_insert` method, which is dangerous because it does not take the `DirstateMap` counters into account Differential Revision: https://phab.mercurial-scm.org/D12526
Fri, 08 Apr 2022 16:03:39 +0200 rust-dirstatemap: add `clear_cached_mtime` helper method
Raphaël Gomès <rgomes@octobus.net> [Fri, 08 Apr 2022 16:03:39 +0200] rev 49127
rust-dirstatemap: add `clear_cached_mtime` helper method This will help remove the `get_or_insert` method, which is dangerous because it does not take the `DirstateMap` counters into account. Differential Revision: https://phab.mercurial-scm.org/D12525
Tue, 29 Mar 2022 18:21:40 +0200 rust-dirstatemap: add unit tests
Raphaël Gomès <rgomes@octobus.net> [Tue, 29 Mar 2022 18:21:40 +0200] rev 49126
rust-dirstatemap: add unit tests These were missing and have already proven valuable since they have found two bugs (fixed in previous patches). There may be other behavior to test, but this gives us a decent coverage. Differential Revision: https://phab.mercurial-scm.org/D12524
Tue, 29 Mar 2022 17:27:36 +0200 rust: add `Debug` trait to a bunch of structs
Raphaël Gomès <rgomes@octobus.net> [Tue, 29 Mar 2022 17:27:36 +0200] rev 49125
rust: add `Debug` trait to a bunch of structs This is useful when... debugging. Right now the output is not in the most readable state it could be, but this is very low effort and is good enough for now. We may want to write a nicer custom debug formatter for some of those structs in the future. Differential Revision: https://phab.mercurial-scm.org/D12523
Wed, 30 Mar 2022 11:39:53 +0200 rust-dirstatemap: use `&HgPath` instead of `HgPathBuf` in `copy_map_insert`
Raphaël Gomès <rgomes@octobus.net> [Wed, 30 Mar 2022 11:39:53 +0200] rev 49124
rust-dirstatemap: use `&HgPath` instead of `HgPathBuf` in `copy_map_insert` No reason to require an owned path here. Differential Revision: https://phab.mercurial-scm.org/D12522
Tue, 29 Mar 2022 17:23:24 +0200 rust-dirstatemap: use `DirstateEntry::tracked` directly
Raphaël Gomès <rgomes@octobus.net> [Tue, 29 Mar 2022 17:23:24 +0200] rev 49123
rust-dirstatemap: use `DirstateEntry::tracked` directly `state()` is a legacy API that will be removed at some point, let's use the newer API. Differential Revision: https://phab.mercurial-scm.org/D12521
Tue, 29 Mar 2022 00:58:58 +0200 rust-cpython: remove unused API to `drop_entry_and_copy_source`
Raphaël Gomès <rgomes@octobus.net> [Tue, 29 Mar 2022 00:58:58 +0200] rev 49122
rust-cpython: remove unused API to `drop_entry_and_copy_source` This is not used anywhere anymore and its use cases are covered by the new API Differential Revision: https://phab.mercurial-scm.org/D12520
Tue, 29 Mar 2022 00:57:06 +0200 rust-dirstatemap: remove `set_dirstate_entry`/`set_entry` methods
Raphaël Gomès <rgomes@octobus.net> [Tue, 29 Mar 2022 00:57:06 +0200] rev 49121
rust-dirstatemap: remove `set_dirstate_entry`/`set_entry` methods These methods were needed crutches before the Rust implementation caught up to Python. Calling `set_entry` (whether from Python or Rust) was dangerous since it didn't update any of the counters of the DirstateMap data structure, while having no real way of knowing when to use it "correctly" except it you were one of the 3 people who looked deep enough into the soul of this code. Differential Revision: https://phab.mercurial-scm.org/D12519
(0) -30000 -10000 -3000 -1000 -120 +120 +1000 +3000 tip