Martin von Zweigbergk <martinvonz@google.com> [Mon, 13 Mar 2017 21:43:17 -0700] rev 31406
pager: if old pager extensions is enabled, respect pager.attend
This patch makes us respect pager.attend again if the extension is
enabled. It also brings back the default attend list, so e.g. summary
is not paged by default, just like it used to be before pager was
moved into core.
Martin von Zweigbergk <martinvonz@google.com> [Mon, 13 Mar 2017 21:42:59 -0700] rev 31405
tests: duplicate test for pager for old extension and for in-core pager
When the old pager extension is enabled, I think we should try to be
as BC as reasonable. To help with that, this patch brings back
test-pager.t as of
65a3b4d67a65 (pager: add a test of --pager=no
functionality, 2017-02-06), but under the name test-pager-legacy.t
However, since the behavior has changed in a few cases (notably by no
longer respecting pager.attend), the file is modified to work with the
current version. We will recover some lost BC in coming patches.
Also, to make sure the in-core pager does not depend on the pager
extension being enabled, this patch disables the extension in
test-pager.t. It turns out that pager.attend-$cmd was only supported
when the pager extension was enabled, so the tests are updated to
reflect that. We will need to decide what to do with these.
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 14 Mar 2017 08:51:35 -0700] rev 31404
util: make strdate's defaults default value a dict
It was specified to be an empty list in
c6adf2be6069 in 2007.
It was correct at the time. But when the function was
refactored in
91bc001a592f (2010), it started expecting a dict.
I guess this code path is untested?
Thanks to Yuya for spotting this.
Rishabh Madan <rishabhmadan96@gmail.com> [Wed, 15 Mar 2017 14:51:18 +0530] rev 31403
py3: open file in rb mode
Kyle Lippincott <spectral@google.com> [Tue, 14 Mar 2017 13:10:30 -0700] rev 31402
debuglabelcomplete: fix to call debugnamecomplete in new location
debugnamecomplete was moved in
a9aa67ba from commands to debugcommands, but
debuglabelcomplete was not modified to call it in its new location.
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 13 Mar 2017 13:06:37 -0700] rev 31401
tests: prove that `hg init` works with Python 3
The previous patch made `hg init` work!
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 13 Mar 2017 12:16:47 -0700] rev 31400
pycompat: custom implementation of urllib.parse.quote()
urllib.parse.quote() accepts either str or bytes and returns str.
There exists a urllib.parse.quote_from_bytes() which only accepts
bytes. We should probably use that to retain strong typing and
avoid surprises.
In addition, since nearly all strings in Mercurial are bytes, we
probably don't want quote() returning unicode.
So, this patch implements a custom quote() that only accepts bytes
and returns bytes. The quoted URL should only contain URL safe
characters which is a strict subset of ASCII. So
`.encode('ascii', 'strict')` should be safe.
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 13 Mar 2017 12:14:17 -0700] rev 31399
pycompat: alias urllib symbols directly
urllib.request imports a bunch of symbols from other urllib
modules. We should map to the original symbols not the
re-exported ones because this is more correct. Also, it
will prevent an import of urllib.request if only one of
the lower-level symbols/modules is needed.
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 13 Mar 2017 13:08:11 -0700] rev 31398
tests: clean up bad extension
The presence of the "babar" extension breaks subsequent tests.
So delete the file and create an empty one to return the config
to sanity.
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 13 Mar 2017 18:16:42 -0700] rev 31397
perf: perform a garbage collection before each iteration
Currently, no explicit garbage collection is performed when running
the microbenchmarks in `hg perf`. I think this is wrong because
garbage collection can have a significant impact on execution times.
And, if gc is triggered via the default heuristics, it will
fire effectively randomly during subsequent benchmark iterations
due to variable amount of garbage left over from previous runs.
Running a gc before invoking the measured function will help ensure
state is more consistent across all iterations.
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 13 Mar 2017 18:31:29 -0700] rev 31396
formatter: support json formatting of long type
By luck, we appear to not pass any long instances into
the JSON formatter. I suspect this will change with all the
Python 3 porting work. Plus I have another series that will
convert some ints to longs that triggers this.
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 12 Mar 2017 21:56:39 -0700] rev 31395
rebase: don't use mutable default argument value
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 12 Mar 2017 21:55:46 -0700] rev 31394
mq: don't use mutable default argument value
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 12 Mar 2017 21:54:32 -0700] rev 31393
util: don't use mutable default argument value
I don't think this is any tight loops and we'd need to worry about
PyObject creation overhead. Also, I'm pretty sure strptime()
will be much slower than PyObject creation (date parsing is
surprisingly slow).
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 12 Mar 2017 21:53:03 -0700] rev 31392
match: don't use mutable default argument value
There shouldn't be a big perf hit creating a new object because
this function is complicated and does things that dwarf the cost
of creating a new PyObject.
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 12 Mar 2017 21:52:17 -0700] rev 31391
hgweb: don't use mutable default argument value
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 26 Dec 2016 16:55:47 -0700] rev 31390
hgweb: don't use mutable default argument value
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 26 Dec 2016 16:54:33 -0700] rev 31389
filemerge: don't use mutable default argument value
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 12 Mar 2017 21:50:42 -0700] rev 31388
context: don't use mutable default argument value
Mutable default argument values are a Python gotcha and can
represent subtle, hard-to-find bugs. Lets rid our code base
of them.
Martin von Zweigbergk <martinvonz@google.com> [Mon, 13 Mar 2017 11:19:24 -0700] rev 31387
heads: enable pager
Martin von Zweigbergk <martinvonz@google.com> [Mon, 13 Mar 2017 11:03:59 -0700] rev 31386
branches: enable pager
Yuya Nishihara <yuya@tcha.org> [Sun, 12 Mar 2017 17:16:43 -0700] rev 31385
py3: fix slicing of bytes in revset.formatspec()
Yuya Nishihara <yuya@tcha.org> [Sun, 12 Mar 2017 17:13:54 -0700] rev 31384
py3: make set of revset operators and quotes in bytes
Yuya Nishihara <yuya@tcha.org> [Sun, 12 Mar 2017 17:10:14 -0700] rev 31383
py3: convert set of revset initial symbols back to bytes
Otherwise tokenize() would fail due to comparison between unicode and bytes.