Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 19:21:58 -0500] rev 46694
subrepo: handle unexpected file types from git gracefully
This was flagged by pytype because `tar.extractfile(...)` can return None if the
entry is not a file or symlink. I don't think that git supports other types,
but better safe than sorry.
Differential Revision: https://phab.mercurial-scm.org/D10179
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 18:45:18 -0500] rev 46693
patch: convert a UI message to bytes when editing a patch
Differential Revision: https://phab.mercurial-scm.org/D10178
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 18:33:39 -0500] rev 46692
merge: force an exception message to bytes before printing as a warning
Caught by pytype:
File "/mnt/c/Users/Matt/hg/mercurial/merge.py", line 1346, in batchremove: Function _bytestr.__init__ was called with the wrong arguments [wrong-arg-types]
Expected: (self, ints: Iterable[int])
Actually passed: (self, ints: str)
Differential Revision: https://phab.mercurial-scm.org/D10177
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 18:09:55 -0500] rev 46691
hg: convert an exception to bytes in the repo creation exception handler
Caught by pytype:
File "/mnt/c/Users/Matt/hg/mercurial/hg.py", line 77, in _local: Function _bytestr.__init__ was called with the wrong arguments [wrong-arg-types]
Expected: (self, ints: Iterable[int])
Actually passed: (self, ints: Union[TypeError, ValueError])
Differential Revision: https://phab.mercurial-scm.org/D10176
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 17:55:52 -0500] rev 46690
typing: add an assertion instead of blacklisting mercurial/extensions.py
Differential Revision: https://phab.mercurial-scm.org/D10175
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 17:27:31 -0500] rev 46689
debug: convert a few exceptions to bytes before wrapping in another error
Caught by pytype:
File "/mnt/c/Users/Matt/hg/mercurial/debugcommands.py", line 2118, in debugmanifestfulltextcache: Function Abort.__init__ was called with the wrong arguments [wrong-arg-types]
Expected: (self, message: Union[bytearray, bytes, memoryview], ...)
Actually passed: (self, message: mercurial.error.LookupError, ...)
File "/mnt/c/Users/Matt/hg/mercurial/debugcommands.py", line 2453, in debugobsolete: Function _bytestr.__init__ was called with the wrong arguments [wrong-arg-types]
Expected: (self, ints: Iterable[int])
Actually passed: (self, ints: ValueError)
The following methods aren't implemented on ValueError:
__iter__
Differential Revision: https://phab.mercurial-scm.org/D10174
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 17:16:29 -0500] rev 46688
grep: convert an exception to bytes for a warning message
Caught by pytype:
File "/mnt/c/Users/Matt/hg/mercurial/commands.py", line 3457, in grep: Function _bytestr.__init__ was called with the wrong arguments [wrong-arg-types]
Expected: (self, ints: Iterable[int])
Actually passed: (self, ints: re.error)
The following methods aren't implemented on re.error:
__iter__
Differential Revision: https://phab.mercurial-scm.org/D10173
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 17:14:30 -0500] rev 46687
morestatus: convert a UI message about merge conflicts to bytes
Differential Revision: https://phab.mercurial-scm.org/D10172
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 17:12:08 -0500] rev 46686
changegroup: convert a warning message to bytes
Differential Revision: https://phab.mercurial-scm.org/D10171
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 17:10:52 -0500] rev 46685
branchmap: force Exception to bytes before logging
Here was an instance where `black` mangled the formatting so that `pytype`
didn't recognize the suppression directive. But it seems that the error was
correct, and the code should follow other recent changes around exception
conversion.
File "/mnt/c/Users/Matt/hg/mercurial/branchmap.py", line 303, in fromfile: Function _bytestr.__init__ was called with the wrong arguments [wrong-arg-types]
Expected: (self, ints: Iterable[int])
Actually passed: (self, ints: Exception)
The following methods aren't implemented on Exception:
__iter__
Differential Revision: https://phab.mercurial-scm.org/D10170
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 17:05:37 -0500] rev 46684
nodemap: convert error message to bytes
Differential Revision: https://phab.mercurial-scm.org/D10169
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 17:04:58 -0500] rev 46683
mail: convert SMTPException to bytes before passing to error.Abort()
Caught by pytype:
File "/mnt/c/Users/Matt/hg/mercurial/mail.py", line 168, in _smtp: Function Abort.__init__ was called with the wrong arguments [wrong-arg-types]
Expected: (self, message: Union[bytearray, bytes, memoryview], ...)
Actually passed: (self, message: smtplib.SMTPException)
Differential Revision: https://phab.mercurial-scm.org/D10168
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 17:02:28 -0500] rev 46682
typing: switch an argument type to the generic form
This fixes the following pytype complaint:
File "/mnt/c/Users/Matt/hg/mercurial/commands.py", line 4672, in log: Function mercurial.logcmdutil.parseopts was called with the wrong arguments [wrong-arg-types]
Expected: (ui, pats: List[Union[bytearray, bytes, memoryview]], ...)
Actually passed: (ui, pats: tuple, ...)
Differential Revision: https://phab.mercurial-scm.org/D10167
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 21:25:28 -0500] rev 46681
typing: ensure that error.Abort is given bytes
There's a bunch more typing to be done here, but the list of things to fix is
already long, and I know there are instances where this is being used
incorrectly.
Differential Revision: https://phab.mercurial-scm.org/D10166
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 21:21:41 -0500] rev 46680
typing: fix a suppression directive that was mangled by black formatting
It looks like black is moving comments needed by pytype out of position, and
causing some things that should be disabled to be enforced anyway.
Differential Revision: https://phab.mercurial-scm.org/D10165
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 04 Mar 2021 17:35:58 +0530] rev 46679
commit: reorder if-else conditional to give mergestate info priority
Looking at the code now, I was unable to find a good reason as why we only rely
on mergestate extras info after checking whether a filelog parent is ancestor of
other or not.
I mean if we have stored in mergestate that `other` was chosed, we should
blindly pick that one.
This cleanup will also help introduce more cases when both `fparent1` and
`fparent2` are non-null but using info from mergestate, we can fastpath.
The test change actually demonstrates the point of the patch. During merge we
were getting the other side of the file but on commit we were marking that as
merged.
Differential Revision: https://phab.mercurial-scm.org/D10147
Corey Schuhen <cschuhen@topcon.com> [Wed, 10 Mar 2021 15:24:52 +1000] rev 46678
enclink: check contents of symlinks not just size in case of fcrypt
Check content of symlinks because st_size may indicate the size of encrypted
data which does not match actual link value.
Differential Revision: https://phab.mercurial-scm.org/D10146
Martin von Zweigbergk <martinvonz@google.com> [Fri, 12 Feb 2021 16:13:34 -0800] rev 46677
rebase: inline simple function for finding obsolete subset of commits
`_filterobsoleterevs()` is just one line long. It was introduced in
2d294dada4f8 (rebase: small refactoring to allow better extensibility
from extensions, 2016-01-14), for use by the "inhibit" extension. That
extension was removed from the evolve repo in
87e87881059d (compat:
drop the inhibit hacky extension, 2017-10-24).
Differential Revision: https://phab.mercurial-scm.org/D10198
Joerg Sonnenberger <joerg@bec.de> [Thu, 25 Feb 2021 20:57:11 +0100] rev 46676
ci: hook network-io tests into the pipeline
This runs the "pip install" tests once for Python 2 and 3 each.
Differential Revision: https://phab.mercurial-scm.org/D10075
Augie Fackler <augie@google.com> [Fri, 12 Mar 2021 13:13:13 -0500] rev 46675
merge: with stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 10 Mar 2021 18:24:23 +0100] rev 46674
test: update expected output in test-http.t
The output was introduced in
a4c19a162615 and is wrong and unstable. So we glob
it as other part of these tests already do.
Differential Revision: https://phab.mercurial-scm.org/D10153
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 10 Mar 2021 18:23:24 +0100] rev 46673
remotefilelog: remove unused import
This is no longer used since
a4c19a162615.
Differential Revision: https://phab.mercurial-scm.org/D10152
Valentin Gatien-Baron <vgatien-baron@janestreet.com> [Thu, 25 Feb 2021 10:08:33 -0500] rev 46672
wireprotov1peer: don't raise internal errors in some cases
Specifically, when the peer is closed in the middle of a batch of rpcs.
Differential Revision: https://phab.mercurial-scm.org/D10074
Valentin Gatien-Baron <vgatien-baron@janestreet.com> [Thu, 25 Feb 2021 10:00:08 -0500] rev 46671
sshpeer: don't fail forwarding output from closed connections
The test still shows an internal error, but one that happens
further along.
Differential Revision: https://phab.mercurial-scm.org/D10073
Valentin Gatien-Baron <vgatien-baron@janestreet.com> [Thu, 25 Feb 2021 09:59:23 -0500] rev 46670
test: show internal exception with batchable rpcs over ssh
Differential Revision: https://phab.mercurial-scm.org/D10072
Simon Sapin <simon.sapin@octobus.net> [Thu, 04 Mar 2021 13:26:53 +0100] rev 46669
rhg: Ignore trailing newlines in .hg/sharedpath
Differential Revision: https://phab.mercurial-scm.org/D10132
Simon Sapin <simon.sapin@octobus.net> [Tue, 02 Mar 2021 21:31:12 +0100] rev 46668
tests: Add `--rhg` and `--with-rhg=<path>` options for `run-tests.py`
They are mostly equivalent to the corresponding `chg` options.
For now, many tests are still failing in this configuration.
It is *not* run on CI.
Differential Revision: https://phab.mercurial-scm.org/D10095
Simon Sapin <simon.sapin@octobus.net> [Mon, 01 Mar 2021 20:36:06 +0100] rev 46667
rhg: Add support for automatic fallback to Python
`rhg` is a command-line application that can do a small subset of what
`hg` can. It is written entirely in Rust, which avoids the cost of starting
a Python interpreter and importing many Python modules.
In a script that runs many `hg` commands, this cost can add up.
However making users decide when to use `rhg` instead of `hg` is
not practical as we want the subset of supported functionality
to grow over time.
Instead we introduce "fallback" behavior where, when `rhg` encounters
something (a sub-command, a repository format, …) that is not implemented
in Rust-only, it does nothing but silently start a subprocess of
Python-based `hg` running the same command.
That way `rhg` becomes a drop-in replacement for `hg` that sometimes
goes faster. Whether Python is used should be an implementation detail
not apparent to users (other than through speed).
A new `fallback` value is added to the previously introduced
`rhg.on-unsupported` configuration key. When in this mode, the new
`rhg.fallback-executable` config is determine what command to use
to run a Python-based `hg`.
The previous `rhg.on-unsupported = abort-silent` configuration was designed
to let a wrapper script call `rhg` and then fall back to `hg` based on the
exit code. This is still available, but having fallback behavior built-in
in rhg might be easier for users instead of leaving that script "as an
exercise for the reader".
Using a subprocess like this is not idea, especially when `rhg` is to be
installed in `$PATH` as `hg`, since the other `hg.py` executable needs
to still be available… somewhere. Eventually this could be replaced
by using PyOxidizer to a have a single executable that embeds a Python
interpreter, but only starts it when needed.
Differential Revision: https://phab.mercurial-scm.org/D10093