Fri, 09 Oct 2020 08:08:54 -0700 tests: fix test-url.py on py3, broken by D9179
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
Thu, 08 Oct 2020 16:14:06 +0200 revset: add a `node` key for sorting
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.
Sun, 04 Oct 2020 22:32:41 -0700 pyoxidizer: produce working Python 3 Windows installers (issue6366)
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
Thu, 08 Oct 2020 13:19:18 -0700 tests: set git config using `git config` for simplicity
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
Thu, 08 Oct 2020 13:10:16 -0700 tests: use `git init` instead of unusual synonym `git init-db`
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
Thu, 08 Oct 2020 13:37:31 -0700 errors: name arguments to Abort constructor
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
Thu, 08 Oct 2020 15:35:44 -0700 errors: stop passing non-strings to Abort's constructor
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
Tue, 06 Oct 2020 21:06:18 -0700 errors: name arguments to UnknownCommand constructor
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
Tue, 06 Oct 2020 20:45:52 -0700 errors: name arguments to AmbiguousCommand constructor
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
Tue, 06 Oct 2020 20:37:35 -0700 errors: name arguments to CommandError constructor
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
Tue, 06 Oct 2020 21:52:27 -0700 errors: move UnknownCommand and AmbiguousCommand near CommandError
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
Wed, 07 Oct 2020 00:45:41 +0800 templatekw: make {successorssets} always return a list (issue6342)
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
Wed, 07 Oct 2020 00:39:52 +0800 tests: test output of {predecessors}, {successorssets} for non-obsolete csets
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
Thu, 08 Oct 2020 23:19:01 -0700 branching: merge with stable
Martin von Zweigbergk <martinvonz@google.com> [Thu, 08 Oct 2020 23:19:01 -0700] rev 45674
branching: merge with stable
Thu, 01 Oct 2020 09:45:00 +0200 copies: move `merged` testing sooner
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
Thu, 01 Oct 2020 09:42:39 +0200 copies: return None instead of ChangingFiles when relevant
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
Thu, 01 Oct 2020 09:29:49 +0200 copies: add a HASCOPIESINFO flag to highlight rev with useful data
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
Wed, 16 Sep 2020 21:00:02 +0200 salvaged: properly deal with salvaged file during copy tracing
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
Tue, 15 Sep 2020 10:55:17 +0200 salvaged: persist the salvaged set on disk
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
Tue, 29 Sep 2020 22:47:54 +0200 changing-files: add clean computation of changed file for merges
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
Tue, 29 Sep 2020 22:46:29 +0200 changing-files: add clean computation of changed files for linear changesets
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
Tue, 29 Sep 2020 22:38:08 +0200 changing-files: add clean computation of changed files for roots
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
Wed, 30 Sep 2020 09:21:33 +0200 changing-files: add a debug command display changed files
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
Tue, 29 Sep 2020 23:16:09 +0200 side-data: add a test to check sidedata upgrade
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
Tue, 29 Sep 2020 22:19:46 +0200 changing-files: split the changing files computation from encoding
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
Mon, 14 Sep 2020 23:47:42 +0200 salvaged: record salvaged in ChangingFiles at commit time
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
Mon, 14 Sep 2020 23:46:38 +0200 salvaged: track removal-candidates in more cases
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
Wed, 30 Sep 2020 12:46:49 +0200 salvaged: explicitly skip salvaged file while encoding
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
Mon, 14 Sep 2020 23:46:21 +0200 changing-files: add a "salvaged" set to track file that were not removed
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
Thu, 08 Oct 2020 23:14:41 -0700 tests: back out accidentally queued changeset 0627cd03b1e9
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.
Thu, 08 Oct 2020 13:45:56 -0700 tests: fix test-check-module-imports.t broken by D9150 stable
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
Thu, 08 Oct 2020 13:16:14 -0700 tests: make test-convert-git.t work across changed default branch name stable
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
Tue, 06 Oct 2020 15:23:10 -0700 tests: update test-copies-chain-merge.t to not use empty files
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.
Thu, 08 Oct 2020 10:07:19 +0200 tests: only diff the `Cargo.lock` in `test-check-cargo-lock.t`
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
Wed, 07 Oct 2020 13:24:03 +0530 tests: update/remove outdated comments in test-copies-chain-merge.t
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
Mon, 21 Sep 2020 12:36:17 +0900 churn: leverage logcmdutil to filter revisions by --date
Yuya Nishihara <yuya@tcha.org> [Mon, 21 Sep 2020 12:36:17 +0900] rev 45652
churn: leverage logcmdutil to filter revisions by --date
Thu, 10 Sep 2020 18:57:31 +0900 cmdutil: remove remainder of old walkchangerevs() implementation
Yuya Nishihara <yuya@tcha.org> [Thu, 10 Sep 2020 18:57:31 +0900] rev 45651
cmdutil: remove remainder of old walkchangerevs() implementation
Thu, 10 Sep 2020 18:01:43 +0900 cmdutil: rewrite walkchangerevs() by using logcmdutil functions
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.
Thu, 10 Sep 2020 17:14:03 +0900 grep: filter target files by matcher
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.
Thu, 10 Sep 2020 16:14:48 +0900 cmdutil: make walkchangerevs() call prepare with matcher instead of filenames
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.
Thu, 10 Sep 2020 18:40:01 +0900 grep: add option for logcmdutil.makewalker() to not filter revs by file pats
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".
Thu, 01 Oct 2020 09:48:41 +0200 rust-parsers: use in-place mutation instead of allocating a new `Vec`
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
Tue, 06 Oct 2020 02:21:14 +0200 revlog: pre-compute null revlog item for pure version
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
Sun, 04 Oct 2020 22:17:52 -0700 packaging: normalize - to _ in WiX Id values
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
Sat, 03 Oct 2020 14:44:11 -0700 contrib: install Rust 1.46.0
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
Sat, 03 Oct 2020 19:52:52 -0700 contrib: install latest versions of Python
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
Wed, 30 Sep 2020 00:33:53 -0700 help: extract logic for listing commands and topics
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
Fri, 25 Sep 2020 15:05:08 +0200 copies: directly pass a changes object to the copy tracing code
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
(0) -30000 -10000 -3000 -1000 -300 -100 -48 +48 +100 +300 +1000 +3000 tip