Wed, 01 Jun 2022 01:32:54 +0200 debugindex: add a `p2-rev` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net> [Wed, 01 Jun 2022 01:32:54 +0200] rev 49256
debugindex: add a `p2-rev` column This will be useful in case of corrupted index.
Wed, 01 Jun 2022 01:32:45 +0200 debugindex: add a `p1-rev` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net> [Wed, 01 Jun 2022 01:32:45 +0200] rev 49255
debugindex: add a `p1-rev` column This will be useful in case of corrupted index.
Wed, 01 Jun 2022 00:54:19 +0200 debugindex: introduce a concept of "verbose-only" column
Pierre-Yves DAVID <pierre-yves.david@octobus.net> [Wed, 01 Jun 2022 00:54:19 +0200] rev 49254
debugindex: introduce a concept of "verbose-only" column We are about to add a bunch of new column and most of them are probably only relevant to --verbose. We add some more testing of the `--verbose` mode in a sidedata context.
Wed, 01 Jun 2022 00:59:44 +0200 debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 01 Jun 2022 00:59:44 +0200] rev 49253
debugindex: move to a flexible column Each column is now declared as a decorated function. This will make it much simpler to add more new column in the future.
Wed, 01 Jun 2022 01:13:13 +0200 debugindex: rename the parent column to mention nodeid
Pierre-Yves DAVID <pierre-yves.david@octobus.net> [Wed, 01 Jun 2022 01:13:13 +0200] rev 49252
debugindex: rename the parent column to mention nodeid We will add new columns with the "revnum" version of the parent. It will be useful in case we need to inspect a corrupted revlog index.
Wed, 01 Jun 2022 00:59:51 +0200 debugindex: align column name on the right
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 01 Jun 2022 00:59:51 +0200] rev 49251
debugindex: align column name on the right It will be simpler to align everything on the same side, and the right seems a better side as it match the value alignment.
Mon, 30 May 2022 23:24:14 +0200 debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 30 May 2022 23:24:14 +0200] rev 49250
debugindex: move the logic into its own module Adding more information will significantly increase the amount of code. So we move the code into its own module before making it more complex.
Mon, 30 May 2022 11:30:48 +0200 debugindex: rename to debugindex debug-revlog-index
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 30 May 2022 11:30:48 +0200] rev 49249
debugindex: rename to debugindex debug-revlog-index The command dump some content of the revlog index and omit a lot of information. I am going to make it display the missing information. For clarity, we rename the command to explicitly mention revlog.
Mon, 30 May 2022 16:18:12 +0200 node: stop converting binascii.Error to TypeError in bin()
Manuel Jacob <me@manueljacob.de> [Mon, 30 May 2022 16:18:12 +0200] rev 49248
node: stop converting binascii.Error to TypeError in bin() Changeset f574cc00831a introduced the wrapper, to make bin() behave like on Python 2, where it raised TypeError in many cases. Another previous approach, changing callers to catch binascii.Error in addition to TypeError, was backed out after negative review feedback [1]. However, I think it’s worth reconsidering the approach. Now that we’re on Python 3 only, callers have to catch only binascii.Error instead of both. Catching binascii.Error instead of TypeError has the advantage that it’s less likely to cover a programming error (e.g. passing an int to bin() raises TypeError). Also, raising TypeError never made sense semantically when bin() got an argument of valid type. As a side-effect, this fixed an exception in test-http-bad-server.t. The TODO was outdated: it was not an uncaught ValueError in batch.results() but uncaught TypeError from the now removed wrapper. Now that bin() raises binascii.Error instead of TypeError, it gets converted to a proper error in wirepeer.heads.<locals>.decode() that catches ValueError (superclass of binascii.Error). This is a good example of why this changeset is a good idea. Catching TypeError instead of ValueError there would not make much sense. [1] https://phab.mercurial-scm.org/D2244
Mon, 30 May 2022 00:45:00 +0200 revlog: make try block smaller
Manuel Jacob <me@manueljacob.de> [Mon, 30 May 2022 00:45:00 +0200] rev 49247
revlog: make try block smaller Making try blocks as small as possible is generally a good idea, especially when catching very general errors like TypeError.
Mon, 30 May 2022 00:39:53 +0200 revlog: make round-down pattern clearer
Manuel Jacob <me@manueljacob.de> [Mon, 30 May 2022 00:39:53 +0200] rev 49246
revlog: make round-down pattern clearer
Tue, 24 May 2022 14:29:44 +0200 rust: relax im-rc dependency to allow minor updates stable
Mads Kiilerich <mads@kiilerich.com> [Tue, 24 May 2022 14:29:44 +0200] rev 49245
rust: relax im-rc dependency to allow minor updates This "15.0.*" requirement came from 0d99778af68a and is now replaced with plain "15.0". AFAICS, it really should allow (but not necessarily require) im-rc 15.1 . Narrow requirement requirements with wildcard in the version is not used in other places.
Thu, 02 Jun 2022 16:24:06 +0200 branching: merge stable into default
Raphaël Gomès <rgomes@octobus.net> [Thu, 02 Jun 2022 16:24:06 +0200] rev 49244
branching: merge stable into default
Thu, 02 Jun 2022 16:19:39 +0200 Added signature for changeset 6b10151b9621 stable
Raphaël Gomès <rgomes@octobus.net> [Thu, 02 Jun 2022 16:19:39 +0200] rev 49243
Added signature for changeset 6b10151b9621
Thu, 02 Jun 2022 16:19:31 +0200 Added tag 6.1.3 for changeset 6b10151b9621 stable
Raphaël Gomès <rgomes@octobus.net> [Thu, 02 Jun 2022 16:19:31 +0200] rev 49242
Added tag 6.1.3 for changeset 6b10151b9621
Tue, 03 May 2022 21:44:30 -0400 narrow_widen_acl: enforce narrowacl in narrow_widen (SEC) stable 6.1.3
Sandu Turcan <idlsoft@gmail.com> [Tue, 03 May 2022 21:44:30 -0400] rev 49241
narrow_widen_acl: enforce narrowacl in narrow_widen (SEC) Reviewer note: this was sent by the author as a simple bugfix, but can be considered a security patch, since it allows users to access things outside of the ACL, hence the (SEC) prefix. However, this affects the `narrow` extention which is still marked as experimental and has relatively few users aside from large companies with their own security layers on top from what we can gather. We feel (Alphare: or at least, I feel) like pinging the packaging list is enough in this case.
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.
(0) -30000 -10000 -3000 -1000 -300 -100 -48 +48 +100 +300 +1000 tip