Raphaël Gomès <rgomes@octobus.net> [Tue, 28 Sep 2021 13:26:08 +0200] rev 47890
windows-ci: temporarily allow Windows jobs to fail
We have unfortunately ran out of free credit on the runners we were using from
OVH for the Windows CI. We will be disabling the two remaining ones on the 30th
of September, hence we need the CI to pass even if Windows jobs cannot start as
a temporary measure. Hopefully we can find another way of getting Windows
runners soon.
Differential Revision: https://phab.mercurial-scm.org/D11499
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 21 Sep 2021 18:18:56 +0200] rev 47889
manifestlog: also monitor `00manifest.n` when applicable
This let the locarepo's file cache detect outdated nodemap docket and reload the
manifestlog after `localrepo.invalidate` when applicable.
The same problem than issue6554 could affect the Manifest too.
Differential Revision: https://phab.mercurial-scm.org/D11483
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 21 Sep 2021 18:03:37 +0200] rev 47888
changelog: also monitor `00changelog.n` when applicable (issue6554)
This let the locarepo's file cache detect outdated nodemap docket and reload the
changelog after `localrepo.invalidate` when applicable.
Differential Revision: https://phab.mercurial-scm.org/D11482
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 21 Sep 2021 21:18:50 +0200] rev 47887
persistent-nodemap: introduce a test to highlight possible race
Weakness in the current file caching of the changelog means that a writer can
end up using an outdated docket. This might result in "committed"
persistent-nodemap data from a previous writer to be overwritten by a later
writer. This break the strong "append only" assumption of the persistent nodemap
and can result in confused reader.
The race windows are quite narrow. See the test documentation for details.
The issues is fixed in the next changeset.
Differential Revision: https://phab.mercurial-scm.org/D11481
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 21 Sep 2021 21:18:44 +0200] rev 47886
test: enable share-safe in test-persistent-nodemap
We will use some share in this test and I would rather have them safe.
Differential Revision: https://phab.mercurial-scm.org/D11480
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 21 Sep 2021 18:02:07 +0200] rev 47885
filecache: abstract the fetching of the list of tracked file
We will need it for a coming fix that will requires to check a variable list of
file for the changelog.
Differential Revision: https://phab.mercurial-scm.org/D11479
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 20 Sep 2021 18:18:15 +0200] rev 47884
persistent-nodemap: use quiet upgrade in tests
This make them less verbose while keeping the important information in the
checked output.
Differential Revision: https://phab.mercurial-scm.org/D11478
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 20 Sep 2021 18:08:46 +0200] rev 47883
persistent-nodemap: fix a typo in a test comment
oops.
Differential Revision: https://phab.mercurial-scm.org/D11477
Raphaël Gomès <rgomes@octobus.net> [Mon, 20 Sep 2021 15:16:10 +0200] rev 47882
patchbomb: fix traceback on outgoing when not specifying revisions
A user reported that `hg email -n -o` raised with the following traceback:
```
** unknown exception encountered, please report by visiting
** https://mercurial-scm.org/wiki/BugTracker
** Python 3.8.12 (default, Sep 13 2021, 22:12:54) [GCC 7.5.0]
** Mercurial Distributed SCM (version 5.9.1)
** Extensions loaded: patchbomb
Traceback (most recent call last):
File "/usr/pkg/bin/hg", line 61, in <module>
dispatch.run()
File "/usr/pkg/lib/python3.8/site-packages/mercurial/dispatch.py", line 144, in run
status = dispatch(req)
File "/usr/pkg/lib/python3.8/site-packages/mercurial/dispatch.py", line 250, in dispatch
status = _rundispatch(req)
File "/usr/pkg/lib/python3.8/site-packages/mercurial/dispatch.py", line 294, in _rundispatch
ret = _runcatch(req) or 0
File "/usr/pkg/lib/python3.8/site-packages/mercurial/dispatch.py", line 470, in _runcatch
return _callcatch(ui, _runcatchfunc)
File "/usr/pkg/lib/python3.8/site-packages/mercurial/dispatch.py", line 480, in _callcatch
return scmutil.callcatch(ui, func)
File "/usr/pkg/lib/python3.8/site-packages/mercurial/scmutil.py", line 153, in callcatch
return func()
File "/usr/pkg/lib/python3.8/site-packages/mercurial/dispatch.py", line 460, in _runcatchfunc
return _dispatch(req)
File "/usr/pkg/lib/python3.8/site-packages/mercurial/dispatch.py", line 1273, in _dispatch
return runcommand(
File "/usr/pkg/lib/python3.8/site-packages/mercurial/dispatch.py", line 918, in runcommand
ret = _runcommand(ui, options, cmd, d)
File "/usr/pkg/lib/python3.8/site-packages/mercurial/dispatch.py", line 1285, in _runcommand
return cmdfunc()
File "/usr/pkg/lib/python3.8/site-packages/mercurial/dispatch.py", line 1271, in <lambda>
d = lambda: util.checksignature(func)(ui, *args, **strcmdopt)
File "/usr/pkg/lib/python3.8/site-packages/mercurial/util.py", line 1886, in check
return func(*args, **kwargs)
File "/usr/pkg/lib/python3.8/site-packages/hgext/patchbomb.py", line 817, in email
revs = _getoutgoing(repo, dest, revs)
File "/usr/pkg/lib/python3.8/site-packages/hgext/patchbomb.py", line 537, in _getoutgoing
safe_paths = [urlutil.hidepassword(p.rawloc) for p in paths]
File "/usr/pkg/lib/python3.8/site-packages/hgext/patchbomb.py", line 537, in <listcomp>
safe_paths = [urlutil.hidepassword(p.rawloc) for p in paths]
File "/usr/pkg/lib/python3.8/site-packages/mercurial/utils/urlutil.py", line 501, in get_push_paths
msg %= dest
TypeError: %b requires a bytes-like object, or an object that implements __bytes__, not 'NoneType'
```
This is due to patchbomb passing `[None]` in the `dests` parameter of the
multi-paths outgoing function, we fix this in this change and add a
non-regression test.
Differential Revision: https://phab.mercurial-scm.org/D11456
Raphaël Gomès <rgomes@octobus.net> [Thu, 09 Sep 2021 10:42:28 +0200] rev 47881
pep-517: remove the `build-backend` key to allow for users to build extensions
PEP 517 changed how projects should define their build dependencies.
The presence of a `pyproject.toml` file changes the behavior of `pip` to
conform to PEP 517.
Since we haven't updated the `setup.py` file yet (I'm not even sure we're not
an edge case which would make it harder/impossible, I have not tried yet), this
is a workaround to issue6589: it allows users to pass `--no-use-pep517` to pip
to revert to the legacy installer. The build backend is simply assumed to be
the `build_meta:__legacy__` one.
Differential Revision: https://phab.mercurial-scm.org/D11393
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 17 Sep 2021 21:04:21 +0200] rev 47880
tests: make removeemptydirs more portable
The behavior of pwd change from one system (i.e. default shell/sh) from one
system to another so we use fuzzy matching for the output we do not care and we
use narrower command call to highlight what we are trying to test here.
Differential Revision: https://phab.mercurial-scm.org/D11449
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 17 Sep 2021 21:04:17 +0200] rev 47879
check-code: make it possible to ignore the PWD check in some situation
The check-code script does not motivate the banning of $PWD so I am not sure
what it is about. And I will needs to use the env variable in the next tests. So
I am adding a way to make an exception.
Differential Revision: https://phab.mercurial-scm.org/D11450
Raphaël Gomès <rgomes@octobus.net> [Fri, 17 Sep 2021 14:05:56 +0200] rev 47878
relnotes: update next
Differential Revision: https://phab.mercurial-scm.org/D11448
Raphaël Gomès <rgomes@octobus.net> [Fri, 17 Sep 2021 14:05:32 +0200] rev 47877
relnotes: add release notes for 5.9
Differential Revision: https://phab.mercurial-scm.org/D11447
Valentin Gatien-Baron <vgatien-baron@janestreet.com> [Fri, 10 Sep 2021 14:57:00 -0400] rev 47876
narrow: fix commits of empty files
The problem is that when committing a new file with empty contents (or
in general empty file with filelog p1 = -1), hg commit with narrow
doesn't create a filelog revision at all, which causes failures in
further commands.
The problem seems to be that:
- hg thinks that instead of creating a new filelog revision, it can
use the filelog's p1 (the nullrev)
- because it thinks the file contents is the same in that revision and
in p1
- because `narrowfilelog.cmp(nullrev, b'')` is True (unlike with
`filelog.cmp`)
It's not clear to me which `cmp` behaves better. But I think it makes
sense to change the commit code to not to "reuse" the null rev when
adding an empty file with filelog p1 == filelog p2 == -1. This is
consistent with never writing the null rev in the manifest, which `hg
verify` claims is an invariant:
```
inside/c@4: manifest refers to unknown revision 000000000000
```
Differential Revision: https://phab.mercurial-scm.org/D11400
Valentin Gatien-Baron <vgatien-baron@janestreet.com> [Fri, 10 Sep 2021 14:37:03 -0400] rev 47875
narrow: show repo corruption when commiting empty files
Differential Revision: https://phab.mercurial-scm.org/D11399
Kyle Lippincott <spectral@google.com> [Tue, 07 Sep 2021 11:50:12 -0700] rev 47874
filemerge: be more strict when detecting conflict markers, add `|` markers
I received a user complaint about detecting a line that contained 78 `=`
followed by `*/` as a conflict marker. We'll never generate that, we generate 7
identical characters and either the end of the line, or a space. Let's be
explicit about detecting exactly what we produce to reduce the chances of a
false positive.
While we're here, add `|||||||` as a detected conflict marker (generated with
the `keep-merge3` style conflicts).
Differential Revision: https://phab.mercurial-scm.org/D11391
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 30 Aug 2021 23:40:43 +0530] rev 47873
Added signature for changeset 86a60679cf61
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 30 Aug 2021 23:40:37 +0530] rev 47872
Added tag 5.9.1 for changeset 86a60679cf61
Martin von Zweigbergk <martinvonz@google.com> [Fri, 27 Aug 2021 13:51:44 -0700] rev 47871
fix: again allow formatting the working copy while merging
I forgot about unfinished merges (I think I was thinking only about
unfinished merge conflicts) when I wrote
https://phab.mercurial-scm.org/D11209. As a coworker (hg contributor
dploch) reported to me, this led to `hg fix --working-dir` failing
when you have an uncommitted merge. The fix is trivial: just move the
assertion to just before the call to `scmutil.movedirstate()` where it
actually matters.
Differential Revision: https://phab.mercurial-scm.org/D11376
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 26 Aug 2021 21:40:21 -0700] rev 47870
pyoxidizer: add arch to PyOxidizer MSIs
This is the proper filename pattern. This filename format
wasn't properly implemented when PyOxidizer took over Python 3
MSI generation in 603efb3845ba.
Differential Revision: https://phab.mercurial-scm.org/D11359
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 26 Aug 2021 20:05:12 -0700] rev 47869
pyoxidizer: pass arch to WiXInstaller()
We just upgraded Windows automation to PyOxidizer 0.17.0. This
version of PyOxidizer changed the behavior of WiX installers so
installer architecture defaulted to "x64" (before it defaulted
to the target of the pyoxidizer.exe binary). To allow controlling
the architecture of the installer, the `arch` argument was added
to `WiXInstaller`. This commit passes that argument in.
Differential Revision: https://phab.mercurial-scm.org/D11358
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 26 Aug 2021 20:01:01 -0700] rev 47868
contrib: install PyOxidizer 0.17.0
This pulls in some changes we want to improve Windows MSI installers.
This will need separate enhancements to the pyoxidizer.bzl. But those will
be handled in a separate changeset.
Differential Revision: https://phab.mercurial-scm.org/D11357
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 26 Aug 2021 17:39:11 -0700] rev 47867
packaging: reference proper output directory
9438e9b7321a changed the name of the PyOxidizer target, which changed
the name of the output directory. The code changed by this patch
wasn't properly updated by that changeset. This resulted in a run-time
failure due to trying to read from a non-existent directory.
This change should fix the building of Python 3 Inno installers.
Differential Revision: https://phab.mercurial-scm.org/D11356
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 25 Aug 2021 19:33:25 -0700] rev 47866
packaging: pass extra_pyoxidizer_vars only to pyoxidizer
Before, we would attempt to call a function (build_installer_py2exe)
that didn't accept this keyword argument. This was preventing the
building of py2exe installers.
Differential Revision: https://phab.mercurial-scm.org/D11355
Matt Harbison <matt_harbison@yahoo.com> [Thu, 26 Aug 2021 11:04:14 -0400] rev 47865
hg: don't attempt to extend `sys.path` with the user site without `APPDATA`
This variable is created by the system and *should* be available, but
test-lfs-bundle.t has a test where it is explicitly unset. It wasn't caught
before because prior to 95af358fcdfe, it was limited to the py2exe binary. As a
precaution, fix both that and the pyoxidizer case that was causing the test to
fail.
Differential Revision: https://phab.mercurial-scm.org/D11354
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 26 Aug 2021 09:49:09 +0200] rev 47864
ci: only run the phabricator step if the previous on succeeded
It seems like f6879956a386 regressed the intended behavior.
Differential Revision: https://phab.mercurial-scm.org/D11342
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 25 Aug 2021 11:32:49 +0200] rev 47863
clone: properly create target directories during local clone (issue6581)
The store encoding was mudding the water. This lead to local clone crashing for
file with long filename as their destination directory needed to be encoded.
Differential Revision: https://phab.mercurial-scm.org/D11340