Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 15 Mar 2023 12:08:05 +0100] rev 50307
transaction: add clarifying comment about why ignoring some error is fine
It is less scary when explained.
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 15 Mar 2023 11:18:24 +0100] rev 50306
transaction: properly clean up backup file outside of .hg/store/
Oops.
Mads Kiilerich <mads@kiilerich.com> [Tue, 07 Mar 2023 17:13:38 +0100] rev 50305
statprof: with Python 3.12, lineno is (more) often None
test-profile.t failed with errors like:
TypeError: %d format: a real number is required, not NoneType
statprof.py already handled None values as -1 in some cases. Do the same in
more cases.
Mads Kiilerich <mads@kiilerich.com> [Tue, 07 Mar 2023 16:45:54 +0100] rev 50304
py3: fix for Python 3.12 emitting SyntaxWarning on invalid escape sequences
Mercurial became very noisy after https://github.com/python/cpython/commit/
a60ddd31be7ff96a8189e7483bf1eb2071d2bddf ,
for example:
$ python3.12 mercurial/store.py
mercurial/store.py:406: SyntaxWarning: invalid escape sequence '\.'
EXCLUDED = re.compile(b'.*undo\.[^/]+\.(nd?|i)$')
This verbosity made some tests fail.
The problems were mostly insufficiently escaped regexps, relying on the Python
parser/scanner preserving invalid escape sequences.
Mads Kiilerich <mads@kiilerich.com> [Tue, 07 Mar 2023 16:25:51 +0100] rev 50303
cext: fix for PyLong refactoring in CPython 3.12
Compiling Mercurial with Python 3.12 a5 would fail with:
mercurial/cext/dirs.c: In function '_addpath':
mercurial/cext/dirs.c:19:44: error: 'PyLongObject' {aka 'struct _longobject'} has no member named 'ob_digit'
19 | #define PYLONG_VALUE(o) ((PyLongObject *)o)->ob_digit[0]
| ^~
mercurial/cext/dirs.c:97:25: note: in expansion of macro 'PYLONG_VALUE'
97 | PYLONG_VALUE(val) += 1;
| ^~~~~~~~~~~~
mercurial/cext/dirs.c:19:44: error: 'PyLongObject' {aka 'struct _longobject'} has no member named 'ob_digit'
19 | #define PYLONG_VALUE(o) ((PyLongObject *)o)->ob_digit[0]
| ^~
mercurial/cext/dirs.c:108:17: note: in expansion of macro 'PYLONG_VALUE'
108 | PYLONG_VALUE(val) = 1;
| ^~~~~~~~~~~~
mercurial/cext/dirs.c: In function '_delpath':
mercurial/cext/dirs.c:19:44: error: 'PyLongObject' {aka 'struct _longobject'} has no member named 'ob_digit'
19 | #define PYLONG_VALUE(o) ((PyLongObject *)o)->ob_digit[0]
| ^~
mercurial/cext/dirs.c:145:23: note: in expansion of macro 'PYLONG_VALUE'
145 | if (--PYLONG_VALUE(val) <= 0) {
| ^~~~~~~~~~~~
This was caused by
https://github.com/python/cpython/commit/
c1b1f51cd1632f0b77dacd43092fb44ed5e053a9 .
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Thu, 27 Oct 2022 17:34:02 -0400] rev 50302
histedit: fix diff colors
The problem here is that indexing a bytestring gives you integers, not
chars, so the comparison to b'+' ends up being wrong.
We don't really have a way to test curses output, so no tests to
verify the correctness of this behaviour.
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 15 Mar 2023 05:49:56 +0100] rev 50301
dirstate: fix a potential traceback when in `copy` and `rename`
Before this changes, calling `hg copy` or `hg rename` could trigger a traceback
about using an invalidated dirstate. This wasn't caught by the test as it needed
the blackbox extension to preload the dirstate first in a way "refresh"
invalidates it.
Changing the context creation patterns fixes it.
Arseniy Alekseyev <aalekseyev@janestreet.com> [Tue, 14 Mar 2023 14:08:38 +0000] rev 50300
dirstate: fix the bug in [status] dealing with committed&ignored directories
In particular, these directories can "infect" their sibling directories with
ignored status due to using a shared memoization cell by accident.
This fixes bug #6795.
Arseniy Alekseyev <aalekseyev@janestreet.com> [Tue, 14 Mar 2023 14:01:47 +0000] rev 50299
tests: demonstrate a bug with committed&ignored dirs
Raphaël Gomès <rgomes@octobus.net> [Mon, 06 Mar 2023 12:04:25 +0100] rev 50298
rust: remove out-of-date comment
We've migrated to a newer version of Rust, so it doesn't make sense anymore.
Raphaël Gomès <rgomes@octobus.net> [Mon, 06 Mar 2023 12:00:25 +0100] rev 50297
rust: upgrade `rayon` dependency
This includes a potential soundness fix as well as some improvements to
performance which should be helpful.
Raphaël Gomès <rgomes@octobus.net> [Mon, 06 Mar 2023 11:58:37 +0100] rev 50296
rust: update zstd dependency
Let's try to be the most up-to-date for this cycle.
Fedora already has this version packaged, it's an added bonus.
Arseniy Alekseyev <aalekseyev@janestreet.com> [Mon, 13 Mar 2023 14:19:02 +0000] rev 50295
tests: simplify a bit
Arseniy Alekseyev <aalekseyev@janestreet.com> [Mon, 13 Mar 2023 14:15:34 +0000] rev 50294
dirstate-v2: fix an incorrect handling of readdir errors
Make sure not to cache the results of a failed readdir call.
Arseniy Alekseyev <aalekseyev@janestreet.com> [Fri, 10 Mar 2023 18:20:50 +0000] rev 50293
tests: demonstrate a bug in dirstate-v2 handling of errors
Arseniy Alekseyev <aalekseyev@janestreet.com> [Fri, 10 Mar 2023 18:20:19 +0000] rev 50292
tests: add a rewriting step to detect EACCES errors
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 07 Mar 2023 03:42:40 +0100] rev 50291
undo-files: cleanup legacy files when applicable
The "journal" code is much more compact in 6.4, and so is the "undo" files as a
result. However the previous version were much noisier, so let us cleanup undo
files from older version too.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 06 Mar 2023 22:16:43 +0100] rev 50290
undo-files: clean existing files up before writing new one
the in the initial design of journal/undo interaction, ages ago, new file always
overwrote previous files. This is no longer the case for a long while, so it is
time to properly clean things up before writing new ones.
Otherwise, inconsistent "undo" state might exist on disk, leading `hg rollback`
to misbehave (more that intended).
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 07 Mar 2023 03:31:21 +0100] rev 50289
undo-files: make the undo-prefix configurable in `cleanup_undo_files`
The transaction is configuration undo prefix, so we "need" it too.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 06 Mar 2023 22:16:28 +0100] rev 50288
undo-files: no longer pass the `repo` to `cleanup_undo_files`
As foretold in the previous changesets, we no longer need a full repository
object here.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 06 Mar 2023 20:16:17 +0100] rev 50287
undo-files: relies on a explicit list of possible undo files
Instead of infering the list of undo files from the `_journalfiles` method on
`localrepository`, we explicitly have the list of file in a constant next to
the cleanup code.
In practice this does not change much as `_journalfiles` is already returning
the same "static" list and no internal or extensions extensions seems to
actually wrap that.
In addition, that list is not "too short" for cleanup, in case we need to
cleanup undo files from older version of Mercurial that used to use more of
them. this will be dealt with in a later changesets.
This change is a step toward our goal to use the `cleanup_undo_files` within
the transaction. The transaction has no reference to the `repo` object, so we
need to move toward `cleanup_undo_files` not having one either.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 06 Mar 2023 21:03:45 +0100] rev 50286
undo-files: move the undo cleanup code in the transaction module
Now that undo creation is gathered in the transaction module, let us move the code cleaning them up there too.
This will be useful to better clean previous undo files up before creating new
ones.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 06 Mar 2023 19:39:35 +0100] rev 50285
undo-files: drop the old undo rename logic
It is no longer necessary
I am not changing the transaction.__init__ signature since we are on stable
right now.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 06 Mar 2023 19:22:34 +0100] rev 50284
undo-files: have the transaction directly tracks and manages journal rename
This is much simpler this way.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 06 Mar 2023 19:19:27 +0100] rev 50283
undo-files: add a undoname closure to the _write_undo method
We will also needs it when the transaction will take care of the other journal
files, which is soon™.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 06 Mar 2023 13:31:04 +0100] rev 50282
undo-files: cleanup backup when cleaning undos
Previously, the backups were left behind, by operation cleaning the undo's like
strip, narrow and stream clone.
The remaining elevant in the room is the transaction itself, who does not
properly cleanup undo backup before copying the new ones.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 06 Mar 2023 13:30:41 +0100] rev 50281
undo-files: factor the vfs map in a repository property
We define it in multiple locations and inconsistencies are appearing. So we now
have a single definition point.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 06 Mar 2023 13:22:47 +0100] rev 50280
undo-files: add a utility function to read the backup-files definition
We will need it in multiple places. so lets factor the logic around.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 06 Mar 2023 13:05:43 +0100] rev 50279
undo-files: use the cleanup function in streamclone
Lets use the same code, so that we can fix things only once.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 06 Mar 2023 13:05:08 +0100] rev 50278
undo-files: also remove the undo.backupfiles
The undo.backupfiles is dealt is directly managed by the transaction instead of
going through the `localrepo.undofiles`. We start doing minimal management for
it before using `cleanup_undo_files` on more situation. Proper handling of it
is an intermediate goal of this series.