Matt Harbison <matt_harbison@yahoo.com> [Sat, 23 Oct 2021 17:13:57 -0400] rev 48284
typing: add more type hints to the errors module
These were found by looking for `Any` types in the generated `*.pyi` file after
running the tests. There are some more complicated types that I'm not sure of,
and am leaving untyped. I also can't figure out how to get `self.hint` to be
anything other than `Any` in most classes.
Differential Revision: https://phab.mercurial-scm.org/D11719
Matt Harbison <matt_harbison@yahoo.com> [Sat, 23 Oct 2021 16:04:05 -0400] rev 48283
typing: add a few assertions to revlog.py to help pytype
I've seen this before, but this was seen as potentially `None` with pytype
2021.10.18.
Differential Revision: https://phab.mercurial-scm.org/D11718
Raphaël Gomès <rgomes@octobus.net> [Thu, 21 Oct 2021 09:22:06 +0200] rev 48282
dirstate: group return logic and clarify each function in flagfunc
As suggested by spectral during review of my fix of the missing return, this
makes it more obvious that all cases are covered and improves readability of
the functions with new names and a small docstring.
Differential Revision: https://phab.mercurial-scm.org/D11715
Raphaël Gomès <rgomes@octobus.net> [Wed, 20 Oct 2021 18:40:03 +0200] rev 48281
dirstate: add missing return on platforms without exec or symlink
Differential Revision: https://phab.mercurial-scm.org/D11713
Raphaël Gomès <rgomes@octobus.net> [Wed, 20 Oct 2021 18:25:49 +0200] rev 48280
parsers: don't ask about symlinks on platforms that don't support them
Otherwise the compiler gets quite sad.
Differential Revision: https://phab.mercurial-scm.org/D11712
Raphaël Gomès <rgomes@octobus.net> [Wed, 20 Oct 2021 18:05:16 +0200] rev 48279
parsers: don't ask about the exec bit on platforms that don't have it
Otherwise the compiler gets quite sad.
Differential Revision: https://phab.mercurial-scm.org/D11711
Kyle Lippincott <spectral@google.com> [Tue, 19 Oct 2021 18:06:07 -0700] rev 48278
tests: fix test-convert-git to work w/ "git pull" requiring strategy
A recent change to git (
031e2f7ae195) made it an error to not specify a strategy
(`--rebase`, `--no-rebase`, `--ff-only`), instead of just the warning it was
previously. As far as I can tell, `--no-rebase` is the behavior we were getting
before, and the only one that makes the test work.
Differential Revision: https://phab.mercurial-scm.org/D11714
Raphaël Gomès <rgomes@octobus.net> [Thu, 21 Oct 2021 17:25:41 +0200] rev 48277
branching: merge stable into default
Raphaël Gomès <rgomes@octobus.net> [Thu, 21 Oct 2021 14:03:33 +0200] rev 48276
heptapod-ci: actually give pytest more time before timeout
`HGTEST_TIMEOUT` is overridden by `HGTEST_SLOWTIMEOUT` for tests marked as
slow, which `test-check-pytype.t` is. So this whole time the timeout was 1500s
(or 25 minutes), which is unfortunately not long enough for a *lot* of the
times it's run on the CI.
Differential Revision: https://phab.mercurial-scm.org/D11717
Arseniy Alekseyev <aalekseyev@janestreet.com> [Wed, 20 Oct 2021 18:44:26 +0100] rev 48275
tests: better determinism in test-chg.t
chg tests fail pretty often with "Sample count: *" line disappearing.
It disappears because the sample count is zero, in which case a custom message is printed.
This commit makes the test succeed in that case.
Differential Revision: https://phab.mercurial-scm.org/D11716
David Demelier <markand@malikania.fr> [Thu, 21 Oct 2021 11:21:21 +0200] rev 48274
hg: remove reserved identifiers
Per 7.1.3 paragraph, from C draft:
All identifiers that begin with an underscore and either an uppercase letter or
another underscore are always reserved for any use.
Raphaël Gomès <rgomes@octobus.net> [Tue, 19 Oct 2021 16:05:20 +0200] rev 48273
python: compatibility for python 3.11 (
issue6604)
The `unittest._TextTestResult` alias has been removed.
The "new" name has been available since 3.2, and we only support 3.5.3+.
Differential Revision: https://phab.mercurial-scm.org/D11690
Raphaël Gomès <rgomes@octobus.net> [Wed, 20 Oct 2021 16:54:43 +0200] rev 48272
pyoxidizer: force pip to not use pep517 in order to be able to install hg
Mercurial is not (yet) a pep517 package, but the presence of a pyproject.toml
file tells newer-ish versions of pip that it should be one.
This is related to
58fe6d127a01, and fixes pyoxidizer builds for the Heptapod
CI.
Differential Revision: https://phab.mercurial-scm.org/D11710
Kyle Lippincott <spectral@google.com> [Tue, 19 Oct 2021 16:14:53 -0700] rev 48271
merge-halt: fix issue with merge.on-failure=halt breaking unshelve
Differential Revision: https://phab.mercurial-scm.org/D11706
Kyle Lippincott <spectral@google.com> [Tue, 19 Oct 2021 16:14:46 -0700] rev 48270
merge-halt: demonstrate unshelve issue with merge.on-failure=halt
Differential Revision: https://phab.mercurial-scm.org/D11705
Georges Racinet <georges.racinet@octobus.net> [Tue, 19 Oct 2021 19:05:41 +0200] rev 48269
rust-nodemap: backed out mitigation for issue 6554
This is a backout of changeset
3fffb48539ee.
Issue 6554 is now considered solved, hence its mitigation
has to be removed, if only for its performance cost.
Differential Revision: https://phab.mercurial-scm.org/D11703
Kyle Lippincott <spectral@google.com> [Mon, 18 Oct 2021 16:24:00 -0700] rev 48268
pyoxidizer: update README.md with several small fixes
Currently, pyoxidizer.bzl does not mention the git commit that should be checked
out, so these instructions are a bit difficult to follow right now (impossible,
technically), so I removed the instruction to `git checkout <Git commit>` and
the admonition to use a specific version of PyOxidizer. I don't even know if the
project currently builds with the "0.7.0-pre" version that was previously
recommended.
As fallout from that change to not "pin" to a specific PyOxidizer, I had to
update the Python version to use when running the tests.
While here, I added a recommendation to use `--release`, as the primary reason
for this project is performance, and it may have been leaving some on the table
to not have that there.
Differential Revision: https://phab.mercurial-scm.org/D11698
Kyle Lippincott <spectral@google.com> [Mon, 18 Oct 2021 16:18:41 -0700] rev 48267
pyoxidizer: disable using in-memory resources
It's possible that the errors are due to using an incompatible version of
PyOxidizer; unfortunately the README.md file in this directory says to fetch a
copy of PyOxidizer matching the commit in this pyoxidizer.bzl file, and yet the
pyoxidizer.bzl file does not actually have a commit mentioned in it.
By disabling in-memory modules, this appears to work on all platforms using the
current head version of PyOxidizer, so let's disable them for now.
Sample error (during `pyoxidizer build`):
```
error[PYOXIDIZER_PYTHON_EXECUTABLE]: adding PythonExtensionModule<name=hgext.fsmonitor.pywatchman.bser>
Caused by:
extension module hgext.fsmonitor.pywatchman.bser cannot be loaded from memory but memory loading required
--> ./pyoxidizer.bzl:140:5
|
140 | exe.add_python_resources(exe.pip_install(["--verbose", ROOT]))
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ add_python_resources()
error: adding PythonExtensionModule<name=hgext.fsmonitor.pywatchman.bser>
Caused by:
extension module hgext.fsmonitor.pywatchman.bser cannot be loaded from memory but memory loading required
```
Differential Revision: https://phab.mercurial-scm.org/D11697
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 20 Oct 2021 00:21:41 +0200] rev 48266
dirstate-v2: reorder flag to group related one together
Since the format is not frozen yet, it seems like the right moment to do it.
Differential Revision: https://phab.mercurial-scm.org/D11704
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 19 Oct 2021 20:14:17 +0200] rev 48265
dirstate-v2: read the fallback value in Rust
This was overlooked in a previous commit.
Differential Revision: https://phab.mercurial-scm.org/D11695
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 19 Oct 2021 18:18:05 +0200] rev 48264
dirstate-v2: adjust the meaning of directory flags
Tracking directory "explicitly" give use the opportunity to distinct between
entry that are untracked because they are part of the directory structure and
entry that are ignored/unknown files on the files system.
The help is adjusted to the new semantic and the code now comply to it for both
read and write.
Differential Revision: https://phab.mercurial-scm.org/D11694
Simon Sapin <simon.sapin@octobus.net> [Wed, 13 Oct 2021 15:58:14 +0200] rev 48263
dirstate-v2: actually use sub-second mtime precision
Instead of zero, set the nanoseconds field to its correct value whenever
possible and preserve it across serialization+parsing.
Differential Revision: https://phab.mercurial-scm.org/D11702
Simon Sapin <simon.sapin@octobus.net> [Thu, 14 Oct 2021 13:54:39 +0200] rev 48262
dirstate: ignore sub-second component when either is zero in mtime
When comparing mtimes for equality.
Some APIs simply return zero when more precision is not available.
When comparing values from different sources, if only one is truncated in
that way, doing a simple comparison would cause many false negatives.
Differential Revision: https://phab.mercurial-scm.org/D11701
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 19 Oct 2021 22:04:14 +0200] rev 48261
dirstate-v2: add a new MTIME_SECOND_AMBIGUOUS flags
This flag will let us use more `mtime` value in the future. For now we have a
minimal handling of the flag at read time, but we will never put ourself in a
situation where we will needs to writes it.
See the flag documentation for details.
Differential Revision: https://phab.mercurial-scm.org/D11700
Simon Sapin <simon.sapin@octobus.net> [Mon, 18 Oct 2021 11:23:07 +0200] rev 48260
dirstate: store mtimes with nanosecond precision in memory
Keep integer seconds since the Unix epoch,
together with integer nanoseconds in the `0 <= n < 1e9` range.
For now, nanoseconds are still always zero.
This commit is about data structure changes.
Differential Revision: https://phab.mercurial-scm.org/D11684
Simon Sapin <simon.sapin@octobus.net> [Tue, 19 Oct 2021 21:03:13 +0200] rev 48259
rust: remove now-unused DirstateEntry::clear_ambiguous_mtime method
Differential Revision: https://phab.mercurial-scm.org/D11696
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 19 Oct 2021 22:14:48 +0200] rev 48258
dirstate: align Rust function name to `need_delay`
The rest of the code use this name. It is not a great name, but it is better to
stay consistent.
Differential Revision: https://phab.mercurial-scm.org/D11699
Simon Sapin <simon.sapin@octobus.net> [Mon, 18 Oct 2021 19:02:40 +0200] rev 48257
dirstate: rename a `very_likely_equal` method to `likely_equal`
No need to oversell it.
Differential Revision: https://phab.mercurial-scm.org/D11691
Raphaël Gomès <rgomes@octobus.net> [Tue, 19 Oct 2021 19:03:39 +0200] rev 48256
backout: backed out changeset
2f2107c01dee
After discussion on the original phab patch, we've decided to wait until
Python 2 support is dropped to do this since the behavior differs for
relatively obscure reasons.
Differential Revision: https://phab.mercurial-scm.org/D11692
Raphaël Gomès <rgomes@octobus.net> [Tue, 19 Oct 2021 19:04:11 +0200] rev 48255
backout: backed out changeset
6edc8800dbc3
Same as the previous changeset.
Differential Revision: https://phab.mercurial-scm.org/D11693
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 18 Oct 2021 10:56:54 +0200] rev 48254
dirstate-v2: preserve the fallback values on disk
When the fallback values are set, they are now read and written to disk.
See format documentation for details.
Differential Revision: https://phab.mercurial-scm.org/D11688
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 18 Oct 2021 20:02:05 +0200] rev 48253
dirstate: make DirstateItem constructor accept fallback value
This could arguably goes in the previous changeset, but I wanted to keep that
previous changeset small to focus more on the user code and the documentation.
Differential Revision: https://phab.mercurial-scm.org/D11687