Martin von Zweigbergk <martinvonz@google.com> [Fri, 09 Oct 2020 08:08:54 -0700] rev 45687
tests: fix test-url.py on py3, broken by D9179
Differential Revision: https://phab.mercurial-scm.org/D9180
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 08 Oct 2020 16:14:06 +0200] rev 45686
revset: add a `node` key for sorting
Sorting by node give an arbitrary, but stable order which is useful for
sampling.
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 04 Oct 2020 22:32:41 -0700] rev 45685
pyoxidizer: produce working Python 3 Windows installers (
issue6366)
While we've had code to produce Python 3 Windows installers with
PyOxidizer, we haven't been advertising them on the web site due to
a bug in making TLS connections and issues around resource handling.
This commit upgrades our PyOxidizer install and configuration to
use a recent Git commit of PyOxidizer. This new version of PyOxidizer
contains a *ton* of changes, improvements, and bug fixes. Notably,
Windows shared distributions now mostly "just work" and the TLS bug
and random problems with Python extension modules in the standard
library go away. And Python has been upgraded from 3.7 to 3.8.6.
The price we pay for this upgrade is a ton of backwards incompatible
changes to Starlark.
I applied this commit (the overall series actually) on stable to
produce Windows installers for Mercurial 5.5.2, which I published
shortly before submitting this commit for review.
In order to get the stable branch working, I decided to take a
less aggressive approach to Python resource management. Previously,
we were attempting to load all Python modules from memory and were
performing some hacks to copy Mercurial's non-module resources
into additional directories in Starlark. This commit implements
a resource callback function in Starlark (a new feature since
PyOxidizer 0.7) to dynamically assign standard library resources
to in-memory loading and all other resources to filesystem loading.
This means that Mercurial's files and all the other packages we ship
in the Windows installers (e.g. certifi and pygments) are loaded
from the filesystem instead of from memory. This avoids issues
due to lack of __file__ and enables us to ship a working Python
3 installer on Windows.
The end state of the install layout after this patch is not
ideal for @: we still copy resource files like templates and
help text to directories next to the hg.exe executable. There
is code in @ to use importlib.resources to load these files and
we could likely remove these copies once this lands on @. But for
now, the install layout mimics what we've shipped for seemingly
forever and is backwards compatible. It allows us to achieve the
milestone of working Python 3 Windows installers and gets us a
giant step closer to deleting Python 2.
Differential Revision: https://phab.mercurial-scm.org/D9148
Martin von Zweigbergk <martinvonz@google.com> [Thu, 08 Oct 2020 13:19:18 -0700] rev 45684
tests: set git config using `git config` for simplicity
I also took the liberty to not set the same config value twice as we
did before.
Differential Revision: https://phab.mercurial-scm.org/D9176
Martin von Zweigbergk <martinvonz@google.com> [Thu, 08 Oct 2020 13:10:16 -0700] rev 45683
tests: use `git init` instead of unusual synonym `git init-db`
I had never heard of `git init-db` until I saw our tests.
Differential Revision: https://phab.mercurial-scm.org/D9175
Martin von Zweigbergk <martinvonz@google.com> [Thu, 08 Oct 2020 13:37:31 -0700] rev 45682
errors: name arguments to Abort constructor
Differential Revision: https://phab.mercurial-scm.org/D9179
Martin von Zweigbergk <martinvonz@google.com> [Thu, 08 Oct 2020 15:35:44 -0700] rev 45681
errors: stop passing non-strings to Abort's constructor
The next patch will change `Abort`'s constructor and `__bytes__`
functions and they will start assuming that the first argument is the
messages as `bytes`.
Differential Revision: https://phab.mercurial-scm.org/D9178
Martin von Zweigbergk <martinvonz@google.com> [Tue, 06 Oct 2020 21:06:18 -0700] rev 45680
errors: name arguments to UnknownCommand constructor
Differential Revision: https://phab.mercurial-scm.org/D9166
Martin von Zweigbergk <martinvonz@google.com> [Tue, 06 Oct 2020 20:45:52 -0700] rev 45679
errors: name arguments to AmbiguousCommand constructor
Differential Revision: https://phab.mercurial-scm.org/D9165
Martin von Zweigbergk <martinvonz@google.com> [Tue, 06 Oct 2020 20:37:35 -0700] rev 45678
errors: name arguments to CommandError constructor
Because readability counts.
Differential Revision: https://phab.mercurial-scm.org/D9164
Martin von Zweigbergk <martinvonz@google.com> [Tue, 06 Oct 2020 21:52:27 -0700] rev 45677
errors: move UnknownCommand and AmbiguousCommand near CommandError
They seem closely related.
Differential Revision: https://phab.mercurial-scm.org/D9163
Aay Jay Chan <aayjaychan@itopia.com.hk> [Wed, 07 Oct 2020 00:45:41 +0800] rev 45676
templatekw: make {successorssets} always return a list (
issue6342)
Previously, {successorssets} returns an empty string instead of an empty list
for a non-obsolete changeset. The changing type of the JSON output makes it
hard to consume from statically-typed languages.
Differential Revision: https://phab.mercurial-scm.org/D9158
Aay Jay Chan <aayjaychan@itopia.com.hk> [Wed, 07 Oct 2020 00:39:52 +0800] rev 45675
tests: test output of {predecessors}, {successorssets} for non-obsolete csets
Differential Revision: https://phab.mercurial-scm.org/D9157
Martin von Zweigbergk <martinvonz@google.com> [Thu, 08 Oct 2020 23:19:01 -0700] rev 45674
branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 01 Oct 2020 09:45:00 +0200] rev 45673
copies: move `merged` testing sooner
previously `is_merged` was an expensive callback. Now that all this data is
pre-computed, this is is a simple membership testing.
So it is probably cheaper than the membership testing.
Differential Revision: https://phab.mercurial-scm.org/D9141
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 01 Oct 2020 09:42:39 +0200] rev 45672
copies: return None instead of ChangingFiles when relevant
If they are not relevant data, they are no need to fetch them.
Differential Revision: https://phab.mercurial-scm.org/D9140
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 01 Oct 2020 09:29:49 +0200] rev 45671
copies: add a HASCOPIESINFO flag to highlight rev with useful data
If some files changes that may impact copy tracing are detected, we set this
flag. This helps the copy tracing algorithm to skip fetching possibly expensive
data when unnecessary.
Differential Revision: https://phab.mercurial-scm.org/D9139
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 16 Sep 2020 21:00:02 +0200] rev 45670
salvaged: properly deal with salvaged file during copy tracing
When salvaged files are encountered, the removal have been reverted and we
should keep the rename information from the other side.
The conditional was starting to be quite hairy, so we spell it out in multiple
elif case for readability.
This fixes the associated test cases introduced a while back. The changeset centric copy tracing is now (known) bug free.
Differential Revision: https://phab.mercurial-scm.org/D9130
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 15 Sep 2020 10:55:17 +0200] rev 45669
salvaged: persist the salvaged set on disk
With the new side data storage, this is trivial.
Differential Revision: https://phab.mercurial-scm.org/D9129
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 29 Sep 2020 22:47:54 +0200] rev 45668
changing-files: add clean computation of changed file for merges
This is "a tad more complicated" than the previous cases. See inline
documentation for details (have fun).
Differential Revision: https://phab.mercurial-scm.org/D9128
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 29 Sep 2020 22:46:29 +0200] rev 45667
changing-files: add clean computation of changed files for linear changesets
The `files` field is not reliable, so we need to compute things from scratch. We
deal with the second simplest case, linear changesets. We diff the current
manifest with the parent manifest. This reveal the file added, changed and
removed.
Differential Revision: https://phab.mercurial-scm.org/D9127
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 29 Sep 2020 22:38:08 +0200] rev 45666
changing-files: add clean computation of changed files for roots
The `files` field is not reliable, so we need to compute things from scratch. We
start with the simplest case root changesets. In the beginning they was nothing,
then user said "let there be files" and there were added files.
Differential Revision: https://phab.mercurial-scm.org/D9126
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 30 Sep 2020 09:21:33 +0200] rev 45665
changing-files: add a debug command display changed files
The binary output from sidedata is useful to verify the underlying data do not
get corrupted. However having a human readable version is much simpler for
debuging the changed files data itself.
So we add a debug command to dump this information and we use it in the tests.
Differential Revision: https://phab.mercurial-scm.org/D9125
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 29 Sep 2020 23:16:09 +0200] rev 45664
side-data: add a test to check sidedata upgrade
We want to make sure that sidedata computed at commit time and during upgrade
are the same. To do so, we upgrade the repository in `test-copies-chain-merge.t`
since the file is checking all the special case that we need to catch. The
sidedata content in both case should be the same.
Differential Revision: https://phab.mercurial-scm.org/D9124
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 29 Sep 2020 22:19:46 +0200] rev 45663
changing-files: split the changing files computation from encoding
The side data encoding is already in its own function, now we move the changing
files computation in it own function, it will receive more updates in the
coming changesets.
Differential Revision: https://phab.mercurial-scm.org/D9123
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 14 Sep 2020 23:47:42 +0200] rev 45662
salvaged: record salvaged in ChangingFiles at commit time
The new code is a simple but effective way to detect this information. We might
be able to move it inside the various conditionnal above, but I want to focus
on simplicity until we have a full working stack.
It is worth noting that if we record the information in the ChangingFiles
object, it is not persisted yet. This will comes with later changesets.
Differential Revision: https://phab.mercurial-scm.org/D9120
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 14 Sep 2020 23:46:38 +0200] rev 45661
salvaged: track removal-candidates in more cases
If we want to use this information for copy tracing, then we need to be able to
record it.
First we unlock the recording of deletion candidates, and we will actually record
the data in the next changeset.
Differential Revision: https://phab.mercurial-scm.org/D9119
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 30 Sep 2020 12:46:49 +0200] rev 45660
salvaged: explicitly skip salvaged file while encoding
This is a temporary measure to avoid diverging test cases (between commit time
sidedata and upgraded sidedata) while we implement salvaged tracking in the
different cases. This will be dropped soon.
Differential Revision: https://phab.mercurial-scm.org/D9122
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 14 Sep 2020 23:46:21 +0200] rev 45659
changing-files: add a "salvaged" set to track file that were not removed
We need this set for the copy tracing algorithm. See documentation for details
about this set.
Differential Revision: https://phab.mercurial-scm.org/D9118
Martin von Zweigbergk <martinvonz@google.com> [Thu, 08 Oct 2020 23:14:41 -0700] rev 45658
tests: back out accidentally queued changeset
0627cd03b1e9
I accidentally queued other people's patches on top of my own and
pushed mine along with theirs.
Martin von Zweigbergk <martinvonz@google.com> [Thu, 08 Oct 2020 13:45:56 -0700] rev 45657
tests: fix test-check-module-imports.t broken by D9150
Differential Revision: https://phab.mercurial-scm.org/D9177
Martin von Zweigbergk <martinvonz@google.com> [Thu, 08 Oct 2020 13:16:14 -0700] rev 45656
tests: make test-convert-git.t work across changed default branch name
Recent git versions default to "main" instead of "master", which
breaks our test.
Differential Revision: https://phab.mercurial-scm.org/D9174
Martin von Zweigbergk <martinvonz@google.com> [Tue, 06 Oct 2020 15:23:10 -0700] rev 45655
tests: update test-copies-chain-merge.t to not use empty files
Merging empty files is not very interesting or realistic.
Raphaël Gomès <rgomes@octobus.net> [Thu, 08 Oct 2020 10:07:19 +0200] rev 45654
tests: only diff the `Cargo.lock` in `test-check-cargo-lock.t`
While not perfect (you could be running tests while developing with a justified
modification to `Cargo.lock`), that use-case is small enough that I don't think
it's really going to be an issue.
This stops the test from failing for unrelated changes when running it locally.
Differential Revision: https://phab.mercurial-scm.org/D9170
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 07 Oct 2020 13:24:03 +0530] rev 45653
tests: update/remove outdated comments in test-copies-chain-merge.t
1b8fd4af3318 fixed the test case but missed updating the comments mentioning the
bug. Thanks for @martinvonz who spotted these outdated comments.
Differential Revision: https://phab.mercurial-scm.org/D9168
Yuya Nishihara <yuya@tcha.org> [Mon, 21 Sep 2020 12:36:17 +0900] rev 45652
churn: leverage logcmdutil to filter revisions by --date
Yuya Nishihara <yuya@tcha.org> [Thu, 10 Sep 2020 18:57:31 +0900] rev 45651
cmdutil: remove remainder of old walkchangerevs() implementation
Yuya Nishihara <yuya@tcha.org> [Thu, 10 Sep 2020 18:01:43 +0900] rev 45650
cmdutil: rewrite walkchangerevs() by using logcmdutil functions
cmdutil.walkchangerevs() now takes (revs, makefilematcher) in place of
(match, opts), and only provides the "windowing" functionality. Unused
classes and functions will be removed by the next patch.
"hg grep --follow" (--all-files) is still broken since there is no logic
to follow copies while traversing changelog, but at least, it does follow
the DAG.
Yuya Nishihara <yuya@tcha.org> [Thu, 10 Sep 2020 17:14:03 +0900] rev 45649
grep: filter target files by matcher
Prepares for the migration to logcmdutil's logic, where cmdutil.walkchangerevs()
won't always build an exact set of paths to be scanned.
Yuya Nishihara <yuya@tcha.org> [Thu, 10 Sep 2020 16:14:48 +0900] rev 45648
cmdutil: make walkchangerevs() call prepare with matcher instead of filenames
Prepares for migrating walkchangerevs() to logcmdutil's logic, which provides
matcher-based interface.
Yuya Nishihara <yuya@tcha.org> [Thu, 10 Sep 2020 18:40:01 +0900] rev 45647
grep: add option for logcmdutil.makewalker() to not filter revs by file pats
This is needed to implement "grep --all-files".
Raphaël Gomès <rgomes@octobus.net> [Thu, 01 Oct 2020 09:48:41 +0200] rev 45646
rust-parsers: use in-place mutation instead of allocating a new `Vec`
This is not done for the `dirstate-tree` feature, since it lacks `iter_mut`.
Differential Revision: https://phab.mercurial-scm.org/D9136
Joerg Sonnenberger <joerg@bec.de> [Tue, 06 Oct 2020 02:21:14 +0200] rev 45645
revlog: pre-compute null revlog item for pure version
The dynamically created tuple shows up in memory profiles and the use of
nullid prevents the normal constant building to work.
Differential Revision: https://phab.mercurial-scm.org/D9154
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 04 Oct 2020 22:17:52 -0700] rev 45644
packaging: normalize - to _ in WiX Id values
- is not a valid identifier character in WiX Ids. So let's
normalize accordingly.
I discovered this issue after a subsequent change which introduces
a directory with a - in its name.
Differential Revision: https://phab.mercurial-scm.org/D9147
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 03 Oct 2020 14:44:11 -0700] rev 45643
contrib: install Rust 1.46.0
Let's use the latest/greatest version of Rust in the automation
environment.
Differential Revision: https://phab.mercurial-scm.org/D9146
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 03 Oct 2020 19:52:52 -0700] rev 45642
contrib: install latest versions of Python
Let's keep our build environment modern.
We upgrade 3.5-3.8 on Linux. Just 3.7 and 3.8 on Windows because we
don't use <3.7 on Windows.
Differential Revision: https://phab.mercurial-scm.org/D9145
Ludovic Chabant <ludovic@chabant.com> [Wed, 30 Sep 2020 00:33:53 -0700] rev 45641
help: extract logic for listing commands and topics
Differential Revision: https://phab.mercurial-scm.org/D9134
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 25 Sep 2020 15:05:08 +0200] rev 45640
copies: directly pass a changes object to the copy tracing code
The object contains all the data we need. For example, the `is_merged` callback
can now use the associated precomputed data.
This will be useful again soon when the `salvaged` set will be introduce to
solve the issue with delete file reverted during a merge. See
4b582a93316a and
14be07d5603c for details.
Differential Revision: https://phab.mercurial-scm.org/D9117