Wed, 02 Feb 2022 17:24:05 +0100 branching: merge stable into default
Raphaël Gomès <rgomes@octobus.net> [Wed, 02 Feb 2022 17:24:05 +0100] rev 48695
branching: merge stable into default
Wed, 26 Jan 2022 15:32:18 -0800 arbitraryfilectx: use our existing helpers for reading and writing files
Martin von Zweigbergk <martinvonz@google.com> [Wed, 26 Jan 2022 15:32:18 -0800] rev 48694
arbitraryfilectx: use our existing helpers for reading and writing files Differential Revision: https://phab.mercurial-scm.org/D12090
Thu, 11 Feb 2021 22:52:43 -0800 fix: remove unnecessary and overly strict check for divergence
Martin von Zweigbergk <martinvonz@google.com> [Thu, 11 Feb 2021 22:52:43 -0800] rev 48693
fix: remove unnecessary and overly strict check for divergence `rewriteutil.precheck()` checks for divergence these days, so we can remove the redundant check in `hg fix`. Differential Revision: https://phab.mercurial-scm.org/D12088
Wed, 26 Jan 2022 10:11:01 -0800 encoding: fix trim() to be O(n) instead of O(n^2)
Martin von Zweigbergk <martinvonz@google.com> [Wed, 26 Jan 2022 10:11:01 -0800] rev 48692
encoding: fix trim() to be O(n) instead of O(n^2) `encoding.trim()` iterated over the possible lengths smaller than the input and created a slice for each. It then calculated the column width of the result, which is of course O(n), so the overall algorithm was O(n). This patch rewrites it to iterate over the unicode characters, keeping track of the length so far. Also, the old algorithm started from the end of the string, which made it much worse when the input is large and the limit is small (such as the typical 72 we pass to it). You can time it by running something like this: ``` time python3 -c 'from mercurial.utils import stringutil; print(stringutil.ellipsis(b"0123456789" * 1000, 5))' ``` That drops from 4.05 s to 83 ms with this patch (and most of that is of course startup time). Differential Revision: https://phab.mercurial-scm.org/D12089
Tue, 11 Jan 2022 21:40:08 +0100 share-safe: enable by default (BC)
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 11 Jan 2022 21:40:08 +0100] rev 48691
share-safe: enable by default (BC) The feature have been around for a year (4 version) and is quite important. Lets make it enabled by default. Differential Revision: https://phab.mercurial-scm.org/D11997
Tue, 11 Jan 2022 09:56:03 +0100 share-safe: add support for static-http repository
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 11 Jan 2022 09:56:03 +0100] rev 48690
share-safe: add support for static-http repository We need to read the second requirements file in the static-http case too. Otherwise, static-http would miss most of the requirements and misbehave. Differential Revision: https://phab.mercurial-scm.org/D11996
Tue, 11 Jan 2022 09:36:10 +0100 legacy-revlog: fix requirement computation when cloning legacy repo
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 11 Jan 2022 09:36:10 +0100] rev 48689
legacy-revlog: fix requirement computation when cloning legacy repo The oldest format of repository does not have requirements so we need to treat them differently when cloning such repository. The previous code had issue whenever we start using a working-copy-only requirements. The "legacy" format is signaled using an empty requirements list. If we add working-copy-only requirements to it, this is no longer empty, and no longer legacy. The new code fix this, and will get fully tested in a couple of changeset, once the share-safe become the default. Differential Revision: https://phab.mercurial-scm.org/D11995
Mon, 10 Jan 2022 12:48:35 +0100 requirements: do not warn about dropping share-safe, unless explicitly set
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 10 Jan 2022 12:48:35 +0100] rev 48688
requirements: do not warn about dropping share-safe, unless explicitly set If we are just altering the default value, this is "fine". This will get tested once share-safe become the default. Differential Revision: https://phab.mercurial-scm.org/D11994
Tue, 11 Jan 2022 06:40:44 +0100 sparse: take lock before writing requirements
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 11 Jan 2022 06:40:44 +0100] rev 48687
sparse: take lock before writing requirements with `share-safe`, we will also write file in the store. So we take the `lock` before altering the requirements. Differential Revision: https://phab.mercurial-scm.org/D11993
Fri, 07 Jan 2022 16:30:11 +0100 largefiles: take lock before writing requirements
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 07 Jan 2022 16:30:11 +0100] rev 48686
largefiles: take lock before writing requirements With `share-safe`, we will also write file in the store. We now take the `lock` as needed. Differential Revision: https://phab.mercurial-scm.org/D11992
Fri, 07 Jan 2022 17:33:27 +0100 lfs: take lock before writing requirements
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 07 Jan 2022 17:33:27 +0100] rev 48685
lfs: take lock before writing requirements With `share-safe`, we will also write file in the store, so we take the store lock before writing requirements. Differential Revision: https://phab.mercurial-scm.org/D11991
Tue, 11 Jan 2022 06:32:18 +0100 test: simpler requirements matching in test-repo-compengines.t
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 11 Jan 2022 06:32:18 +0100] rev 48684
test: simpler requirements matching in test-repo-compengines.t We focus on the requirements relevant for this tests. Differential Revision: https://phab.mercurial-scm.org/D11990
Mon, 10 Jan 2022 19:52:07 +0100 test: simpler requirements matching in test-lfs-largefiles.t
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 10 Jan 2022 19:52:07 +0100] rev 48683
test: simpler requirements matching in test-lfs-largefiles.t We focus on the requirements relevant for this tests. Differential Revision: https://phab.mercurial-scm.org/D11989
Mon, 10 Jan 2022 12:06:42 +0100 test: simpler requirements matching in test-sidedata.t
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 10 Jan 2022 12:06:42 +0100] rev 48682
test: simpler requirements matching in test-sidedata.t We focus on the requirements relevant for this tests. Differential Revision: https://phab.mercurial-scm.org/D11988
Mon, 10 Jan 2022 11:58:33 +0100 test: simpler requirement matching in test-revlog-v2.t
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 10 Jan 2022 11:58:33 +0100] rev 48681
test: simpler requirement matching in test-revlog-v2.t We narrow the matching toward the one we actually care about. Differential Revision: https://phab.mercurial-scm.org/D11987
Mon, 10 Jan 2022 19:46:54 +0100 test-copies: narrow the format check in test-copies-in-changeset.t
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 10 Jan 2022 19:46:54 +0100] rev 48680
test-copies: narrow the format check in test-copies-in-changeset.t This will reduce the noise when touching unrelated format variants. Differential Revision: https://phab.mercurial-scm.org/D11986
Fri, 07 Jan 2022 17:32:25 +0100 tests: use debugrequires instead of grepping the file directly
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 07 Jan 2022 17:32:25 +0100] rev 48679
tests: use debugrequires instead of grepping the file directly With `share-safe`, the requirements are stored in multiple files so it seems better to use the command that retrieve the information wherever it is. Differential Revision: https://phab.mercurial-scm.org/D11985
Tue, 11 Jan 2022 16:32:38 +0100 tests: use debugrequires in test-upgrade-repo.t
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 11 Jan 2022 16:32:38 +0100] rev 48678
tests: use debugrequires in test-upgrade-repo.t Whenever possible, we use the `hg debugrequires` command instead of directly grepping the file. Differential Revision: https://phab.mercurial-scm.org/D11984
Thu, 06 Jan 2022 17:15:49 +0100 test: do not use `which` to find an exec path in the test
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 06 Jan 2022 17:15:49 +0100] rev 48677
test: do not use `which` to find an exec path in the test Posix is deprecated `which` in favor of `command -v`… which does not provide the same feature. Debian is warning about this deprecation and this get annoying. Differential Revision: https://phab.mercurial-scm.org/D11983
Fri, 14 Jan 2022 18:17:55 +0100 stream-clone: stop considering working copy only requirements
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 14 Jan 2022 18:17:55 +0100] rev 48676
stream-clone: stop considering working copy only requirements Now that the ducks are properly aligned on there shelve, it becomes easy to fix the list of requirements to consider for stream. We remove the working copy specific ones and add some missing revlog specific ones. Differential Revision: https://phab.mercurial-scm.org/D11982
Tue, 18 Jan 2022 00:19:04 +0100 stream-clone: also filter the requirement we put in the bundle 2
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 18 Jan 2022 00:19:04 +0100] rev 48675
stream-clone: also filter the requirement we put in the bundle 2 We were wrongly putting irrelevant requirements in the bundle and the receiving side was getting confused, treating them as being missing while still putting them in the `requires` file. Leading do corrupted repositories. This changes fix stream-clone behavior regarding format when bundle-2 is involved, so we now also test this cases. Behavior with older version of Mercurial will be fine as they filter the requirements they get from the bundle on their side anyway. Differential Revision: https://phab.mercurial-scm.org/D12084
Mon, 24 Jan 2022 12:44:20 +0100 requirements: add an official `REVLOG_COMPRESSION_ZSTD` const
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 24 Jan 2022 12:44:20 +0100] rev 48674
requirements: add an official `REVLOG_COMPRESSION_ZSTD` const Such constant was missing and its value was missing from the set of requirements that needs to be preserved through stream clone. This did not had any consequence yet as the "bundle 2 does not filter its requirements" is shadowing the issue. However we are now in a situation where we can fix this issue. So lets do it next. With the preparation work on test, changing the streamreqs value only impact two tests, where checking the full value seems to remains relevant. Important note: Since older version of Mercurial used the old `supportedformat` class attribute to check for stream requirement they supported, older version will consider this requirements to prevent them from using streaming clone. Even as they support this requirements for years. Pack for stable will be send to fix it, but they will have to be backported to older version if needed. Differential Revision: https://phab.mercurial-scm.org/D12083
Tue, 18 Jan 2022 20:35:04 +0100 stream-requirements: smoother matching in test-http-protocol.t
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 18 Jan 2022 20:35:04 +0100] rev 48673
stream-requirements: smoother matching in test-http-protocol.t The value of `streamreqs` changes depending of the format used, but this is not relevant for this tests. So we doing a smarter matching of the line to avoid this test interfering with format changes in the future. Differential Revision: https://phab.mercurial-scm.org/D12082
Tue, 18 Jan 2022 12:21:13 +0100 stream-requirements: smoother matching in test-ssh-bundle1.t
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 18 Jan 2022 12:21:13 +0100] rev 48672
stream-requirements: smoother matching in test-ssh-bundle1.t The value of `streamreqs` changes depending of the format used, but this is not relevant for this tests. So we doing a smarter matching of the line to avoid this test interfering with format changes in the future. Differential Revision: https://phab.mercurial-scm.org/D12081
Tue, 18 Jan 2022 12:02:50 +0100 stream-requirements: smoother matching in test-ssh-proto.t
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 18 Jan 2022 12:02:50 +0100] rev 48671
stream-requirements: smoother matching in test-ssh-proto.t The value of `streamreqs` changes depending of the format used, but this is not relevant for this tests. So we doing a smarter matching of the line to avoid this test interfering with format changes in the future. Differential Revision: https://phab.mercurial-scm.org/D12080
Tue, 18 Jan 2022 10:50:20 +0100 stream-requirements: smoother matching in test-hgweb-commands.t
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 18 Jan 2022 10:50:20 +0100] rev 48670
stream-requirements: smoother matching in test-hgweb-commands.t The value of `streamreqs` changes depending of the format used, but this is not relevant for this tests. So we doing a smarter matching of the line to avoid this test interfering with format changes in the future. Differential Revision: https://phab.mercurial-scm.org/D12079
Tue, 18 Jan 2022 10:50:08 +0100 stream-requirements: smoother matching in test-treemanifest.t
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 18 Jan 2022 10:50:08 +0100] rev 48669
stream-requirements: smoother matching in test-treemanifest.t The value of `streamreqs` changes depending of the format used, but this is not relevant for this tests. So we doing a smarter matching of the line to avoid this test interfering with format changes in the future. Differential Revision: https://phab.mercurial-scm.org/D12078
Tue, 18 Jan 2022 10:49:43 +0100 stream-requirements: smoother matching in test-ssh-proto-unbundle.t
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 18 Jan 2022 10:49:43 +0100] rev 48668
stream-requirements: smoother matching in test-ssh-proto-unbundle.t The value of `streamreqs` changes depending of the format used, but this is not relevant for this tests. So we doing a smarter matching of the line to avoid this test interfering with format changes in the future. Differential Revision: https://phab.mercurial-scm.org/D12077
Mon, 24 Jan 2022 12:58:18 +0100 test-bundle: split some variant in there own section
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 24 Jan 2022 12:58:18 +0100] rev 48667
test-bundle: split some variant in there own section Same rational as the previous commit about test-bundle.t. These line are quite volatile and having dedicated block will make their update clearer and simpler. Differential Revision: https://phab.mercurial-scm.org/D12076
Tue, 18 Jan 2022 15:27:51 +0100 test-bundle: split each variant in there own section
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 18 Jan 2022 15:27:51 +0100] rev 48666
test-bundle: split each variant in there own section Having conditional line matching for this kind of big block is quite inconvenient to update. The new way should be simpler to maintain. Differential Revision: https://phab.mercurial-scm.org/D12075
(0) -30000 -10000 -3000 -1000 -300 -100 -50 -30 +30 +50 +100 +300 +1000 +3000 tip