Martin von Zweigbergk <martinvonz@google.com> [Mon, 22 Mar 2021 13:14:11 -0700] rev 46816
tests: replace some `python` by `"$PYTHON"` to not only use Python 2
I deleted my `python` binary as a test and a few tests started
failing.
Differential Revision: https://phab.mercurial-scm.org/D10250
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 13 Mar 2021 03:17:00 +0100] rev 46815
copies: distinguish between merged and touched files during upgrade
This a filenode being different between p1, p2 and result does not necessarily
means a merges happens. For example p2 could be a strict newer version of p1, so
the p2 version is picked by the manifest merging, but then the file is manually
updated before the commit.
In this case the file should be detected as touched.
Differential Revision: https://phab.mercurial-scm.org/D10220
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 Mar 2021 13:37:45 +0100] rev 46814
copies: detect files as `touched/salvaged` if they only existed on one side
The file cannot be merged if there was content to merge on the other side. So
the previous record was wrong.
In the general case, the file existed only on one side and got touched during the
merge. So it should detected as touched.
They are a special case where the merge manually prevent the file to be deleted.
In this case the file is marked as `salvaged`.
The result of this `salvaged` recording, copy-tracing-wise, is the same as
recording it as `merged`. This is probably why they were recorded as `merged` in
the first place.
Differential Revision: https://phab.mercurial-scm.org/D10219
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 02 Mar 2021 02:00:29 +0100] rev 46813
test-copies: add a test updating file content while salvaging it
A deleted file is brought back during a merge. Its content is changed in the
same go.
This reveal some issue with the upgrade code.
Differential Revision: https://phab.mercurial-scm.org/D10088
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 13 Mar 2021 04:54:05 +0100] rev 46812
test-copies: show some wrong ChangedFiles upgrade
For file present only on one side and touched during merge, the upgrade code
confused them as "merged". However they should be either "touched", or
"salvaged" but they are currently recorded as "merged". See the next changesets
for more details on these cases and fix.
Differential Revision: https://phab.mercurial-scm.org/D10218
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 10 Mar 2021 13:14:32 +0530] rev 46811
commit: get info from mergestate whether a file was merged or not
While commiting a merge, the commit code does not know whether a file was merged
during `hg merge` or not. This leads the commit code to look for filelog
ancestor to choose parents of new filelog created on merge commit.
This leads to wrong results in some cases as demonstrated by previous patch.
From this patch, we start storing information about merged files in mergestate
in stateextras and then use that on commit to detect whether we need to set two
parents or not.
Differential Revision: https://phab.mercurial-scm.org/D10149
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 17 Mar 2021 20:06:35 +0100] rev 46810
revset: introduce a `nodefromfile` revset
I though we had one, but actually we don't seem to. So here is a revset to reuse
a list of node previously stored.
Differential Revision: https://phab.mercurial-scm.org/D10230
Matt Harbison <matt_harbison@yahoo.com> [Fri, 19 Mar 2021 00:28:30 -0400] rev 46809
commands: necessary annotations and assertions to pass pytype
This is a slightly less forceful incarnation of D7384, where pytype can be
appeased with some assertions rather than disabling warnings.
Differential Revision: https://phab.mercurial-scm.org/D10236
Matt Harbison <matt_harbison@yahoo.com> [Thu, 18 Mar 2021 23:41:00 -0400] rev 46808
typing: mark the argument to mercurial.i18n.gettext() non-Optional
Few if any of the callers are handling a `None` return, which is making pytype
complain. I tried adding @overload definitions to indicate the bytes -> bytes
and None -> None relationship, but pytype doesn't seem to apply that to `_()`
through the function assignment. What did work was to change `_()` into its own
function that called `gettext()`, but that has an extra function call overhead.
Even putting that function into an `if pycompat.TYPE_CHECKING` block and leaving
the existing assignments in the `else` block caused pytype to lose track of the
@overloads.
At that point, I simply gave up. PyCharm doesn't like that it can return None,
given the new type hints, but pytype doesn't complain about this nor does it
see any callers passing None. The most important thing here is to catch str
being passed anyway.
Differential Revision: https://phab.mercurial-scm.org/D10235
Matt Harbison <matt_harbison@yahoo.com> [Thu, 18 Mar 2021 18:57:21 -0400] rev 46807
revlog: convert an Abort message to bytes
Flagged by pytype.
Differential Revision: https://phab.mercurial-scm.org/D10234