Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 19 Aug 2021 17:47:27 +0200] rev 47858
resources: stop important a non existent FileNotFoundError
The error was hidden by the wide try/except
Differential Revision: https://phab.mercurial-scm.org/D11311
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 19 Aug 2021 17:46:46 +0200] rev 47857
template: FileNotFoundError is actually a built in exception
However it is python3 only.
Differential Revision: https://phab.mercurial-scm.org/D11310
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 19 Aug 2021 18:04:14 +0200] rev 47856
check-code: drop the camelcase checks
Fro about 2 years we have been using CamelCase is class names. That rules gets
in the way of assigning class or exception in compatibility layers.
I think it is safe to drop it now that we started using CamelCase for some case.
My motivation for this is the need to assign `FileNotFoundError` in `pycompat`.
Differential Revision: https://phab.mercurial-scm.org/D11309
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 20 Aug 2021 00:23:49 +0530] rev 47855
Added signature for changeset
53221078e0de
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 20 Aug 2021 00:23:40 +0530] rev 47854
Added tag 5.9 for changeset
53221078e0de
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 16 Aug 2021 18:39:58 +0200] rev 47853
pyoxidizer: always run the associated CI jobs
Now that all tests are passing, we can enable this by default.
Differential Revision: https://phab.mercurial-scm.org/D11306
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 18 Aug 2021 21:28:36 +0200] rev 47852
pyoxidizer: skip for ZeroConf related test for now
These test are failing for obscure reason. They are fairly minor and Since they
are the only thing between us and enabling pyoxidizer testing in the CI by
default, we just shallow the bad output for now.
Differential Revision: https://phab.mercurial-scm.org/D11305
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 18 Aug 2021 21:05:46 +0200] rev 47851
pyoxidizer: disable the test for disabled & broken extensions help
The test is a bit fragile and the feature is significantly broken for 3rd party
extension already. So we disable that section with a comment about why and what
is needed.
Differential Revision: https://phab.mercurial-scm.org/D11304
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 18 Aug 2021 21:37:55 +0200] rev 47850
pyoxidizer: re-install PYTHONPATH behavior
Hooks and extensions can rely on PYTHONPATH value. Yet the pyoxidized binary
ignore the variable. So we manually reinstall the behavior to fix various tests
and restore the expected behavior.
This positively affects:
- test-extension.t
- test-hook.t
Differential Revision: https://phab.mercurial-scm.org/D11302
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 18 Aug 2021 16:48:32 +0200] rev 47849
windows: add pytest-vcr to the dependencies
This will lead to pyoxidizer including it in its binary.
This fix test-phabricator.t
Differential Revision: https://phab.mercurial-scm.org/D11301
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 18 Aug 2021 16:02:46 +0200] rev 47848
pyoxidizer: wrap the pyoxidizer script on multiple line
This is clearer and will help with future edition of the script.
Differential Revision: https://phab.mercurial-scm.org/D11300
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 18 Aug 2021 15:05:25 +0200] rev 47847
pyoxidized: silence the fuzzywuzzy warning about python-Levenshtein
I don't think we need the fast implementation for the test so lets ignore it for
now.
Differential Revision: https://phab.mercurial-scm.org/D11299
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 18 Aug 2021 13:16:04 +0200] rev 47846
pyoxidized: install fuzzywuzzy too
This is necessary for some of the release note tooling.
Differential Revision: https://phab.mercurial-scm.org/D11298
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 18 Aug 2021 14:57:34 +0200] rev 47845
pyoxidized: adapt output of test-install.t
The python lib and template directories are in different location that requires
a different patterns.
Differential Revision: https://phab.mercurial-scm.org/D11297
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 18 Aug 2021 13:02:08 +0200] rev 47844
pyoxidized: disable part of `test-install.t` related to pip and virtualenv
This part are testing manual installation of Mercurial, this is not relevant
for the pyoxidizer variant.
Differential Revision: https://phab.mercurial-scm.org/D11296
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 18 Aug 2021 12:53:40 +0200] rev 47843
pyoxidized: adapt output of test-bad-extension.t
The file path in the traceback become module name.
Differential Revision: https://phab.mercurial-scm.org/D11295
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 18 Aug 2021 12:49:55 +0200] rev 47842
pyoxidized: adapt output of test-flagprocessor.t
The file path in the traceback become module name.
Differential Revision: https://phab.mercurial-scm.org/D11294
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 18 Aug 2021 12:42:16 +0200] rev 47841
pyoxidized: adapt output of `test-phases.t`
We are getting one less line. I am not sure why, but it seems fairly minor.
Differential Revision: https://phab.mercurial-scm.org/D11293
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 18 Aug 2021 01:27:45 +0200] rev 47840
pyoxidized: add a copy of the `doc` directory in the right location
This get the hacky setup closer to how an actual install is setup.
Differential Revision: https://phab.mercurial-scm.org/D11292
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 18 Aug 2021 01:26:25 +0200] rev 47839
pyoxidized: add a copy of the `contrib` directory in the right location
This get the hacky setup closer to how an actual install is setup.
Differential Revision: https://phab.mercurial-scm.org/D11291
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 18 Aug 2021 01:18:34 +0200] rev 47838
pyoxidized: add a copy of the `defaultrc` file in the right location
This get the hacky setup closer to how an actual install is setup.
Differential Revision: https://phab.mercurial-scm.org/D11290
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 18 Aug 2021 02:08:03 +0200] rev 47837
pyoxidized: add a copy of the `helptext` directory in the right location
This get the hacky setup closer to how an actual install is setup.
Differential Revision: https://phab.mercurial-scm.org/D11289
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 18 Aug 2021 01:41:02 +0200] rev 47836
template: handle missing resource in `_readmapfile`
This fix the remaining issue in test-template-map.t.
Differential Revision: https://phab.mercurial-scm.org/D11288
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 18 Aug 2021 01:10:40 +0200] rev 47835
pyoxidized: add a copy of the `templates` directory in the right location
This fix about 10 extra test bring the number of currently failing test to about 12.
Differential Revision: https://phab.mercurial-scm.org/D11287
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 18 Aug 2021 01:07:38 +0200] rev 47834
pyoxidized: add a dedicated target in the tests
We will need to setup more items to make the "quick" version work on stable,
having a dedicated operation will allow to contains change to that operation.
Differential Revision: https://phab.mercurial-scm.org/D11286
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 17 Aug 2021 20:48:52 +0200] rev 47833
pyoxidized: adapt test-devel-warnings.t
Differential Revision: https://phab.mercurial-scm.org/D11284
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 17 Aug 2021 21:57:59 +0200] rev 47832
test-extension: adapt output to pyoxidizer
The traceback use module name instead of filename.
The rest of the test is still on fire for various other reasons. However that
specific output mismatch is now fixed.
Differential Revision: https://phab.mercurial-scm.org/D11285
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 17 Aug 2021 20:48:34 +0200] rev 47831
pyoxidized: add a `pyoxidizer` hghave keyword for line matching
Some output line can be affected by pyoxidizer, for example the source file path
are replaced by the module name. We introduce a new condition keyword to cope
with this.
Differential Revision: https://phab.mercurial-scm.org/D11283
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 17 Aug 2021 14:38:25 +0200] rev 47830
templater: swap `\` with `/` in more location
This is similar to the previous changeset, but apply that logic to
_readmapfile.
Differential Revision: https://phab.mercurial-scm.org/D11282
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 17 Aug 2021 13:22:06 +0200] rev 47829
templater: swap `\` with `/` to allow the resource logic to kicks in
Without this change our wrapper to the resource logic will fails to details the
nesting and try to pass `directory/file` entry to the resource module, leading
to a crash.
Ideally, we should track down all caller passing `\` instead of `/`, but that
is far more intrusive and we would like to have a working pyoxidized version
working for 5.9 It will be easy to add a warning to the above code to track
down "bad" caller during the 6.0 cycle.
This reduce the number of failing test with pyoxidizer from 52 to 23
Differential Revision: https://phab.mercurial-scm.org/D11281
Raphaël Gomès <rgomes@octobus.net> [Thu, 05 Aug 2021 18:38:42 +0200] rev 47828
heptapod-ci: extend timeout for pytype checking
This test routinely times out for loaded or older machines.
Differential Revision: https://phab.mercurial-scm.org/D11258
Matt Harbison <matt_harbison@yahoo.com> [Mon, 09 Aug 2021 00:49:50 -0400] rev 47827
ci: run --pyoxidized tests on Windows
They still have numerous failure, but at least we can start fixing them now.
Differential Revision: https://phab.mercurial-scm.org/D11278
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 10 Aug 2021 12:56:32 +0200] rev 47826
run-tests: introduce a --pyoxidized option
This options make it possible to use the pyoxidizer version to run the tests.
This is a first basic version that is windows only.
The test needs a working python, with Mercurial installed. However the
pyoxidizer product is "self contains" without a "usable" Python. There have been
discussion to have a fully functional `hg admin::python` command providing a
fully functional python interpreter, but nothing is of the sort is ready yet. In
In the meantime we use an hybrid approach, similar to what we do for testing
`rhg`. We install a full "normal" Mercurial, but also the pyxodizer product as
the official `hg binary`. That way, we use the pyoxidizer version or everything,
but test that needs to run python have it available, with a fully functional
Mercurial package.
This first version is pretty basic (Windows only, no --local, not
--with-pyoxidized), but it runs, various bug that we will have to fix.
Differential Revision: https://phab.mercurial-scm.org/D11277
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 10 Aug 2021 11:45:43 +0200] rev 47825
ci: add a "all" template to easily control "when" test run
When debugging some job (usually windows one) it is handy to have a way to pass
all other jobs to manual execution.
We add a "root" template to control just that.
Differential Revision: https://phab.mercurial-scm.org/D11276
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 10 Aug 2021 19:19:53 +0530] rev 47824
Added signature for changeset
2813d406b036
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 10 Aug 2021 19:19:47 +0530] rev 47823
Added tag 5.9rc1 for changeset
2813d406b036
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 07 Aug 2021 16:51:47 +0200] rev 47822
issue6528: add a config option to control the fixing on the fly
This will allow people who know to be safe to avoid any performance overhead
(and other potential issue).
Differential Revision: https://phab.mercurial-scm.org/D11271
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 07 Aug 2021 14:12:28 +0200] rev 47821
issue6528: also filter delta on the fly when applying a changegroup
This ensure that corrupted clone does not spread corruption to "fixed" version.
This might come at a performance cost, we will had a config option to control
this behavior in the next changesets.
Differential Revision: https://phab.mercurial-scm.org/D11270
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 07 Aug 2021 14:13:53 +0200] rev 47820
filelog: open the writing context a bit earlier in `addgroup`
This is a small change made ahead of the next patch for clarification.
Differential Revision: https://phab.mercurial-scm.org/D11269
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 07 Aug 2021 12:39:01 +0200] rev 47819
issue6528: implement _is_revision_affected_fast using callback
The delta comming from a bundle/stream does not exists in the revlog yet, so we
will need other way to retrieve the same information.
To prepare for this we split the function to use callbacks in the core logic.
Differential Revision: https://phab.mercurial-scm.org/D11268
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 07 Aug 2021 12:38:48 +0200] rev 47818
issue6528: implement _is_revision_affected using callback
The delta comming from a bundle/stream does not exists in the revlog yet, so we
will need other way to retrieve the same information.
To prepare for this we split the function to use callbacks in the core logic.
Differential Revision: https://phab.mercurial-scm.org/D11267
Raphaël Gomès <rgomes@octobus.net> [Fri, 06 Aug 2021 12:10:36 +0200] rev 47817
debugcommands: add a `--paranoid` option to `debug-repair-issue-6528`
See justification inline.
Differential Revision: https://phab.mercurial-scm.org/D11263
Raphaël Gomès <rgomes@octobus.net> [Thu, 05 Aug 2021 17:00:03 +0200] rev 47816
repair: improve performance of detection of revisions affected by
issue6528
Explanations inside the patch. I've tested this on Mozilla-Central and it's
5 times faster than the naive approach on my laptop.
Differential Revision: https://phab.mercurial-scm.org/D11262
Raphaël Gomès <rgomes@octobus.net> [Tue, 27 Jul 2021 21:45:27 +0200] rev 47815
debugcommands: introduce a debug command to repair repos affected by
issue6528
This command is quite basic and slow, it will loop over the entirety of the
filelogs in the repository and check each revision for corruption, then fixes
the affected filelogs. It takes under 25 minutes for Mozilla-Central on my
not-top-of-the-line laptop, using the `--to-report` and `--from-report` options
will make this pretty tolerable to use, I think.
This change also introduces a test for the fix.
Differential Revision: https://phab.mercurial-scm.org/D11239
Matt Harbison <matt_harbison@yahoo.com> [Mon, 09 Aug 2021 19:49:57 -0400] rev 47814
contrib: switch the Windows bootstrap environment to py3.9
Use the built in `venv` module instead of `virtualenv` for simplicity, and
upgrade to a modern Mercurial that supports py3.
One issue here is that `venv` doesn't copy `python3{,Y}.dll` into the `Scripts`
subdirectory, so running the `hg.exe` that gets installed immediately fails on a
clean system because Python isn't in `PATH`. There is code in `python.exe` to
detect when it is in a venv and add the original python install to the DLL
lookup path, which we don't do in `hg.exe` yet. The simple workaround for now is
to run the `hg` script with `python.exe`. Typically `PYTHONLEGACYWINDOWSSTDIO`
must be set in the environment on Windows, but the clone process works without
it.
Differential Revision: https://phab.mercurial-scm.org/D11275
Matt Harbison <matt_harbison@yahoo.com> [Mon, 09 Aug 2021 19:36:26 -0400] rev 47813
contrib: comment out the 64-bit py38 dependency installation on Windows
Not sure what is going on here, but it appears to not install py3.8 x64 in the
usual `C:\hgdev` directory. The x32 installer works fine. I'm assuming this is
a bug in this version of the installer, but didn't look into it too much.
Differential Revision: https://phab.mercurial-scm.org/D11274
Matt Harbison <matt_harbison@yahoo.com> [Mon, 09 Aug 2021 19:32:44 -0400] rev 47812
contrib: drop python2.7 from the Windows dependency install script
While we aren't quite ready to drop py27 yet, the MS compiler is no longer
available from MS (there is a copy on github if it's really needed), and that
causes the script to fail.
Differential Revision: https://phab.mercurial-scm.org/D11273
Matt Harbison <matt_harbison@yahoo.com> [Mon, 09 Aug 2021 19:24:46 -0400] rev 47811
contrib: log the command and args for every process installing windows deps
This is a little noisier, but makes it simple to debug when things fail.
Differential Revision: https://phab.mercurial-scm.org/D11272
Raphaël Gomès <rgomes@octobus.net> [Fri, 23 Jul 2021 10:47:12 +0200] rev 47810
windows-ci: run Windows CI automatically alongside the others
This will enable us to make Windows Python 3 a first-class citizen for the next
6.0 cycle. We will probably get some flaky tests and we're missing others that
are skipped, but we'll turn them on it future patches.
Differential Revision: https://phab.mercurial-scm.org/D11256
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 05 Aug 2021 12:53:44 +0200] rev 47809
vfs: always use / as file separator (
issue6546)
Various part of vfs already enforce `/` usage and using `\` confuse the encoded
vfs. So we simply use `/` all the time.
Differential Revision: https://phab.mercurial-scm.org/D11260
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 05 Aug 2021 12:53:36 +0200] rev 47808
subrepo: compare normalised vfs path
Otherwise the realpath call can turn `/` into `\` on windows confusing the
check.
(We probably needs this in more location)
Differential Revision: https://phab.mercurial-scm.org/D11259
Raphaël Gomès <rgomes@octobus.net> [Thu, 05 Aug 2021 18:25:35 +0200] rev 47807
pager: account for flakiness in Windows output
This test case is cursed and probably not worth losing more time over. This
makes apparent what the intended behavior is while still removing the flakiness
from the CI.
Differential Revision: https://phab.mercurial-scm.org/D11257
Raphaël Gomès <rgomes@octobus.net> [Fri, 23 Jul 2021 10:45:08 +0200] rev 47806
windows-ci: clean up the Heptapod CI file now that the baseline is solid
Enough work has been done one the CI side, this now works with little effort
on our side. The next patch will remove the manual switch.
Differential Revision: https://phab.mercurial-scm.org/D11254
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 03 Aug 2021 21:22:02 +0200] rev 47805
test-nointerrupt: make "sure" the handler "might" trigger (
issue6558)
We are sure that the signal got sent in the right time frame, however, we still
have race, so either the code is actually buggy or we need some security to make
sure the signal get processed.
We might be affected by https://bugs.python.org/
issue43406 ?
Differential Revision: https://phab.mercurial-scm.org/D11251
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 03 Aug 2021 19:26:26 +0200] rev 47804
testing: make sure write_file is "atomic"
This make sure viewer cannot see the new file with partial content.
This was likely the cause of some flakiness in `test-nointerrupt.t`
Differential Revision: https://phab.mercurial-scm.org/D11250
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 04 Aug 2021 19:45:13 +0200] rev 47803
test: disable test-subrepo-git.t in python2 + chg
I am a couple of days in try to debug that at it seems minor enough with enough
other priority to simply disable it for now.
Differential Revision: https://phab.mercurial-scm.org/D11253
Georges Racinet <georges.racinet@octobus.net> [Tue, 20 Jul 2021 17:20:19 +0200] rev 47802
hgwebdir: avoid systematic full garbage collection
Forcing a systematic full garbage collection upon each request
can serioulsy harm performance. This is reported as
https://bz.mercurial-scm.org/show_bug.cgi?id=6075
With this change we're performing the full collection according
to a new setting, `experimental.web.full-garbage-collection-rate`.
The default value is 1, which doesn't change the behavior and will
allow us to test on real use cases. If the value is 0, no full garbage
collection occurs.
Regardless of the value of the setting, a partial garbage collection
still occurs upon each request (not attempting to collect objects from
the oldest generation). This should be enough to take care of
reference cycles that have been created by the last request
(assessment of this requires changing the setting, not to be 1).
In my experience chasing memory leaks in Mercurial servers,
the full collection never reclaimed any memory, but this is with
Python 3 and biased towards small repositories.
On the other hand, as explained in the Python developer docs [1],
frequent full collections are very harmful in terms of performance if
lots of objects survive the collection, and hence stay in the
oldest generation. Note that `gc.collect()` is indeed trying to
collect the oldest generation [2]. This happens usually in two cases:
- unwanted lingering objects (i.e., an actual memory leak that
the GC cannot do anything about). Sadly, we have lots of those
these days.
- desireable long-term objects, typically in caches (not inner caches
carried by repositories, which should be collected with them). This
is a subject of interest for the Heptapod project.
In short, the flat rate that this change still permits is
probably a bad idea in most cases, and the default value can
be tweaked later on (or even be set to 0) according to experiments
in the wild.
The test is inspired from test-hgwebdir-paths.py
[1] https://devguide.python.org/garbage_collector/#collecting-the-oldest-generation
[2] https://docs.python.org/3/library/gc.html#gc.collect
Differential Revision: https://phab.mercurial-scm.org/D11204
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 03 Aug 2021 18:29:31 +0200] rev 47801
check-module-imports: ignore non-stdlib module installed by distribution
Previously, the check script would detect breezy as part of the stdlib if
installed using the debian package manager.
This silence the following complains:
tests/test-convert-bzr.t:117: imports not lexically sorted: breezy.bzr.bzrdir < sys
tests/test-convert-bzr.t:117: stdlib import "breezy.bzr.bzrdir" follows local import: breezy
tests/test-convert-bzr-ghosts.t:7: imports not lexically sorted: breezy.bzr.bzrdir < sys
tests/test-convert-bzr-ghosts.t:7: stdlib import "breezy.bzr.bzrdir" follows local import: breezy
tests/test-convert-bzr-treeroot.t:7: imports not lexically sorted: breezy.bzr.bzrdir < sys
tests/test-convert-bzr-treeroot.t:7: stdlib import "breezy.bzr.bzrdir" follows local import: breezy
Differential Revision: https://phab.mercurial-scm.org/D11249
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com> [Mon, 02 Aug 2021 08:06:27 -0400] rev 47800
remotefilelog: fix what looks like a wrong refactoring
when various store functions started returning a revlog type as the
first element of the tuple.
Differential Revision: https://phab.mercurial-scm.org/D11243
Georges Racinet <georges.racinet@octobus.net> [Sun, 01 Aug 2021 14:39:38 +0200] rev 47799
rust-nodemap: falling back to C impl as mitigation
This is a mitigation for https://bz.mercurial-scm.org/show_bug.cgi?id=6554
We see sometimes almost all data except the most recent revisions
removed from the persistent nodemap, but we don't know how to
reproduce yet.
This has sadly repercussions beyond just needing to reconstruct the
persistent nodemap: for instance, this automatically filters out
all bookmarks pointing to revisions that the nodemap cannot resolve.
If such filtering happens in a transaction, the update of the
bookmarks file that happens at the end of transaction loses all
bookmarks that have been affected. There may be similar consequences
for other data.
So this is a data loss, something that we have to prevent as soon as
possible.
As a mitigation measure, we will now fallback to the C implementation
in case nodemap lookups failed. This will add some latency, e.g., in
discovery, yet less than disabling the persistent nodemap entirely.
We considered implementing the fallback directly on the Python
side, but `revlog.get_rev()` is not systematically used, there are
also several direct calls to the index method (`self.index.rev()` for
a `revlog` instance). It is therefore more direct to implement the
mitigation in the rust-cpython wrapper.
Differential Revision: https://phab.mercurial-scm.org/D11238
Anton Shestakov <av6@dwimlabs.net> [Wed, 28 Jul 2021 13:45:07 +0300] rev 47798
obsolete: disable other evolution config options if createmarkers is off
We used to raise an abort in this case, but recent changes to local clone
command (
377d8fc20e34) resulted in destrepo both caring about
experimental.evolution config options and not initializing extensions.
So imagine if you had evolve and allowdivergence enabled in your ~/.hgrc. Local
clone stopped working after
377d8fc20e34 because evolve sets
experimental.evolution=all, but only on srcrepo, for destrepo the extension is
not initialized. It's possible to make local cloning work by initializing
extensions for destrepo in some cases, but in other cases (e.g. allowdivergence
in ~/.hgrc, evolve extension in original-repo/.hg/hgrc) it would still fail.
In a discussion with Pierre-Yves David it was decided to simply force other
evolution options to be false if createmarkers is not enabled.
Differential Revision: https://phab.mercurial-scm.org/D11223
Anton Shestakov <av6@dwimlabs.net> [Wed, 28 Jul 2021 13:47:21 +0300] rev 47797
fix: use obsolete.isenabled() to check for experimental.allowdivergence
Now that obsolete.isenabled() can also check if divergence is allowed, let's
use it for consistency. Other experimental.evolution options are already
checked via this function.
Differential Revision: https://phab.mercurial-scm.org/D11222
Anton Shestakov <av6@dwimlabs.net> [Wed, 28 Jul 2021 13:45:41 +0300] rev 47796
rebase: use obsolete.isenabled() to check for experimental.allowdivergence
Now that obsolete.isenabled() can also check if divergence is allowed, let's
use it for consistency. Other experimental.evolution options are already
checked via this function.
Differential Revision: https://phab.mercurial-scm.org/D11221
Anton Shestakov <av6@dwimlabs.net> [Wed, 28 Jul 2021 13:45:07 +0300] rev 47795
obsolete: disable other evolution config options if createmarkers is off
We used to raise an abort in this case, but recent changes to local clone
command (
377d8fc20e34) resulted in destrepo both caring about
experimental.evolution config options and not initializing extensions.
So imagine if you had evolve and allowdivergence enabled in your ~/.hgrc. Local
clone stopped working after
377d8fc20e34 because evolve sets
experimental.evolution=all, but only on srcrepo, for destrepo the extension is
not initialized. It's possible to make local cloning work by initializing
extensions for destrepo in some cases, but in other cases (e.g. allowdivergence
in ~/.hgrc, evolve extension in original-repo/.hg/hgrc) it would still fail.
In a discussion with Pierre-Yves David it was decided to simply force other
evolution options to be false if createmarkers is not enabled.
Differential Revision: https://phab.mercurial-scm.org/D11223
Anton Shestakov <av6@dwimlabs.net> [Wed, 28 Jul 2021 13:47:21 +0300] rev 47794
fix: use obsolete.isenabled() to check for experimental.allowdivergence
Now that obsolete.isenabled() can also check if divergence is allowed, let's
use it for consistency. Other experimental.evolution options are already
checked via this function.
Differential Revision: https://phab.mercurial-scm.org/D11222
Anton Shestakov <av6@dwimlabs.net> [Wed, 28 Jul 2021 13:45:41 +0300] rev 47793
rebase: use obsolete.isenabled() to check for experimental.allowdivergence
Now that obsolete.isenabled() can also check if divergence is allowed, let's
use it for consistency. Other experimental.evolution options are already
checked via this function.
Differential Revision: https://phab.mercurial-scm.org/D11221
Raphaël Gomès <rgomes@octobus.net> [Mon, 02 Aug 2021 16:23:45 +0200] rev 47792
heptapod-ci: enable pytype testing for all pipelines
Now that pytype agrees with the codebase, let's run it by default to catch
regressions.
Differential Revision: https://phab.mercurial-scm.org/D11242
Raphaël Gomès <rgomes@octobus.net> [Mon, 02 Aug 2021 16:21:54 +0200] rev 47791
pytype: add assertions to explain revlogv2 invariants to Pytype
Differential Revision: https://phab.mercurial-scm.org/D11241
Matt Harbison <matt_harbison@yahoo.com> [Fri, 30 Jul 2021 00:11:56 -0400] rev 47790
typing: add several assertions to dirstatemap to appease pytype
(grafted from default to stable)
I think it's been mentioned in IRC that these can't be None in this case. This
fixes:
File "/mnt/c/Users/Matt/hg/mercurial/dirstatemap.py", line 213, in addfile: unsupported operand type(s) for &: 'None' and 'int' [unsupported-operands]
No attribute '__and__' on None or '__rand__' on int
Called from (traceback):
line 290, in reset_state
File "/mnt/c/Users/Matt/hg/mercurial/dirstatemap.py", line 214, in addfile: unsupported operand type(s) for &: 'None' and 'int' [unsupported-operands]
No attribute '__and__' on None or '__rand__' on int
Called from (traceback):
line 290, in reset_state
Differential Revision: https://phab.mercurial-scm.org/D11235
Matt Harbison <matt_harbison@yahoo.com> [Mon, 02 Aug 2021 10:51:19 -0400] rev 47789
windows: avoid a bytes vs unicode crash reading passwords on py2
This broke in
5b3513177f2b. Specifically, after typing in the password on py2,
it would crash with:
TypeError: putwch() argument 1 must be cannot convert raw buffers, not str
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com> [Sun, 01 Aug 2021 10:54:03 -0400] rev 47788
streamclone: ensure the server sends the right amount of data
Otherwise, the client would fail with some confusing error. I have
seen an error which I think is this, perhaps due to a concurrent
revlog split, which streamclones do not handle correctly and would
result in a short read of the index of the revlog being split.
Differential Revision: https://phab.mercurial-scm.org/D11236
Augie Fackler <augie@google.com> [Thu, 29 Jul 2021 16:23:45 -0400] rev 47787
rewriteutil: fix crash when a rewritten message references f{6,64}
Without this, the rewriteutil logic thinks it's found a reference to the wdir
pseudo-revision, and then tries to look it up and rewrite it. Stop it from
doing that.
Amusingly, I had trouble working with this changeset when I didn't
describe the defect above using a regular expression, because it would
trigger the bug in my installed version of hg.
Differential Revision: https://phab.mercurial-scm.org/D11232
Augie Fackler <augie@google.com> [Thu, 29 Jul 2021 16:18:35 -0400] rev 47786
tests: add explicit coverage for update_hash_refs from rewriteutil
I couldn't find any evidence this is covered by tests in core (but there's a
good chance I missed it). We've seen a cute bug in that code, but first
let's just cover the cases that work correctly.
Differential Revision: https://phab.mercurial-scm.org/D11231
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 27 Jul 2021 19:36:20 +0200] rev 47785
store: document the decoding discrepancy in store.py
This will help future people that might be looking into this.
Differential Revision: https://phab.mercurial-scm.org/D11220
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 27 Jul 2021 19:19:00 +0200] rev 47784
clone: add a file with special character while testing uncompressed
This will make sure we currently do not have any actual impact from
issue6548.
Differential Revision: https://phab.mercurial-scm.org/D11219
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 27 Jul 2021 19:16:30 +0200] rev 47783
clone: test local clone in `test-clone-uncompressed.t` too
This is not an uncompressed test but needs to be tested in the same kind of
constraints regarding special file name.
Differential Revision: https://phab.mercurial-scm.org/D11218
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 27 Jul 2021 00:49:16 +0200] rev 47782
test-transaction-safety: relax some of the synchronisation schedule
We can have `internal` and `external` runs at the same time, so we unlock
`external` a bit sooner.
Differential Revision: https://phab.mercurial-scm.org/D11216
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 27 Jul 2021 00:44:57 +0200] rev 47781
test-transaction-safety: document the test schedule
This helps reader to understand how the test work and actually helped me to
detect a missing synchronisation step.
Differential Revision: https://phab.mercurial-scm.org/D11215
Simon Sapin <simon.sapin@octobus.net> [Thu, 29 Jul 2021 12:22:25 +0200] rev 47780
rhg: Propagate permission errors when finding a repository
The Rust standard library has a `Path::is_dir` method that returns false
for any I/O error (such as a permission error),
not just "No such file or directory".
Instead add an `is_dir` function that returns false for non-directories
and for "No such file or directory" errors, but propagates other I/O errors.
Differential Revision: https://phab.mercurial-scm.org/D11230
Simon Sapin <simon.sapin@octobus.net> [Thu, 29 Jul 2021 11:53:03 +0200] rev 47779
rhg: Add build and config instructions to the README file
This adds documentation explaining how to compile, configure, and use rhg
as well as how the fallback mechanism works.
Differential Revision: https://phab.mercurial-scm.org/D11229
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 28 Jul 2021 12:39:06 +0200] rev 47778
dirstate: use `add` in the deprecation message about `add`
The previous message was talking about `remove`.
Differential Revision: https://phab.mercurial-scm.org/D11224
Kyle Lippincott <spectral@google.com> [Mon, 26 Jul 2021 15:02:23 -0700] rev 47777
help: correct config.profiling.freq name (frequency->freq)
Differential Revision: https://phab.mercurial-scm.org/D11217
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 28 Jul 2021 13:18:13 +0200] rev 47776
run-tests: use a small timeout for chg instance
There is case where the test runner fails to clean up the temporary files in
that case, spawned chg instance can stay around for 1 hours. Getting them to
shut down sooner cannot hurt.
(We should also use a more robust approach for this cleanup)
Differential Revision: https://phab.mercurial-scm.org/D11227
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 28 Jul 2021 14:56:10 +0200] rev 47775
run-tests: do not inherit file descriptor when running a command
This is one of the difference between python2 and python3 and could have been a
reason why test hang with python2 + chg. This does not seems to help the
hanging issue at all…
However, now that this is written lets reduce the difference between python2
and python3.
Differential Revision: https://phab.mercurial-scm.org/D11226
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 28 Jul 2021 14:55:06 +0200] rev 47774
dummyssh: make sure we don't inherit files descriptor to the children
This is one of the difference between python2 and python3 and could have been a
reason why test hang with python2 + chg. This does not seems to help the
hanging issue at all…
However, now that this is written lets reduce the difference between python2
and python3.
Differential Revision: https://phab.mercurial-scm.org/D11225
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 29 Jul 2021 02:20:26 +0200] rev 47773
tests: make test-serve works on system that allow user to bind low port
It is possible to encounter linux system configured in a way that allow port
< 1024 to be bound by any users. So we update a test to focus more on the actual
test: "resolving `daytime` to an actual port number.
The new auto-scaling CI runner provided by clever cloud is doing so. This is the
initial motivation for this change, but it seems useful anyway.
Differential Revision: https://phab.mercurial-scm.org/D11228
Augie Fackler <augie@google.com> [Thu, 29 Jul 2021 17:04:55 -0400] rev 47772
git: restore basic functionality (
issue6545)
It looks like a big refactor happened on dirstate, and the git extension was
just ignored.
Differential Revision: https://phab.mercurial-scm.org/D11234
Augie Fackler <augie@google.com> [Thu, 29 Jul 2021 17:03:35 -0400] rev 47771
dirstate: fix typo in docstring
Spotted while repairing git extension tests.
Differential Revision: https://phab.mercurial-scm.org/D11233
Matt Harbison <matt_harbison@yahoo.com> [Fri, 30 Jul 2021 00:11:56 -0400] rev 47770
typing: add several assertions to dirstatemap to appease pytype
I think it's been mentioned in IRC that these can't be None in this case. This
fixes:
File "/mnt/c/Users/Matt/hg/mercurial/dirstatemap.py", line 213, in addfile: unsupported operand type(s) for &: 'None' and 'int' [unsupported-operands]
No attribute '__and__' on None or '__rand__' on int
Called from (traceback):
line 290, in reset_state
File "/mnt/c/Users/Matt/hg/mercurial/dirstatemap.py", line 214, in addfile: unsupported operand type(s) for &: 'None' and 'int' [unsupported-operands]
No attribute '__and__' on None or '__rand__' on int
Called from (traceback):
line 290, in reset_state
Differential Revision: https://phab.mercurial-scm.org/D11235
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 26 Jul 2021 21:55:53 +0200] rev 47769
help: indicate how to run downgrade a repository using persistent nodemap
We have a couple of report of people needing this. I am not fan of pointing
people to a debug command, but we don't have much better to offer right now
Differential Revision: https://phab.mercurial-scm.org/D11214
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 26 Jul 2021 21:52:10 +0200] rev 47768
help: use the correct spelling for `slow-path` in persistent nodemap help
Differential Revision: https://phab.mercurial-scm.org/D11213
Martin von Zweigbergk <martinvonz@google.com> [Mon, 11 Mar 2019 10:59:35 -0700] rev 47767
fix: use scmutil.movedirstate() instead of reimplementing
I wrote this patch 2 years ago as a little cleanup. I wanted to
generally used `scmutil.movedirstate()` instead of manually updating
the dirstate because that is easy to get wrong. I didn't know until
today that the current code had a bug. So I added the test case two
patches before this one and dusted off this one patch. This is a
little slower than the previous code, as it diffs two
manifests. However, it fixes the bug and I don't think it's going to
be noticeably slower anyway.
Differential Revision: https://phab.mercurial-scm.org/D11210
Martin von Zweigbergk <martinvonz@google.com> [Mon, 11 Mar 2019 10:56:56 -0700] rev 47766
fix: rewrite writeworkingdir() to explicitly not work with merges
`hg fix` errors out early if there is an unfinished merge, so we
should have only one parent here. Making that explicit makes my next
patches simpler.
Differential Revision: https://phab.mercurial-scm.org/D11209
Martin von Zweigbergk <martinvonz@google.com> [Thu, 22 Jul 2021 17:12:56 -0700] rev 47765
tests: demonstrate bug in `hg fix` with incorrectly dirty working copy
If the parent commit needs formatting but the working copy already has
the correct formatting, then the working copy will be reported as
modified even though it's clean (because the size in the dirstate is
incorrect). Because the bug only occurs when the size changes, I
modified the formatter used in the test case to remove repeated
spaces.
Differential Revision: https://phab.mercurial-scm.org/D11208
Matt Harbison <matt_harbison@yahoo.com> [Wed, 21 Jul 2021 15:50:17 -0400] rev 47764
upgrade: byteify an i18n message
Differential Revision: https://phab.mercurial-scm.org/D11207
Matt Harbison <matt_harbison@yahoo.com> [Wed, 21 Jul 2021 15:34:35 -0400] rev 47763
typing: convert an annotation to an assertion in commands.py
Pytype was happy with the annotation at one point, but 2021.04.15 now complains.
Differential Revision: https://phab.mercurial-scm.org/D11206