Wed, 23 Jan 2019 16:21:36 -0800 convert: use raw strings for XML strings
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 23 Jan 2019 16:21:36 -0800] rev 41327
convert: use raw strings for XML strings Due to the source transformer, we were passing bytes into the XML APIs. This results in not finding elements and doing compares against mismatched types. Use raw string literals so we use str everywhere. Differential Revision: https://phab.mercurial-scm.org/D5664
Wed, 23 Jan 2019 16:22:54 -0800 tests: normalize XML values to bytes
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 23 Jan 2019 16:22:54 -0800] rev 41326
tests: normalize XML values to bytes This fixes some type mismatches. The encoding shouldn't matter for what this script is used for. UTF-8 seems reasonable, especially since I'm pretty sure SVN will emit UTF-8 encoded XML. Differential Revision: https://phab.mercurial-scm.org/D5665
Wed, 23 Jan 2019 17:26:00 -0800 hgweb: ensure template mapping keys are bytes
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 23 Jan 2019 17:26:00 -0800] rev 41325
hgweb: ensure template mapping keys are bytes Before, str keys were being added in Python 3 because named arguments to dict() use native str for keys. This caused the templater to fail to find the keys since it was looking for bytes versions. This makes a handful of tests pass on Python 3. We may want to consider having the templater validate that keys in mapping dicts are bytes. But I'm unsure whether this is appropriate and won't be doing this. Differential Revision: https://phab.mercurial-scm.org/D5666
Tue, 22 Jan 2019 18:25:34 -0800 remotefilelog: use %d to format an int
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 22 Jan 2019 18:25:34 -0800] rev 41324
remotefilelog: use %d to format an int Differential Revision: https://phab.mercurial-scm.org/D5656
Tue, 22 Jan 2019 18:24:52 -0800 tests: use bytes for file I/O
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 22 Jan 2019 18:24:52 -0800] rev 41323
tests: use bytes for file I/O Otherwise we get various type mismatches. Differential Revision: https://phab.mercurial-scm.org/D5655
Tue, 22 Jan 2019 18:23:47 -0800 tests: make filenames bytes for Python 3
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 22 Jan 2019 18:23:47 -0800] rev 41322
tests: make filenames bytes for Python 3 I also snuck a %s -> %d in there to appease Python 3. Differential Revision: https://phab.mercurial-scm.org/D5654
Tue, 22 Jan 2019 18:16:53 -0800 tests: use assertEqual()
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 22 Jan 2019 18:16:53 -0800] rev 41321
tests: use assertEqual() This avoids a deprecation warning under at least Python 3.7. Differential Revision: https://phab.mercurial-scm.org/D5653
Tue, 22 Jan 2019 18:11:34 -0800 tests: add setsockopt() output on Python 3
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 22 Jan 2019 18:11:34 -0800] rev 41320
tests: add setsockopt() output on Python 3 Python 3 appears to call setsockopt() where Python 2 did not. Differential Revision: https://phab.mercurial-scm.org/D5652
Tue, 22 Jan 2019 18:07:51 -0800 hgweb: don't use raw string for session vars
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 22 Jan 2019 18:07:51 -0800] rev 41319
hgweb: don't use raw string for session vars This r'' is leaking into the templating layer and causing an assertion failure. The r'' was added in d1fccbd50fcd (October 2017). Similar code in hgweb_mod.py was also changed in that changeset. hgweb_mod.py was updated in ec46415ed826 (March 2018) to use webutil.sessionvars(), which doesn't use raw strings. Differential Revision: https://phab.mercurial-scm.org/D5651
Tue, 22 Jan 2019 17:50:52 -0800 tests: normalize to bytes in test-install.t
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 22 Jan 2019 17:50:52 -0800] rev 41318
tests: normalize to bytes in test-install.t directory() was returning str and hgdirectory() was returning bytes. This made the set compare fail. Let's normalize the types on Python 3 so the test passes. Differential Revision: https://phab.mercurial-scm.org/D5650
Tue, 22 Jan 2019 17:08:53 -0800 config: reject str sections and keys on Python 3
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 22 Jan 2019 17:08:53 -0800] rev 41317
config: reject str sections and keys on Python 3 Otherwise we could end up with a dict having both the str and bytes versions of a particular config item. This may cause some tests to regress. I haven't checked. But it is better behavior to fail fast. We could just as easily change this to normalize the values. But I like catching all non-compliant call sites first. Differential Revision: https://phab.mercurial-scm.org/D5649
Tue, 22 Jan 2019 17:02:40 -0800 tests: add size and hash for Python 3
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 22 Jan 2019 17:02:40 -0800] rev 41316
tests: add size and hash for Python 3 test-archive.t now passes on Python 3.7.1. Differential Revision: https://phab.mercurial-scm.org/D5648
Tue, 22 Jan 2019 16:58:48 -0800 httppeer: use %s for formatting
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 22 Jan 2019 16:58:48 -0800] rev 41315
httppeer: use %s for formatting This prevents a b'' from appearing in Python 3 output. We keep the single quotes for backwards compatibility. Differential Revision: https://phab.mercurial-scm.org/D5647
Tue, 22 Jan 2019 16:54:56 -0800 tests: add b'' to notcapable
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 22 Jan 2019 16:54:56 -0800] rev 41314
tests: add b'' to notcapable This fixes some exceptions in a few tests. # skip-blame just b'' prefixes Differential Revision: https://phab.mercurial-scm.org/D5646
Tue, 22 Jan 2019 16:53:24 -0800 tests: add b'' to test-missing-capability.t
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 22 Jan 2019 16:53:24 -0800] rev 41313
tests: add b'' to test-missing-capability.t The test now passes on Python 3. # skip-blame just b'' prefixes Differential Revision: https://phab.mercurial-scm.org/D5645
Tue, 22 Jan 2019 11:41:22 -0500 fuzz: exercise more of the lazymanifest code
Augie Fackler <raf@durin42.com> [Tue, 22 Jan 2019 11:41:22 -0500] rev 41312
fuzz: exercise more of the lazymanifest code Differential Revision: https://phab.mercurial-scm.org/D5643
Tue, 22 Jan 2019 11:41:09 -0500 fuzz: restrict manifest input size
Augie Fackler <raf@durin42.com> [Tue, 22 Jan 2019 11:41:09 -0500] rev 41311
fuzz: restrict manifest input size Again, let's keep the fuzzer from getting excited about huge inputs. Differential Revision: https://phab.mercurial-scm.org/D5642
Tue, 22 Jan 2019 11:02:10 -0500 fuzz: exercise more of the revlog API
Augie Fackler <raf@durin42.com> [Tue, 22 Jan 2019 11:02:10 -0500] rev 41310
fuzz: exercise more of the revlog API I noticed in the coverage report that we didn't have much coverage in revlog.py. Let's try and get some of the more interesting bits tested by the fuzzer. I ran this locally for a few minutes to verify that I appear to be calling the various functions in reasonable ways. Differential Revision: https://phab.mercurial-scm.org/D5641
Tue, 22 Jan 2019 11:18:05 -0500 fuzz: don't allow enormous revlog inputs either
Augie Fackler <raf@durin42.com> [Tue, 22 Jan 2019 11:18:05 -0500] rev 41309
fuzz: don't allow enormous revlog inputs either I'm about to make the fuzzer do more, and without this it was getting enthusiastic about large (and therefore slow) inputs that I don't think buy us much. Differential Revision: https://phab.mercurial-scm.org/D5640
Thu, 24 Jan 2019 21:38:02 +0900 ui: remove unreachable branches and function calls from write() (issue6059) stable
Yuya Nishihara <yuya@tcha.org> [Thu, 24 Jan 2019 21:38:02 +0900] rev 41308
ui: remove unreachable branches and function calls from write() (issue6059) This is at least faster than ui.write() of 4.8.2. $ HGRCPATH=/dev/null hg files -R mozilla-central --time >/dev/null 4.8.2: time: real 2.340 secs (user 2.310+0.000 sys 0.020+0.000) 4.9rc0: time: real 2.580 secs (user 2.550+0.000 sys 0.020+0.000) this: time: real 2.230 secs (user 2.210+0.000 sys 0.020+0.000) Maybe the formatter should own a resolved write() function because it will just call dest.write(msg) most of the time, but that would be too much for stable.
Thu, 24 Jan 2019 21:35:55 +0900 ui: inline _writenobuf() into write() due to performance issue stable
Yuya Nishihara <yuya@tcha.org> [Thu, 24 Jan 2019 21:35:55 +0900] rev 41307
ui: inline _writenobuf() into write() due to performance issue I'll remove redundant conditions later in this series.
Thu, 24 Jan 2019 21:34:48 +0900 ui: inline _write() into write() due to performance issue stable
Yuya Nishihara <yuya@tcha.org> [Thu, 24 Jan 2019 21:34:48 +0900] rev 41306
ui: inline _write() into write() due to performance issue I'll remove redundant conditions later in this series.
Wed, 28 Nov 2018 22:36:24 +0900 ui: optimize buffered write with no label stable
Yuya Nishihara <yuya@tcha.org> [Wed, 28 Nov 2018 22:36:24 +0900] rev 41305
ui: optimize buffered write with no label This was spotted while making fastannotate faster again after ditching its own formatter. Since I'm going to inline _write() into ui.write(), I decided to include this patch in this series. Here, the cost of '(self.label(a, label) for a in args)' was significant in hot loops.
Wed, 23 Jan 2019 18:07:42 -0500 partialdiscovery: avoid `undecided` related computation sooner than necessary stable
Boris Feld <boris.feld@octobus.net> [Wed, 23 Jan 2019 18:07:42 -0500] rev 41304
partialdiscovery: avoid `undecided` related computation sooner than necessary Changeset 1d30be90c move the update of the `undecided` set within the `partialdiscovery` object in order to clarify the API. The update to the `undecided` set was unconditional in 1d30be90c and the first access to the `self.undecided` property triggered the initial computation of the set of undecided revisions. As a result, the set was computed much earlier, at a time where less information is available, immediately followed by an update of this set to remove common revisions. To fix this regression, we ignore the `undecided` related logic in `addcommons` when that `undecided` set has not been computed yet. Code that actually needs to know the `undecided` set will trigger its computation later. The change has no effects on semantic because the initial computation `undecided` set takes all knowns `common` into account. Example performance running `hg debugdiscovery` from a pypy repo missing 10 changesets: 870a89c6909d: 52.3ms (regression parent) 1d30be90c9dc: 72.0ms (regression) 5a5f504a7175: 64.8ms (this fix parent) this fix: 52.6ms
Mon, 21 Jan 2019 22:14:29 +0900 revlog: fix resolution of revlog version 0 stable
Yuya Nishihara <yuya@tcha.org> [Mon, 21 Jan 2019 22:14:29 +0900] rev 41303
revlog: fix resolution of revlog version 0 This partially backs out cecf3f8bccd3, "revlog: always process opener options." My understanding is that if there's no "revlog1" nor "revlog2" in .hg/requires, the repository should stick to the v0 format. The reasoning is briefly described in 31a5973fcf96, "revlog: get rid of defversion." Maybe we can drop support for missing opener options, but I didn't do that in this patch.
Tue, 22 Jan 2019 10:55:45 -0800 merge with stable
Martin von Zweigbergk <martinvonz@google.com> [Tue, 22 Jan 2019 10:55:45 -0800] rev 41302
merge with stable
Sun, 20 Jan 2019 11:57:36 +0900 rust: add comment about lack of wdirrev handling stable
Yuya Nishihara <yuya@tcha.org> [Sun, 20 Jan 2019 11:57:36 +0900] rev 41301
rust: add comment about lack of wdirrev handling If hg is compiled with rust support, 'only(wdir())' crashed as "rustext.GraphError: ('ParentOutOfRange', 2147483647)", which should instead say "abort: working directory revision cannot be specified."
Sun, 20 Jan 2019 11:51:21 +0900 templatekw: fix crash on multiple latesttags resolution at wdir (issue6055) stable
Yuya Nishihara <yuya@tcha.org> [Sun, 20 Jan 2019 11:51:21 +0900] rev 41300
templatekw: fix crash on multiple latesttags resolution at wdir (issue6055) It appears not easy to fix only() to support wdir(), so this patch works around the issue by getlatesttags(). The "+1" after len(changes) doesn't matter since ctx never changes while sorting. It's just for clarity.
Sun, 20 Jan 2019 11:39:16 +0900 test-template-keywords: add test for {latesttag} of wdir() revision stable
Yuya Nishihara <yuya@tcha.org> [Sun, 20 Jan 2019 11:39:16 +0900] rev 41299
test-template-keywords: add test for {latesttag} of wdir() revision It's probably broken since fb672eac2702, "templatekw: choose {latesttag} by len(changes), not date (issue5659)". only() doesn't support wdir.
Fri, 18 Jan 2019 23:32:26 -0800 narrow: fix crash when restoring backup in legacy repo stable
Martin von Zweigbergk <martinvonz@google.com> [Fri, 18 Jan 2019 23:32:26 -0800] rev 41298
narrow: fix crash when restoring backup in legacy repo Using --addremove when committing in an old repo (before we started keeping .hg/narrowspec.dirstate) results in a crash. The test case modified in this patch would crash like this: abort: $ENOENT$ The issue is that when the dirstateguard is aborted, it tries to restore the backup of .hg/narrowspec.dirstate. However, since we were in an old repo, that file did not get created when the dirstateguard was created. Note that the dirstateguard is not used unless --addremove is passed. This patch fixes the bug by making restorewcbackup() not fail if the backup doesn't exist. I also made clearwcbackup() safe, just in case. Differential Revision: https://phab.mercurial-scm.org/D5634
(0) -30000 -10000 -3000 -1000 -300 -100 -50 -30 +30 +50 +100 +300 +1000 +3000 +10000 tip