Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Feb 2022 13:19:21 -0700] rev 48858
tests: collapse elif PYTHON3 block
PYTHON3 is always True now so this logic should be identical as to before.
Differential Revision: https://phab.mercurial-scm.org/D12236
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Feb 2022 13:16:44 -0700] rev 48857
tests: collapse some more trivial if PYTHON3 blocks
This doesn't account for all of the references to PYTHON3. But it
accounts for the ones that are more trivial and don't entail logical
changes.
Differential Revision: https://phab.mercurial-scm.org/D12235
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Feb 2022 11:57:59 -0700] rev 48856
tests: require Python 3.5+ in run-tests.py
We change the version check logic to hard fail if running on
<= 3.5.0. The branch for <3.5 has been deleted. And the >=3.5
branch block has been dedented.
Differential Revision: https://phab.mercurial-scm.org/D12234
pacien <pacien.trangirard@pacien.net> [Mon, 21 Feb 2022 16:18:39 +0100] rev 48855
revlog: use rust rank computation if available
Differential Revision: https://phab.mercurial-scm.org/D12212
pacien <pacien.trangirard@pacien.net> [Mon, 21 Feb 2022 16:18:06 +0100] rev 48854
rust: expose rank computation function to python
Differential Revision: https://phab.mercurial-scm.org/D12211
pacien <pacien.trangirard@pacien.net> [Mon, 21 Feb 2022 18:06:02 +0100] rev 48853
rust: implement vcsgraph::RankedGraph for Index
Differential Revision: https://phab.mercurial-scm.org/D12210
pacien <pacien.trangirard@pacien.net> [Mon, 21 Feb 2022 18:05:54 +0100] rev 48852
revlog: implement fast_rank retrieval in C
This will be useful in particular to avoid going through the Python interpreter
in native Rust functions.
Differential Revision: https://phab.mercurial-scm.org/D12209
pacien <pacien.trangirard@pacien.net> [Mon, 21 Feb 2022 15:53:03 +0100] rev 48851
revlog: return 0 for the fast_rank of nullrev
By convention, the rank of the null revision is 0. This particular revision is
never "physically" stored in the changelog, so it is a special case.
For consistency, the value `None` is still being returned for revlogs which do
not store the fast_rank property for any revision.
Differential Revision: https://phab.mercurial-scm.org/D12208
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 02 Mar 2022 18:42:00 -0800] rev 48850
setup: drop support for Python 3.5
We talked about this on the mailing list [1] and there seemed to be
agreement that Python 3.5 is effectively dead and no longer worth
supporting.
So this commit changes our minimum version requirement to 3.6.2.
[1] https://www.mercurial-scm.org/pipermail/mercurial-devel/2022-February/147885.html
Differential Revision: https://phab.mercurial-scm.org/D12315
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Feb 2022 22:14:41 -0700] rev 48849
packaging: remove requirements constraints to support Python 2
We just deleted support for Python 2 from the packaging code. We no longer
need these package constraints in the requirements file to support Python 2.
Differential Revision: https://phab.mercurial-scm.org/D12267
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Feb 2022 22:13:11 -0700] rev 48848
packaging: remove py2exe / Python 2.7 support
This commit started by deleting references to py2exe (which is only used
on Python 2). After pulling the thread, quite a lot of code was orphaned
and was deleted.
Differential Revision: https://phab.mercurial-scm.org/D12265
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Feb 2022 18:42:12 -0700] rev 48847
automation: delete code related to Python 2.7 support
The building of Inno and WiX installers took a python_version argument
that allowed us to specify "2" or "3" for the major Python version. Since
we no longer support Python 2, we can delete this argument and everything
feeding into it.
Differential Revision: https://phab.mercurial-scm.org/D12264
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Feb 2022 18:42:31 -0700] rev 48846
automation: drop support for Python 2.7 in Windows environment
We stop installing Python 2.7 in the Windows environment.
We remove support for building Python 2.7 wheels and installers.
There is still some Python 2.7 support cleanup to perform in automation.
But this removes the biggest remaining chunk of references to 2.7.
Differential Revision: https://phab.mercurial-scm.org/D12263
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Feb 2022 18:18:35 -0700] rev 48845
automation: drop support for Python 2.7 in Linux environment
We stop installing Python 2.7 via pyenv. We stop installing the system
Python 2 packages. We delete support for running tests on Python 2.7.
Differential Revision: https://phab.mercurial-scm.org/D12262
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Feb 2022 18:17:14 -0700] rev 48844
automation: make system3 the default for run-tests-linux
We'll soon drop support for Python 2.7. Let's use Python 3 by
default.
Differential Revision: https://phab.mercurial-scm.org/D12261
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Feb 2022 18:04:49 -0700] rev 48843
automation: run hg with python3
Python 2.7 support will go away soon. Let's use Python 3 as part of
the automation.
Differential Revision: https://phab.mercurial-scm.org/D12260
Simon Sapin <simon.sapin@octobus.net> [Thu, 03 Mar 2022 07:53:11 +0100] rev 48842
rust: enable Python 3 support unconditionally
Note: `cpython/python3-sys` is a default feature.
Differential Revision: https://phab.mercurial-scm.org/D12316
Yuya Nishihara <yuya@tcha.org> [Thu, 03 Mar 2022 09:45:21 +0900] rev 48841
cext: really remove Python 2 file handling code
Disclaimer: This is _WIN32 code and I have no machine to test.
Yuya Nishihara <yuya@tcha.org> [Thu, 03 Mar 2022 09:43:10 +0900] rev 48840
cext: backout
e9ca736f5b52 "remove Python 2 file handling code"
It's if"n"def.
Augie Fackler <augie@google.com> [Wed, 02 Mar 2022 10:32:36 -0500] rev 48839
rust: jettison Python 2 support
Differential Revision: https://phab.mercurial-scm.org/D12283
Augie Fackler <augie@google.com> [Wed, 02 Mar 2022 10:30:37 -0500] rev 48838
setup: always decode xcode version
Not decoding was a Python 2 thing.
Differential Revision: https://phab.mercurial-scm.org/D12282
Augie Fackler <augie@google.com> [Wed, 02 Mar 2022 10:29:54 -0500] rev 48837
setup: remove Rust support for Python 2
Differential Revision: https://phab.mercurial-scm.org/D12281
Augie Fackler <augie@google.com> [Wed, 02 Mar 2022 10:25:11 -0500] rev 48836
cleanup: stop bundling concurrent.futures on Python 2
We no longer support Python 2.
Differential Revision: https://phab.mercurial-scm.org/D12280
Augie Fackler <augie@google.com> [Wed, 02 Mar 2022 10:24:49 -0500] rev 48835
cleanup: directly use concurrent.futures instead of via pycompat
Python 2 is gone.
Differential Revision: https://phab.mercurial-scm.org/D12279
Augie Fackler <augie@google.com> [Wed, 02 Mar 2022 10:23:53 -0500] rev 48834
imports: allow importing futures from concurrent
Differential Revision: https://phab.mercurial-scm.org/D12278
Augie Fackler <augie@google.com> [Wed, 02 Mar 2022 10:14:24 -0500] rev 48833
setup: remove pygit2 Python 2 logic
Differential Revision: https://phab.mercurial-scm.org/D12277
Augie Fackler <augie@google.com> [Wed, 02 Mar 2022 10:13:45 -0500] rev 48832
setup: inline now-constant list
This varied when we supported Python 2.
Differential Revision: https://phab.mercurial-scm.org/D12276
Augie Fackler <augie@google.com> [Wed, 02 Mar 2022 10:13:09 -0500] rev 48831
setup: unconditionally do this python 3 step
Differential Revision: https://phab.mercurial-scm.org/D12275
Augie Fackler <augie@google.com> [Wed, 02 Mar 2022 10:12:48 -0500] rev 48830
setup: remove Python 2 support code for determining dylib suffix
Differential Revision: https://phab.mercurial-scm.org/D12274
Augie Fackler <augie@google.com> [Wed, 02 Mar 2022 10:12:17 -0500] rev 48829
setup: inline os.fsdecode now that we're done with Python 2
Differential Revision: https://phab.mercurial-scm.org/D12273
Augie Fackler <augie@google.com> [Wed, 02 Mar 2022 10:11:37 -0500] rev 48828
setup: inline encoding constant that is only used once
This was variable back when we supported Python 2.
Differential Revision: https://phab.mercurial-scm.org/D12272
Augie Fackler <augie@google.com> [Wed, 02 Mar 2022 10:07:49 -0500] rev 48827
setup: remove printf trampoline
Differential Revision: https://phab.mercurial-scm.org/D12271
Augie Fackler <augie@google.com> [Wed, 02 Mar 2022 10:07:21 -0500] rev 48826
setup: remove more Python 2 support code
I'll inline print() etc in future patches.
Differential Revision: https://phab.mercurial-scm.org/D12270
Augie Fackler <augie@google.com> [Wed, 02 Mar 2022 10:06:37 -0500] rev 48825
setup: remove ssl check that only matters on 2.7
Differential Revision: https://phab.mercurial-scm.org/D12269
Augie Fackler <augie@google.com> [Wed, 02 Mar 2022 10:05:45 -0500] rev 48824
setup: remove block that tries to help Python 2.6 users
It's time to move on folks.
Differential Revision: https://phab.mercurial-scm.org/D12268
Augie Fackler <augie@google.com> [Wed, 02 Mar 2022 10:04:04 -0500] rev 48823
setup: drop statement of support for Python before 3.5.3
🎉🎉
Differential Revision: https://phab.mercurial-scm.org/D12266
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Feb 2022 16:11:21 -0700] rev 48822
cext: remove inline rewriting of argv
This only worked on Python 2. And since we dropped support for Python 2,
we can drop support for this functionality.
Differential Revision: https://phab.mercurial-scm.org/D12233
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Feb 2022 16:09:02 -0700] rev 48821
cext: remove PY23()
Since we always run on Python 3 now, we no longer need this
macro to support Python 2. We refactor all users to just use
the 2nd argument.
Differential Revision: https://phab.mercurial-scm.org/D12232
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Feb 2022 16:13:57 -0700] rev 48820
cext: unconditionalize PySlice_GetIndicesEx()
We only support Python 3 now.
Differential Revision: https://phab.mercurial-scm.org/D12231
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Feb 2022 16:13:23 -0700] rev 48819
cext: unconditionalize PYLONG_VALUE()
We only support Python 3 now.
Differential Revision: https://phab.mercurial-scm.org/D12230
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Feb 2022 15:50:46 -0700] rev 48818
cext: use PyLong symbols
We no longer support Python 2. So we can unconditionally use the Python 3
symbol names.
Differential Revision: https://phab.mercurial-scm.org/D12229
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Feb 2022 15:48:35 -0700] rev 48817
cext: use PyLong symbols
We no longer need to support Python 2. So use the Python 3 symbol
names directly.
Differential Revision: https://phab.mercurial-scm.org/D12228
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Feb 2022 15:47:13 -0700] rev 48816
cext: remove Python 2 support
We still alias the Python 2 symbols. This will be cleaned up in a
separate commit.
Differential Revision: https://phab.mercurial-scm.org/D12227
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Feb 2022 15:45:51 -0700] rev 48815
cext: remove Python 2 file handling code
Differential Revision: https://phab.mercurial-scm.org/D12226
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Feb 2022 15:45:16 -0700] rev 48814
cext: remove Python 2 variant of listdir_slot()
Differential Revision: https://phab.mercurial-scm.org/D12225
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Feb 2022 15:44:39 -0700] rev 48813
cext: remove some conditional preprocessor defines
We may want to inline these defines. But for now, getting rid of the
Python 2 support is a step forward.
Differential Revision: https://phab.mercurial-scm.org/D12224
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Feb 2022 15:43:30 -0700] rev 48812
cext: unconditionally use PyLong_FromLong()
We no longer support Python 2.
Differential Revision: https://phab.mercurial-scm.org/D12223
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Feb 2022 15:42:47 -0700] rev 48811
cext: drop preprocessor PyInt aliases
Now that we dropped support for Python 2 we can use the Python 3 native
functions.
Differential Revision: https://phab.mercurial-scm.org/D12222
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Feb 2022 15:40:39 -0700] rev 48810
cext: remove Python 2 module initializer functions
We no longer need these since we dropped support for Python 2.
Differential Revision: https://phab.mercurial-scm.org/D12221
Arseniy Alekseyev <aalekseyev@janestreet.com> [Mon, 21 Feb 2022 19:51:23 +0000] rev 48809
rhg: simplify the handling of share-safe config mismatch
Differential Revision: https://phab.mercurial-scm.org/D12213
Raphaël Gomès <rgomes@octobus.net> [Tue, 01 Mar 2022 16:44:59 +0100] rev 48808
branching: merge stable into default
Raphaël Gomès <rgomes@octobus.net> [Tue, 01 Mar 2022 16:39:14 +0100] rev 48807
Added signature for changeset
d4486810a179
Raphaël Gomès <rgomes@octobus.net> [Tue, 01 Mar 2022 16:39:06 +0100] rev 48806
Added tag 6.1 for changeset
d4486810a179
Raphaël Gomès <rgomes@octobus.net> [Mon, 28 Feb 2022 18:34:23 +0100] rev 48805
merge: remove direct rustmod reference
We shouldn't rely on this member being present in `dirstate.py`, this creates
unnecessary coupling.
This also can trigger certain issues in edge-cases where the policy is changed
at runtime or multiple Python environments fight, which is an added bonus.
Differential Revision: https://phab.mercurial-scm.org/D12217
Raphaël Gomès <rgomes@octobus.net> [Mon, 21 Feb 2022 11:22:40 +0100] rev 48804
relnotes: add 6.1
Differential Revision: https://phab.mercurial-scm.org/D12205
Raphaël Gomès <rgomes@octobus.net> [Fri, 18 Feb 2022 13:14:32 +0100] rev 48803
relnotes: add 6.0.3
Differential Revision: https://phab.mercurial-scm.org/D12204
Raphaël Gomès <rgomes@octobus.net> [Fri, 18 Feb 2022 12:51:23 +0100] rev 48802
windows: adjust test output in test-merge-tools.t
Differential Revision: https://phab.mercurial-scm.org/D12216
Raphaël Gomès <rgomes@octobus.net> [Fri, 18 Feb 2022 12:51:06 +0100] rev 48801
windows: generalize output for test-status-tracked-key.t
Differential Revision: https://phab.mercurial-scm.org/D12215
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 22 Feb 2022 11:51:08 +0100] rev 48800
windows: skip a section of a test that is legitimately broken on windows
See the comment in the test itself.
Differential Revision: https://phab.mercurial-scm.org/D12214
Raphaël Gomès <rgomes@octobus.net> [Mon, 21 Feb 2022 12:03:57 +0100] rev 48799
heptapod-ci: remove Python 2 support
(hurray!) 6.1 was the last release to support Python 2, let's lighten
the CI.
Differential Revision: https://phab.mercurial-scm.org/D12206
Raphaël Gomès <rgomes@octobus.net> [Fri, 18 Feb 2022 14:32:26 +0100] rev 48798
Added signature for changeset
c00d3ce4e94b
Raphaël Gomès <rgomes@octobus.net> [Fri, 18 Feb 2022 14:32:09 +0100] rev 48797
Added tag 6.1rc0 for changeset
c00d3ce4e94b
Raphaël Gomès <rgomes@octobus.net> [Fri, 18 Feb 2022 14:27:43 +0100] rev 48796
branching: merge default into stable for 6.1 freeze
Raphaël Gomès <rgomes@octobus.net> [Fri, 18 Feb 2022 12:58:44 +0100] rev 48795
branching: merge 6.0.3 stable into default
Raphaël Gomès <rgomes@octobus.net> [Fri, 18 Feb 2022 11:37:08 +0100] rev 48794
branching: merge stable into default
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 17 Feb 2022 07:34:49 +0100] rev 48793
tracked-key: remove the dual write and rename to tracked-hint
The dual-write approach was mostly useless. As explained in the previous version
of the help, the key had to be read twice before we could cache a value.
However this "read twice" limitation actually also apply to any usage of the
key. If some operation wants to rely of the "same value == same tracked set"
property it would need to read the value before, and after running that
operation (or at least, after, in all cases). So it cannot be sure the operation
it did is "valid" until checking the key after the operation. As a resultat such
operation can only be read-only or rollbackable.
This reduce the utility of the "same value == same tracked set" a lot.
So it seems simpler to drop the double write and to update the documentation to
highlight that this file does not garantee race-free operation. As a result the
"key" is demoted to a "hint".
Documentation is updated accordingly.
Differential Revision: https://phab.mercurial-scm.org/D12201
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 17 Feb 2022 06:41:54 +0100] rev 48792
tracked-file: rename the format option to use `use-`
This is more consistent with the other options.
Differential Revision: https://phab.mercurial-scm.org/D12200
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 17 Feb 2022 06:35:42 +0100] rev 48791
tracked-key: update the requirement value
We renamed the config option but we forgot to change the actual value…
Differential Revision: https://phab.mercurial-scm.org/D12199
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 17 Feb 2022 06:32:03 +0100] rev 48790
tracked-key: make it possible to upgrade to and downgrade from the feature
This seems rather important if we want people to start using it.
Differential Revision: https://phab.mercurial-scm.org/D12198
Anton Shestakov <av6@dwimlabs.net> [Mon, 31 Jan 2022 18:13:00 +0300] rev 48789
obsolete: don't use os.stat in repo.obsstore.__nonzero__ if it's static HTTP
If a repo is accessed via static HTTP, then we obviously can't use os.stat() to
just peek at the file size. Let's download the entire file to check its size.
Yes, this feels wasteful, but:
1. If we're cloning or pulling a repo from a static HTTP server, we need the
contents of the obsstore anyway.
2. Implementing statichttpvfs.stat() that uses HEAD will result in one more
request to a static-only HTTP server, which is already slow. Also parsing a
response to a HEAD request to construct os.stat_result is pretty hacky.
There's also a question of the remote server properly supporting HEAD method
and reporting at least file size.
3. Implementing statichttpvfs.stat() that uses GET is pretty much the same
thing as we do here, except we can't even cache the response easily, unlike
simply accessing obsstore._data, which is @propertycache'd.
Importing statichttprepo locally to avoid circular import.
See also:
4507bc001365 and commit message of
f8f2ecdde4b5.
Differential Revision: https://phab.mercurial-scm.org/D12195
Martin von Zweigbergk <martinvonz@google.com> [Mon, 14 Feb 2022 22:49:03 -0800] rev 48788
filemerge: make `_maketempfiles()` more reusable
`_maketempfiles()` is very specialized for its current use. I hope to
use it also when creating temporary files for input for tools that do
partial conflict resolution. That'll be possible if the function is
more generic. Instead of passing in two contexts (for "other" and
"base") and an optional path (for "local"), let's pass a single list
of files to make backups for. Even if we don't end up using for
partial conflict resolution, this is still a simplification (but I do
have a WIP patch for partial conflict resolution and it is able to
benefit from this).
Differential Revision: https://phab.mercurial-scm.org/D12193
Martin von Zweigbergk <martinvonz@google.com> [Mon, 14 Feb 2022 22:16:29 -0800] rev 48787
filemerge: reduce some duplication in `_maketempfiles()`
The two callers of the local `maketempfrompath()` function used the
returned file object in the same way. We can reduce duplication by
moving that code into the function.
Differential Revision: https://phab.mercurial-scm.org/D12192
Martin von Zweigbergk <martinvonz@google.com> [Mon, 14 Feb 2022 22:11:50 -0800] rev 48786
filemerge: use leverage `util.readfile()` in `_maketempfiles()`
Differential Revision: https://phab.mercurial-scm.org/D12191
Martin von Zweigbergk <martinvonz@google.com> [Mon, 14 Feb 2022 22:04:50 -0800] rev 48785
filemerge: move removal of `.orig` extension on temp file close to context
The place where the `.orig` extension is removed in `_maketempfiles()`
doesn't make it clear that it's the backup path, which is why we have
a comment in the code explaining it. Let's instead move it out of the
function and close to where we get it from `backup.path()`, so that
becomes clear.
Differential Revision: https://phab.mercurial-scm.org/D12190
Martin von Zweigbergk <martinvonz@google.com> [Mon, 14 Feb 2022 21:52:18 -0800] rev 48784
filemerge: remove `uselocalpath` argument from `_maketempfiles()`
The `localpath` argument is unused if `uselocalpath` is false, so we
can use `None` as a sentinel value for the variable instead and remove
extra `uselocalpath` argument. That's not much of a win, but it's a
small step towards further improvements.
Differential Revision: https://phab.mercurial-scm.org/D12189
Martin von Zweigbergk <martinvonz@google.com> [Fri, 11 Feb 2022 22:39:53 -0800] rev 48783
filemerge: remove an unnecessary join with absolute path
The `backup` path is now always absolute, so we don't need to join it
with the working copy path.
Differential Revision: https://phab.mercurial-scm.org/D12188
Martin von Zweigbergk <martinvonz@google.com> [Fri, 11 Feb 2022 21:39:55 -0800] rev 48782
filemerge: when using in-memory merge, always put backup files in temp dir
Before calling a merge tool, we create a backup of the local side of
the merge. That file can be put in the working copy or in a temporary
directory, depending on the user's config. When we're merging in
memory, we don't want to write to the actual, on-disk working copy, so
we write the file to the in-memory working copy instead. However,
since we don't support external merge tools with in-memory merge, it
makes no difference where the file is actually stored (and if we ever
do add support for external merge tools, then the file clearly can't
live in the in-memory working-copy object anyway). So, since it
doesn't matter where the file is stored, we can simplify by always
putting them in the system's temp directory.
Differential Revision: https://phab.mercurial-scm.org/D12187
Martin von Zweigbergk <martinvonz@google.com> [Tue, 15 Feb 2022 20:18:57 -0800] rev 48781
filemerge: remove unused `repo` argument from `_maketempfiles()`
I missed this in D12171.
Differential Revision: https://phab.mercurial-scm.org/D12194
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 15 Feb 2022 23:45:30 +0100] rev 48780
upgrade: make dirstate-v2 format variant compatible with share
This only affects the dirstate and is safe to upgrade in the share.
Differential Revision: https://phab.mercurial-scm.org/D12197
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 15 Feb 2022 23:09:07 +0100] rev 48779
upgrade: prepare code (and output) for the idea of upgrading share
This would work for a subset of action only. Our first target is dirstate-v2.
Differential Revision: https://phab.mercurial-scm.org/D12196
Augie Fackler <augie@google.com> [Tue, 15 Feb 2022 13:32:30 -0500] rev 48778
sparse: add timing block for parsing sparse configs
This was showing up in an operation I was doing today, and I'd like to
be able to get trace spans for it instead of just profiler samples.
Differential Revision: https://phab.mercurial-scm.org/D12186
Augie Fackler <augie@google.com> [Tue, 15 Feb 2022 13:32:11 -0500] rev 48777
narrowspec: add timing block for validating narrowspec
This was showing up in an operation I was doing today, and I'd like to
be able to get trace spans for it instead of just profiler samples.
Differential Revision: https://phab.mercurial-scm.org/D12185
Raphaël Gomès <rgomes@octobus.net> [Fri, 18 Feb 2022 12:55:39 +0100] rev 48776
Added signature for changeset
dcec16e799dd
Raphaël Gomès <rgomes@octobus.net> [Fri, 18 Feb 2022 12:55:20 +0100] rev 48775
Added tag 6.0.3 for changeset
dcec16e799dd
Arseniy Alekseyev <aalekseyev@janestreet.com> [Thu, 17 Feb 2022 20:50:04 +0000] rev 48774
status: fix hg status race against file deletion
Differential Revision: https://phab.mercurial-scm.org/D12202
Martin von Zweigbergk <martinvonz@google.com> [Tue, 15 Feb 2022 20:24:46 -0800] rev 48773
branching: merge with stable
Martin von Zweigbergk <martinvonz@google.com> [Fri, 11 Feb 2022 16:52:48 -0800] rev 48772
filemerge: put temporary files in single temp dir by default
The feature introduced in D2888 seems like a pure improvement to
me. It makes the names' of temporary file easier to read. Let's have
it always enabled.
I also removed the config option for the path prefix because it
doesn't seem useful. I asked Kyle (the author of the feature) about it
and he couldn't think of a reason to keep it. I suspect it was just
that we to have a config to turn it on/off while it was experimental,
so it might as well be a configurable prefix then.
Differential Revision: https://phab.mercurial-scm.org/D12171
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 15 Feb 2022 05:20:46 +0100] rev 48771
dirstate-tracked-key: update the config value to match latest discussion
Special cases are not special enough, we align the option name on the other.
The `version` value is undocumented for now as it can only have a single value.
It is supported in the code to properly detect and abort if more value are
introduced in the future value.
Differential Revision: https://phab.mercurial-scm.org/D12184
Raphaël Gomès <rgomes@octobus.net> [Fri, 26 Nov 2021 15:38:04 +0100] rev 48770
rhg: signal when falling back in logs
We use the `trace` level for the actual message because it can get really busy.
Differential Revision: https://phab.mercurial-scm.org/D11814
pacien <pacien.trangirard@pacien.net> [Mon, 07 Feb 2022 13:23:58 +0100] rev 48769
revlog: register changelogv2 C implementation in parsers
This allows Python code to make use of the C implementation of the changelogv2
base operations when the C extensions are enabled.
The `format_version` values are now shared between the C and Python sides,
avoiding an additional translation for the selection of the format version to
use.
Differential Revision: https://phab.mercurial-scm.org/D12179
pacien <pacien.trangirard@pacien.net> [Mon, 14 Feb 2022 12:34:02 +0100] rev 48768
revlog: implement changelogv2 packing and unpacking in C
This introduces a C implementation of changelogv2 records packing and unpacking
operations matching the pure Python counterpart, similarly to what we already
have for revlogv1 and revlogv2.
This is also necessary to access changelogv2 record fields from future Rust
code without going through the Python part, which would annihilate any
performance benefit.
Differential Revision: https://phab.mercurial-scm.org/D12178
pacien <pacien.trangirard@pacien.net> [Thu, 10 Feb 2022 16:20:14 +0100] rev 48767
revlog: memset whole record instead of dealing with padding
This is less error-prone.
Differential Revision: https://phab.mercurial-scm.org/D12177
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 11 Feb 2022 05:37:19 +0100] rev 48766
revlog: do not compute node location by hand in index_invalidate_added
The node is not guaranteed to be at the same location all the time (e.g:
changelog v2), so let's use the official existing API to get that value.
Differential Revision: https://phab.mercurial-scm.org/D12176
pacien <pacien.trangirard@pacien.net> [Fri, 28 Jan 2022 11:54:44 +0100] rev 48765
rank: compute property incrementally
This replaces the naive rank computation with a more efficient incremental
method, avoiding computing the whole ancestor set when possible.
Differential Revision: https://phab.mercurial-scm.org/D12143
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 28 Jan 2022 11:45:33 +0100] rev 48764
rank: add test with golden values
This adds a regression test for the computation of the rank, using the current
values computed with the naive algorithm as the "golden" reference.
Differential Revision: https://phab.mercurial-scm.org/D12142
pacien <pacien.trangirard@pacien.net> [Fri, 28 Jan 2022 11:45:18 +0100] rev 48763
rank: add minimal test
This adds a small test checking the rank computation in the case of a merge.
Differential Revision: https://phab.mercurial-scm.org/D12141
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 28 Jan 2022 11:35:41 +0100] rev 48762
rank: add context and template keyword
This makes the stored rank property accessible, to be expanded and printed.
Differential Revision: https://phab.mercurial-scm.org/D12140
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 28 Jan 2022 11:33:01 +0100] rev 48761
rank: naive rank property computation and retrieval
This stores the rank (size of the ancestor set of a revision, including itself)
in a changelog field and allows this property to be retrieved.
This new property is used as part of stable-range computations, which will be
introduced later on.
The value is computed in a naive way from the definition of the rank. This will
be replaced by a more efficient version subsequently.
Differential Revision: https://phab.mercurial-scm.org/D12139
Martin von Zweigbergk <martinvonz@google.com> [Mon, 07 Feb 2022 22:54:38 -0800] rev 48760
filemerge: move check for identical sides out of filemerge()
`filemerge.filemerge()` returns `None` if no merge was necessary
because the two sides were identical. I don't think it should be that
function's responsibility to handle that case; we should ideally not
even call `filemerge.filemerge()` if the two inputs identical. This
patch therefore moves the check out to the caller (`mergestate.py`).
The largefiles test changed because we now notice that the two sides
made the same change, so we don't consider it a merge. Also note that
the new message better matches the line above it in the test output.
Differential Revision: https://phab.mercurial-scm.org/D12154
Martin von Zweigbergk <martinvonz@google.com> [Mon, 07 Feb 2022 20:12:09 -0800] rev 48759
mergestate: use an early return for trivial merges
`filemerge.filemerge()` returns `None` if no merge was needed because
the two sides were identical. I'd like to move that to the
caller. This is a little refactoring to prepare for that.
Differential Revision: https://phab.mercurial-scm.org/D12153
Martin von Zweigbergk <martinvonz@google.com> [Mon, 07 Feb 2022 14:07:04 -0800] rev 48758
simplemerge: remove now-unused arguments
The `ui` argument is no longer needed now that we don't handle
`--print` in the library code.
Differential Revision: https://phab.mercurial-scm.org/D12151
Martin von Zweigbergk <martinvonz@google.com> [Tue, 18 Jan 2022 13:22:55 -0800] rev 48757
merge: fix documented order of `labels` argument
Differential Revision: https://phab.mercurial-scm.org/D12150
Martin von Zweigbergk <martinvonz@google.com> [Tue, 18 Jan 2022 12:57:55 -0800] rev 48756
filemerge: when not keeping premerge, don't write markers to context
When premerge is enabled (as it is for non-binary inputs by default)
and the markers are not kept, we currently still write it to the
output context and then restore the previous content right after. With
the refactoring in the previous patch, we can easily avoid that step
and instead write the output in the opposite case (i.e. when it's
successful or when the markers are supposed to be kept).
Differential Revision: https://phab.mercurial-scm.org/D12149
Martin von Zweigbergk <martinvonz@google.com> [Fri, 14 Jan 2022 08:17:13 -0800] rev 48755
simplemerge: move printing of merge result to extension
The `mercurial.simplemerge` module still has some command-lines
processing that doesn't belong in such a low-level module. This patch
moves the handling of `hg simplemerge --print` to the extension by
having `mercurial.simplemerge.simplemerge()` return the merged text.
Differential Revision: https://phab.mercurial-scm.org/D12148
Martin von Zweigbergk <martinvonz@google.com> [Thu, 10 Feb 2022 15:48:01 -0800] rev 48754
simplemerge: remove code for checking binary input now that callers do it
The callers now do the checking for binary inputs and handle warnings
and/or errors, so we can remove that code from the low-level
`simplemerge` module now. After this patch we just raise an error
unless the caller told us to allow binary inputs.
Differential Revision: https://phab.mercurial-scm.org/D12169
Martin von Zweigbergk <martinvonz@google.com> [Thu, 10 Feb 2022 15:27:58 -0800] rev 48753
simplemerge: let filemerge check for binary inputs
This is similar to the previous patch, but here we put a specialized
copy of `simplemerge._verifytext()` in the the `filemerge` module
instead.
Differential Revision: https://phab.mercurial-scm.org/D12147
Martin von Zweigbergk <martinvonz@google.com> [Thu, 10 Feb 2022 13:36:09 -0800] rev 48752
simplemerge: let extension check for binary inputs (unless `--text`)
The `simplemerge` module does too much UI-related things. This patch
puts a specialized copy of `simplemerge._verifytext()` in the
simplemerge extension.
Differential Revision: https://phab.mercurial-scm.org/D12146
Martin von Zweigbergk <martinvonz@google.com> [Thu, 10 Feb 2022 11:00:32 -0800] rev 48751
simplemerge: store input data in MergeInput
I want to be able to update the file contents for support for partial
conflict resolution. Having the text available (and later settable) on
`MergeInput` will enable that.
Differential Revision: https://phab.mercurial-scm.org/D12144
Martin von Zweigbergk <martinvonz@google.com> [Fri, 04 Feb 2022 18:36:36 -0800] rev 48750
simplemerge: convert MergeInput to regular, non-attr.ib class
I'm about to add more logic and state to it.
Differential Revision: https://phab.mercurial-scm.org/D12145
Martin von Zweigbergk <martinvonz@google.com> [Thu, 10 Feb 2022 09:59:07 -0800] rev 48749
simplemerge: replace `**opts` passed to `simplemerge()` by keyword arguments
The `simplemerge` module is library code; it should not get an
unmodified `opts` dict from the `simplemerge` extension.
Differential Revision: https://phab.mercurial-scm.org/D12152
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 25 Aug 2021 19:55:20 -0700] rev 48748
automation: use gp3 volume type
This is a newer volume type. It offers a better baseline of performance
by default and is ~10% cheaper. It doesn't offer burst credits. But
its performance is guaranteed, unlike gp2, which had wonky performance
behavior.
Differential Revision: https://phab.mercurial-scm.org/D12132
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 26 Aug 2021 17:47:50 -0700] rev 48747
automation: use m6i instances
This instance type is much, much faster than t3 and can perform
tasks much quicker.
Differential Revision: https://phab.mercurial-scm.org/D12131
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 03 Feb 2022 18:14:25 +0100] rev 48746
narrow: add support for merging add and remove outside of the tracked set
This extend
f1eb77dceb36 to test and support the remaining action. Or, at least,
the simple incarnation of them.
Differential Revision: https://phab.mercurial-scm.org/D12181
Simon Sapin <simon.sapin@octobus.net> [Fri, 21 Jan 2022 17:54:03 +0100] rev 48745
status: prefer relative paths in Rust code
… when the repository root is under the current directory,
so the kernel needs to traverse fewer directory in every call
to `read_dir` or `symlink_metadata`.
Better yet would be to use libc functions like `openat` and `fstatat`
to remove such repeated traversals entirely, but the standard library
does not provide APIs based on those.
Maybe with a crate like https://crates.io/crates/openat instead?
Benchmarks of `rhg status` show that this patch is neutral in some configurations,
and makes the command up to ~20% faster in others.
Below is semi-arbitrary subset of results. The four numeric columns are:
time (in seconds) with this changeset’s parent, time with this changeset,
time difference (negative is better), time ratio (less than 1Â is better).
```
mercurial-dirstate-v1 | default-plain-clean.no-iu.pbr | 0.0061 -> 0.0059: -0.0002 (0.97)
mercurial-dirstate-v2 | default-plain-clean.no-iu.pbr | 0.0029 -> 0.0028: -0.0001 (0.97)
mozilla-dirstate-v1 | default-plain-clean.no-iu.pbr | 0.2110 -> 0.2102: -0.0007 (1.00)
mozilla-dirstate-v2 | default-copies-clean.ignored.pbr | 0.0489 -> 0.0401: -0.0088 (0.82)
mozilla-dirstate-v2 | default-copies-clean.no-iu.pbr | 0.0479 -> 0.0393: -0.0085 (0.82)
mozilla-dirstate-v2 | default-copies-large.all.pbr | 0.1262 -> 0.1210: -0.0051 (0.96)
mozilla-dirstate-v2 | default-copies-small.ignored-unknown.pbr | 0.1262 -> 0.1200: -0.0062 (0.95)
mozilla-dirstate-v2 | default-copies-small.ignored.pbr | 0.0536 -> 0.0417: -0.0119 (0.78)
mozilla-dirstate-v2 | default-copies-small.no-iu.pbr | 0.0482 -> 0.0393: -0.0089 (0.81)
mozilla-dirstate-v2 | default-plain-clean.ignored.pbr | 0.0518 -> 0.0402: -0.0116 (0.78)
mozilla-dirstate-v2 | default-plain-clean.no-iu.pbr | 0.0481 -> 0.0392: -0.0088 (0.82)
mozilla-dirstate-v2 | default-plain-large.all.pbr | 0.1271 -> 0.1218: -0.0052 (0.96)
mozilla-dirstate-v2 | default-plain-small.ignored-unknown.pbr | 0.1225 -> 0.1202: -0.0022 (0.98)
mozilla-dirstate-v2 | default-plain-small.ignored.pbr | 0.0510 -> 0.0418: -0.0092 (0.82)
mozilla-dirstate-v2 | default-plain-small.no-iu.pbr | 0.0480 -> 0.0394: -0.0086 (0.82)
netbeans-dirstate-v1 | default-plain-clean.no-iu.pbr | 0.1442 -> 0.1422: -0.0020 (0.99)
netbeans-dirstate-v2 | default-plain-clean.no-iu.pbr | 0.0325 -> 0.0282: -0.0043 (0.87)
```
Differential Revision: https://phab.mercurial-scm.org/D12175
Simon Sapin <simon.sapin@octobus.net> [Mon, 14 Feb 2022 18:51:43 +0100] rev 48744
rust: remove unused `StatusError::IO` enum variant
All `io::Error` cases are now handled through PatternFileWarning or BadMatch
Differential Revision: https://phab.mercurial-scm.org/D12174
Raphaël Gomès <rgomes@octobus.net> [Tue, 15 Feb 2022 15:52:44 +0100] rev 48743
copyright: it's 2022
Differential Revision: https://phab.mercurial-scm.org/D12183
Raphaël Gomès <rgomes@octobus.net> [Mon, 14 Feb 2022 19:03:22 +0100] rev 48742
hghave: update rustfmt criterion
In
9ebc10ad4a04 I updated `rustfmt` without touching hghave, which means
that the CI has been skipping the format test ever since. Thankfully, only
one offending line exists in the code that's been introduced since.
Differential Revision: https://phab.mercurial-scm.org/D12180
Raphaël Gomès <rgomes@octobus.net> [Fri, 11 Feb 2022 23:43:17 +0100] rev 48741
dirstate-v2: fix infinite loop in pure packer
Due to the naive approach to path relative-ness, some tree shapes
like the one introduced in the associated test could result in the
packer going into an endless loop which allocated new `Node` objects
endlessly until the process was killed by Linux's OOM killer.
Differential Revision: https://phab.mercurial-scm.org/D12170
Mathias De Mare <mathias.de_mare@nokia.com> [Tue, 15 Feb 2022 15:33:33 +0100] rev 48740
contrib: refer to RHEL and derivatives instead of CentOS specifically
Differential Revision: https://phab.mercurial-scm.org/D12182
Mathias De Mare <mathias.de_mare@nokia.com> [Mon, 14 Feb 2022 11:32:03 +0100] rev 48739
packaging: replace centos8 by rockylinux 8
Differential Revision: https://phab.mercurial-scm.org/D12172