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 48673
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 48672
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 48671
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
Mon, 24 Jan 2022 11:49:06 +0100 stream-clone: filter possible missing requirements using all supported one stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 24 Jan 2022 11:49:06 +0100] rev 48670
stream-clone: filter possible missing requirements using all supported one The `supportedformat` requirements is missing some important requirements and it seems better to filter out with all requirements we know, not just an "arbitrary" subset. The `supportedformat` set is lacking some important requirements (for example `revlog-compression-zstd`). This is getting fixed on default (for Mercurial 6.1) However, fixing that in 6.1 means the stream requirements sent over the wire will contains more items. And if we don't apply this fix on older version, they might end up complaining about lacking support for feature they actually support for years. This patch does not fix the deeper problem (advertised stream requirement lacking some of them), but focus on the trivial part : Lets use the full set of supported requirement for looking for unsupported ones. This patch should be simple to backport to older version of Mercurial and packager should be encouraged to do so. This is a graft of d9017df70135 from default. Differential Revision: https://phab.mercurial-scm.org/D12091
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 48669
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 48668
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 48667
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 48666
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 48665
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 48664
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
(0) -30000 -10000 -3000 -1000 -300 -100 -10 +10 +100 +300 +1000 +3000 tip