Wed, 13 Nov 2019 15:23:04 +0100 mail: use a native string for "subtype" value
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 13 Nov 2019 15:23:04 +0100] rev 43627
mail: use a native string for "subtype" value This is somehow similar to previous changeset and avoids one str conversion.
Tue, 12 Nov 2019 22:52:30 +0100 mail: let all charset values be native strings
Denis Laxalde <denis@laxalde.org> [Tue, 12 Nov 2019 22:52:30 +0100] rev 43626
mail: let all charset values be native strings Charset values will typically be used to build email.header.Header instances, which takes str (though it tolerates bytes) or passed to decode()/encode() methods of string values (which want str). It seems that using native str involves less conversions than before and this also helps type hinting (as illustrates removal of pytype disabling instructions).
Wed, 13 Nov 2019 22:20:44 +0100 mail: add type hints for pytype
Denis Laxalde <denis@laxalde.org> [Wed, 13 Nov 2019 22:20:44 +0100] rev 43625
mail: add type hints for pytype We essentially annotate functions in which handling of bytes/str is not obvious in order to hopefully clear things out. See also changeset 2ade00f3b03b introducing typing hints in Mercurial. Most types are straightforward but a few is wrong, and we need to either disable pytype on respective instructions or use wrong annotations. These will be fixed in next changesets. Notice the type Union[bytes, str] of "s" parameter of headencode(), this reflects how email.header.Header.append() behaves.
Tue, 12 Nov 2019 17:12:16 +0100 mail: fix a bad return type in _encode()
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 12 Nov 2019 17:12:16 +0100] rev 43624
mail: fix a bad return type in _encode() This particular instruction returned only a string and omitted the charset value.
Mon, 11 Nov 2019 18:55:42 -0800 packaging: stage files and dynamically generate WiX installer
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 11 Nov 2019 18:55:42 -0800] rev 43623
packaging: stage files and dynamically generate WiX installer Like we did for Inno, we want to make the WiX installer "dumb" and simply consume source files from a directory tree rather than have to define every single file in installer files. This will greatly decrease the amount of effort required to maintain the WiX installer since we don't have to think that much about keeping files in sync. This commit changes the WiX packager to populate a staging directory as part of packaging. After it does so, it scans that directory and dynamically generates WiX XML defining the content within. The IDs and GUIDs being generated are deterministic. So, upgrades should work as expected in Windows Installer land. (WiX has a "heat" tool that can generate XML by walking the filesystem but it doesn't have this deterministic property, sadly.) As part of this change, GUIDs are now effectively reset. So the next upgrade should be a complete wipe and replace. This could potentially cause issues. But in my local testing, I was able to upgrade an existing 5.1.2 install without issue. Compared to the previous commit, the installed files differ in the following: * A ReleaseNotes.txt file is now included * A hgrc.d/editor.rc file is now generated (mercurial.rc has been updated to reflect this logical change to the content source) * All files are marked as read-only. Previously, only a subset of files were. This should help prevent unwanted tampering. Although we may want to consider use cases like modifying template files... This change also means that Inno and WiX are now using very similar code for managing the install layout. This means that on disk both packages are nearly identical. The differences in install layout are as follows: * Inno has a Copying.txt vs a COPYING.rtf for WiX. (The WiX installer wants to use RTF.) * Inno has a Mercurial.url file that is an internet shortcut to www.mercurial-scm.org. (This could potentially be removed.) * Inno includes msvc[mpr]90.dll files and WiX does not. (WiX installs the MSVC runtime via merge modules.) * Inno includes unins000.{dat,exe} files. (WiX's state is managed by Windows Installer, which places things elsewhere.) Because file lists are dynamically generated now, the test ensuring things remain in sync has been deleted. Good riddance. While this is a huge step towards unifying the Windows installers, there's still some improvements that can be made. But I think it is worth celebrating the milestone of getting both Inno and WiX to essentially share core packaging code and workflows. That should make it much easier to change the installers going forward. This will aid support of Python 3. Differential Revision: https://phab.mercurial-scm.org/D7173
Mon, 11 Nov 2019 19:04:49 -0800 tests: add optional output when wheel is missing
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 11 Nov 2019 19:04:49 -0800] rev 43622
tests: add optional output when wheel is missing If the `wheel` package isn't installed, pip will emit a warning on stderr complaining about that. Alternatively, we could redirect stderr to stdout and swallow the warning. But I like tests having visibility of warnings, as it helps keep us honest regarding edge cases. Differential Revision: https://phab.mercurial-scm.org/D7371
Wed, 28 Aug 2019 17:43:56 -0700 py3: replace "%r" by"'%s'% for py3-compatible (and clearer) quoting in chg
Martin von Zweigbergk <martinvonz@google.com> [Wed, 28 Aug 2019 17:43:56 -0700] rev 43621
py3: replace "%r" by"'%s'% for py3-compatible (and clearer) quoting in chg Differential Revision: https://phab.mercurial-scm.org/D7375
Tue, 22 Oct 2019 23:21:26 -0700 dirstate: respect request to not list unknown/ignored/clean files (API)
Martin von Zweigbergk <martinvonz@google.com> [Tue, 22 Oct 2019 23:21:26 -0700] rev 43620
dirstate: respect request to not list unknown/ignored/clean files (API) Unknown files that are explicitly mentioned by the matcher are returned even if the caller said unknown=False (and it seems the same is done for ignored files). That seems pretty surprising. Let's make the interface less surprising by respecting the caller's request. Differential Revision: https://phab.mercurial-scm.org/D7150
Wed, 13 Nov 2019 09:09:42 +0100 py3: pass a bytes value for "msg" to nouideprecwarn()
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 13 Nov 2019 09:09:42 +0100] rev 43619
py3: pass a bytes value for "msg" to nouideprecwarn() That function formats "msg" with the "version" value. On Python 3, this leads to "TypeError: can only concatenate str (not "bytes") to str". Also eliminate spurious strings concatenation in single-line declarations. Differential Revision: https://phab.mercurial-scm.org/D7373
Tue, 12 Nov 2019 15:53:58 -0800 remotefilelog: handle **kwargs correctly when overriding changelog.add()
Daniel Ploch <dploch@google.com> [Tue, 12 Nov 2019 15:53:58 -0800] rev 43618
remotefilelog: handle **kwargs correctly when overriding changelog.add() Differential Revision: https://phab.mercurial-scm.org/D7372
Mon, 11 Nov 2019 18:51:55 -0800 packaging: ship all help .txt files on WiX
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 11 Nov 2019 18:51:55 -0800] rev 43617
packaging: ship all help .txt files on WiX These are technically not needed. But it is easier to ship all files than to cherry-pick. A `make install` will copy these files, so the new behavior is consistent with that. This also makes WiX consistent with Inno, which is my main reason for doing this. If we don't want to ship the files (which is a valid argument), I think we can do that in a follow up. Differential Revision: https://phab.mercurial-scm.org/D7166
Wed, 23 Oct 2019 12:31:15 -0700 packaging: install contrib/mq.el on WiX
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 23 Oct 2019 12:31:15 -0700] rev 43616
packaging: install contrib/mq.el on WiX This makes things consistent with the Inno installer. Differential Revision: https://phab.mercurial-scm.org/D7167
Mon, 11 Nov 2019 16:45:22 -0500 fuzz: clean out most of fuzzutil
Augie Fackler <augie@google.com> [Mon, 11 Nov 2019 16:45:22 -0500] rev 43615
fuzz: clean out most of fuzzutil It's now a header-only setup that just selects absl:: or std:: versions of things as needed, and a logging helper. There's some room for future cleanups here: we could move to just requiring a C++17 compiler and get rid of the absl stuff. Also, the mpatch parser has a fair amount of parsing the input string into char* blocks that we can and probably should fix that up to use FuzzedDataProvider as well. Differential Revision: https://phab.mercurial-scm.org/D7370
Mon, 11 Nov 2019 16:37:18 -0500 fuzz: migrate xdiff fuzzer to use FuzzedDataProvider
Augie Fackler <augie@google.com> [Mon, 11 Nov 2019 16:37:18 -0500] rev 43614
fuzz: migrate xdiff fuzzer to use FuzzedDataProvider Differential Revision: https://phab.mercurial-scm.org/D7369
(0) -30000 -10000 -3000 -1000 -300 -100 -14 +14 +100 +300 +1000 +3000 tip