Joerg Sonnenberger <joerg@bec.de> [Thu, 29 Apr 2021 22:01:04 +0200] rev 49967
storageutil: match node length with repository
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 13 Dec 2022 12:50:52 +0100] rev 49966
dirstate: enforce holding the lock while doing any changes
This seems like a sensible sanity check. This already caught the issue in
largefile. This will catch more issue when we start using similar context
manager for operation other than the parent changes.
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 27 Jan 2023 00:45:07 +0100] rev 49965
largefile: make sure we hold the lock when updating the second dirstate
The largefile extension uses a second dirstate file (and object) to track some
states. In some situations, it is lazily updated when needed. These operations
might not have the lock taken. This means they might conflict and race with
other ongoing operations.
So we now take the lock to do these operations.
This was caught by the next commit.
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 26 Jan 2023 15:19:39 +0100] rev 49964
dirstate: rename `@requires_no_parents_change` too
This match the rename of the context manager.
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 26 Jan 2023 15:17:29 +0100] rev 49963
dirstate: rename `@requires_parents_change` to `@requires_changing_parents`
This match the rename of the context manager.
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 13 Dec 2022 12:10:37 +0100] rev 49962
dirstate: write dirstate on successful exit of changing_parents context
This is the first step toward having more sensible and predicatable write
patterns for the dirstate. Having better write/rollback patterns will greatly
reduce and clarify the needs to backup the dirstate.
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 25 Jan 2023 19:12:31 +0100] rev 49961
dirstate: rename parentchange to changing_parents
Since the new argument breaks the API anyway, we can rename it to a better name.
The previous name `parentchange` might be seen as something active, a function
that would directly change the parents, however this is just a context manager
to frame the operation that will change the parents and adjust the
dirstate content accordingly.
In addition, the future sister method that will be about changes to tracking and
files would have a hard time fitting in the same naming scheme in a clear way.
The new naming uses a clear prefix will make it more distinct from other
dirstate methods and easier to extend with other similar contexts.
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 25 Jan 2023 18:46:20 +0100] rev 49960
dirstate: pass the repo to the `changeparent` method
If we want the context to be responsible for writing (and we want it), we need
to have access to a localrepository object.
So we now requires a localrepository object as an argument to this context
manager.
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 13 Dec 2022 10:00:04 +0100] rev 49959
dirstate: warn about non-explicitly rolledback parent-change
Now that the invalidation is dealt with by the context manager itself, we
should no longer need this in the unlocking code. We start with issuing a
warning if this is the case before actually dropping this code later.
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 13 Dec 2022 11:39:44 +0100] rev 49958
dirstate: invalidate changes when parent-change fails
When an error occurs during changing parents, we should invalidate all dirstate
modifications and reload the dirstate. This is currently done by a `unlock`
callback on the `wlock`.
To fix this anomaly, we start dealing with the error directly in the context
manager and its potential nesting.
The "hard" part is to make sure that, when the parent-change context are nested,
we and higher level nesting do not continue to use the invalidated dirstate.
We introduce dedicated code to enforce that.
Cédric Krier <ced@b2ck.com> [Sat, 28 Jan 2023 20:08:57 +0100] rev 49957
setup: Ensure target directory exists with building rust extension
When the rust extension is the first to be build, the target directory may not
exist so the copy fails.
Cédric Krier <ced@b2ck.com> [Thu, 26 Jan 2023 00:23:07 +0100] rev 49956
filemerge: add union-other-first as internal merge tool
See inline documentation for details.
Raphaël Gomès <rgomes@octobus.net> [Mon, 09 Jan 2023 17:48:54 +0100] rev 49955
rust-narrow: fix loop that never loops
This was caught by `clippy`. I guess the narrow tests leave something to be
desired, since this previously only checked the first valid pattern.
Raphaël Gomès <rgomes@octobus.net> [Fri, 13 Jan 2023 00:07:07 +0100] rev 49954
rust: use `peek_mut` from the standard lib now that it's stable
Just a little cleanup of a TODO found along the way.
Anton Shestakov <av6@dwimlabs.net> [Wed, 25 Jan 2023 19:37:06 +0400] rev 49953
hghave: refactor checks for pygments versions using checkvers()
Anton Shestakov <av6@dwimlabs.net> [Wed, 25 Jan 2023 19:27:50 +0400] rev 49952
hghave: make different has_pyoxidizer functions have different names
There are 3 of them, and them all having the same name triggered code checkers.
Anton Shestakov <av6@dwimlabs.net> [Wed, 25 Jan 2023 19:25:42 +0400] rev 49951
tests: pygments 2.14+ highlight whitespace in python code
Anton Shestakov <av6@dwimlabs.net> [Wed, 25 Jan 2023 18:54:17 +0400] rev 49950
tests: make sure pygments can detect python script without extension
This .t file was failing for me when running run-tests.py with python3.11. Then
I tried to run it with python3.10 and it failed anyway, even though it's the
default python3 interpreter. But with `python3 ./run-tests.py` it worked fine.
And this is what I found while looking at the way pygments lexer checks if a
file without extension is likely to be a python script:
shebang_matches(text, r'pythonw?(3(\.\d)?)?')
Take guess why it doesn't work for python >= 3.10.
To work around this issue, we can simply hardcode an "easier" shebang for
pygments. This path to python interpreter obviously doesn't need to be
accurate, since we're not running this script.
Raphaël Gomès <rgomes@octobus.net> [Wed, 25 Jan 2023 18:45:38 +0100] rev 49949
clippy: actually fail if there are any warnings
So far, only errors would trip the CI, this makes it so all warnings are
elevated to errors, making it a CI fail if any warnings are present.
This was the intended behavior, I just missed this when adding clippy.
Raphaël Gomès <rgomes@octobus.net> [Wed, 25 Jan 2023 18:44:09 +0100] rev 49948
rust-clippy: fix warning about nested ifs
Anton Shestakov <av6@dwimlabs.net> [Wed, 25 Jan 2023 17:52:00 +0400] rev 49947
convert: brz 3.3.0 moved NoSuchFile exception to breezy.transport
Julien Cristau <jcristau@mozilla.com> [Tue, 06 Dec 2022 15:11:51 +0100] rev 49946
revset: the `random` sort should not depend on sys.maxsize (
issue6770)
Raphaël Gomès <rgomes@octobus.net> [Mon, 23 Jan 2023 14:04:17 +0100] rev 49945
contrib: adjust heptapod CI flavor sizes
Our CI currently runs on a number of different runners, some of which are run
by Clever Cloud.
By setting this environement variable, we're asking for a smaller size runner
for our smaller jobs, which puts less load on the Clever Cloud infrastructure,
while not affecting our overall pipeline times.
Arun Kulshreshtha <akulshreshtha@janestreet.com> [Thu, 19 Jan 2023 11:12:20 -0500] rev 49944
debugshell: allow commands to be specified as a CLI argument
Add a `--command` option to `hg debugshell` that allows the user to pass in
Python code to evaluate directly from the command line. This was inspired by
the `--command` option present in Facebook's Sapling fork of Mercurial,
which in turn was inspired by the `-c` option of the Python interpreter
itself. It is particularly useful for writing tests, especially for getting
visibility into things that otherwise aren't exposed via debug commands.
Anton Shestakov <av6@dwimlabs.net> [Thu, 12 Jan 2023 19:56:59 +0400] rev 49943
resourceutil: start using importlib.resources.files() when possible
This avoids DeprecationWarnings related to our use of resources.open_binary()
on Python 3.11.
Anton Shestakov <av6@dwimlabs.net> [Tue, 10 Jan 2023 17:35:53 +0400] rev 49942
tests: fix a typo in test-demandimport.t
I guess we figured out why it wasn't lazy.
Anton Shestakov <av6@dwimlabs.net> [Tue, 10 Jan 2023 17:23:13 +0400] rev 49941
tests: os module is frozen in Python 3.11 (
issue6786)
Raphaël Gomès <rgomes@octobus.net> [Tue, 10 Jan 2023 11:40:19 +0100] rev 49940
heptapod-ci: add `clippy` to the CI
This linter mostly makes our code more idiomatic, less surprising, has good
suggestions and catches bugs. It's widely used in the Rust community and now
part of the default toolchain when using `rustup`.