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.
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.
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.
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()
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.
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.
Manuel Jacob <me@manueljacob.de> [Sat, 21 May 2022 22:24:02 +0200] rev 49231
worker: add docstring to _blockingreader
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
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.
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.
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".
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.
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.
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.
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`.
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.
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.
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.
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
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.
Raphaël Gomès <rgomes@octobus.net> [Wed, 25 May 2022 13:28:24 +0200] rev 49217
branching: merge stable into default
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.
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.
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