Wed, 08 Jun 2022 15:46:04 +0200 branching: merge stable into default
Raphaël Gomès <rgomes@octobus.net> [Wed, 08 Jun 2022 15:46:04 +0200] rev 49287
branching: merge stable into default
Thu, 02 Jun 2022 23:57:56 +0200 chg: replace mercurial.util.recvfds() by simpler pure Python implementation
Manuel Jacob <me@manueljacob.de> [Thu, 02 Jun 2022 23:57:56 +0200] rev 49286
chg: replace mercurial.util.recvfds() by simpler pure Python implementation On Python 3, we have socket.socket.recvmsg(). This makes it possible to receive FDs in pure Python code. The new code behaves like the previous implementations, except that it’s more strict about the format of the ancillary data. This works because we know in which format the FDs are passed. Because the code is (and always has been) specific to chg (payload is 1 byte, number of passed FDs is limited) and we now have only one implementation and the code is very short, I decided to stop exposing a function in mercurial.util. Note on terminology: The SCM_RIGHTS mechanism is used to share open file descriptions to another process over a socket. The sending side passes an array of file descriptors and the receiving side receives an array of file descriptors. The file descriptors are different in general on both sides but refer to the same open file descriptions. The two terms are often conflated, even in the official documentation. That’s why I used “FD” above, which could mean both “file descriptor” and “file description”.
Mon, 06 Jun 2022 13:58:32 +0400 parsers: drop one extra argument to PyErr_Format
Anton Shestakov <av6@dwimlabs.net> [Mon, 06 Jun 2022 13:58:32 +0400] rev 49285
parsers: drop one extra argument to PyErr_Format GCC gave the following warning during `make local`: mercurial/cext/parsers.c: In function 'dirstate_item_from_v1_data': mercurial/cext/parsers.c:413:30: warning: too many arguments for format [-Wformat-extra-args] 413 | "unknown state: `%c` (%d, %d, %d)", state, mode, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ To reproduce, you might need to add the -Wformat-extra-args flag, because it isn't present for me when building for the default python3. But I can see this warning while simply building 6.1 with `make PYTHON=python2 clean local`. I don't think this NULL was useful, because other instances of PyErr_Format() don't have any NULLs as the final argument, but keep in mind that I don't know python's C API.
Fri, 03 Jun 2022 17:39:58 +0200 search-discovery-case: update documentation of a function
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 03 Jun 2022 17:39:58 +0200] rev 49284
search-discovery-case: update documentation of a function We return data, it is simpler when we know what these data means.
Sun, 22 May 2022 03:50:34 +0200 worker: avoid potential partial write of pickled data
Manuel Jacob <me@manueljacob.de> [Sun, 22 May 2022 03:50:34 +0200] rev 49283
worker: avoid potential partial write of pickled data Previously, the code wrote the pickled data using os.write(). However, os.write() can write less bytes than passed to it. To trigger the problem, the pickled data had to be larger than 2147479552 bytes on my system. Instead, open a file object and pass it to pickle.dump(). This also has the advantage that it doesn’t buffer the whole pickled data in memory. Note that the opened file must be buffered because pickle doesn’t support unbuffered streams because unbuffered streams’ write() method might write less bytes than passed to it (like os.write()) but pickle.dump() relies on that all bytes are written (see https://github.com/python/cpython/issues/93050). The side effect of using a file object and a with statement is that wfd is explicitly closed now while it seems like before it was implicitly closed by process exit.
Wed, 01 Jun 2022 03:12:23 +0200 mr-template: drop the "title and description"
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 01 Jun 2022 03:12:23 +0200] rev 49282
mr-template: drop the "title and description" I though I would affect the template in the menu itself, however it just a normal piece of text that should not be here.
Wed, 01 Jun 2022 01:32:33 +0200 debugindex: add a `rank` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net> [Wed, 01 Jun 2022 01:32:33 +0200] rev 49281
debugindex: add a `rank` column
Wed, 01 Jun 2022 01:34:33 +0200 debugindex: add a `sd-chunk-size` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net> [Wed, 01 Jun 2022 01:34:33 +0200] rev 49280
debugindex: add a `sd-chunk-size` column
Wed, 01 Jun 2022 01:34:21 +0200 debugindex: add a `sidedata-offset` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net> [Wed, 01 Jun 2022 01:34:21 +0200] rev 49279
debugindex: add a `sidedata-offset` column
Wed, 01 Jun 2022 01:34:43 +0200 debugindex: add a `sd-comp-mode` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net> [Wed, 01 Jun 2022 01:34:43 +0200] rev 49278
debugindex: add a `sd-comp-mode` column
Wed, 01 Jun 2022 01:33:36 +0200 debugindex: add a `chunk-size` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net> [Wed, 01 Jun 2022 01:33:36 +0200] rev 49277
debugindex: add a `chunk-size` column
Wed, 01 Jun 2022 01:33:13 +0200 debugindex: add a `data-offset` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net> [Wed, 01 Jun 2022 01:33:13 +0200] rev 49276
debugindex: add a `data-offset` column
Wed, 01 Jun 2022 01:33:47 +0200 debugindex: add a `comp-mode` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net> [Wed, 01 Jun 2022 01:33:47 +0200] rev 49275
debugindex: add a `comp-mode` column
Wed, 01 Jun 2022 01:33:25 +0200 debugindex: add a `flags` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net> [Wed, 01 Jun 2022 01:33:25 +0200] rev 49274
debugindex: add a `flags` column
Wed, 01 Jun 2022 01:34:10 +0200 debugindex: add a `delta-base` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net> [Wed, 01 Jun 2022 01:34:10 +0200] rev 49273
debugindex: add a `delta-base` column
Wed, 01 Jun 2022 01:43:17 +0200 debugindex: add a `full-size` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net> [Wed, 01 Jun 2022 01:43:17 +0200] rev 49272
debugindex: add a `full-size` column
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 49271
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 49270
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 49269
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 49268
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 49267
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 49266
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 49265
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 49264
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 49263
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 49262
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 49261
revlog: make round-down pattern clearer
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 49260
branching: merge stable into default
(0) -30000 -10000 -3000 -1000 -300 -100 -50 -28 +28 +50 +100 +300 +1000 tip