Yuya Nishihara <yuya@tcha.org> [Sat, 16 Jan 2016 19:23:53 +0900] rev 37992
templatefilters: document the json filter
I don't know the exact reason why it was undocumented, but that would be
because unicode is difficult for humans. Since the json filter can now get
localstr back to UTF-8 as long as it is unprocessed (i.e. {desc|json} works,
but {desc|firstline|json} doesn't), it seems good enough to advertise the
json filter.
Yuya Nishihara <yuya@tcha.org> [Sun, 23 Apr 2017 13:15:30 +0900] rev 37991
encoding: introduce tagging type for non-lossy non-ASCII string
This fixes the weird behavior of toutf8b(), which would convert a local
string back to UTF-8 *only if* it was lossy in the system encoding.
Before b7b26e54e37a "encoding: avoid localstr when a string can be encoded
losslessly (issue2763)", all local strings were wrapped by the localstr
class. I think this would justify the round-trip behavior of toutf8b().
ASCII strings are special-cased, so the cost of wrapping with safelocalstr
is negligible.
(with mercurial repo)
$ export HGRCPATH=/dev/null HGPLAIN= HGENCODING=latin-1
$ hg log --time --config experimental.evolution=all > /dev/null
(original)
time: real 11.340 secs (user 11.290+0.000 sys 0.060+0.000)
time: real 11.390 secs (user 11.300+0.000 sys 0.080+0.000)
time: real 11.430 secs (user 11.360+0.000 sys 0.070+0.000)
(this patch)
time: real 11.200 secs (user 11.100+0.000 sys 0.100+0.000)
time: real 11.370 secs (user 11.300+0.000 sys 0.070+0.000)
time: real 11.190 secs (user 11.130+0.000 sys 0.060+0.000)
Yuya Nishihara <yuya@tcha.org> [Sun, 22 Apr 2018 11:38:53 +0900] rev 37990
encoding: fix toutf8b() to resurrect lossy characters even if "\xed" in it
If 's' is a localstr, 's._utf8' must be returned to get the original UTF-8
sequence back. Because of this, it was totally wrong to test if '"\xed" not
in s', which should be either '"\xed" not in s._utf8' or just omitted.
This patch moves the localstr handling to top as the validity of 's._utf8'
should be pre-checked by encoding.tolocal().
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Mar 2018 16:47:33 +0900] rev 37989
sshserver: redirect stdin/stdout early and use duplicated streams
This is what we achieved with hook.redirect(True) plus ui.fout = ui.ferr.
The hook.redirect() function can't be completely removed yet since hgweb
still depends on it. I'm not sure if it is necessary for WSGI servers. CGI
needs it, but does WSGI communicate over stdin/stdout channels?
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Mar 2018 16:35:24 +0900] rev 37988
sshserver: do setbinary() by caller (API)
In most cases, stdio should be set to binary mode by the dispatcher, so
the sshserver does not have to take care of that. The only exception was
hg-ssh, which is fixed by this patch.
.. api::
``sshserver()`` no longer sets stdin and stdout to binary mode.
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Mar 2018 16:39:17 +0900] rev 37987
test-ssh: add some flush() to make output deterministic
We shouldn't rely on buffering mode/state of file handles.
Yuya Nishihara <yuya@tcha.org> [Thu, 10 May 2018 21:08:32 +0900] rev 37986
stringutil: flip the default of pprint() to bprefix=False
If we use pprint() as a drop-in replacement for repr(), bprefix=False is more
appropriate. Let's make it the default to remove bprefix=False noise.
Yuya Nishihara <yuya@tcha.org> [Thu, 10 May 2018 21:00:58 +0900] rev 37985
stringutil: make pprint() forward uninteresting object to b'%r'
We appear to start using pprint() as a replacement for repr(), so it's
probably safer to support any Python objects instead of complaining about
that.
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 13:46:54 -0400] rev 37984
tests: use stringutil.pprint instead of custom dumper in test-hgweb-auth.py
Differential Revision: https://phab.mercurial-scm.org/D3529
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 13:43:59 -0400] rev 37983
tests: port test-simplekeyvaluefile.py to Python 3
# skip-blame just b prefixes
Differential Revision: https://phab.mercurial-scm.org/D3528
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 13:39:45 -0400] rev 37982
tests: port test-extensions-wrapfunction to Python 3
Differential Revision: https://phab.mercurial-scm.org/D3527
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 13:15:51 -0400] rev 37981
tests: port test-ui-config to Python 3
Slight test output changes to make life easier.
Differential Revision: https://phab.mercurial-scm.org/D3526
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 13:37:10 -0400] rev 37980
config: fix py3 backslash escaping bug in parser caught by tests
Differential Revision: https://phab.mercurial-scm.org/D3525
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 13:27:18 -0400] rev 37979
tests: port test-symlink-os-yes-fs-no.py to Python 3
# skip-blame just bytes/str changes
Differential Revision: https://phab.mercurial-scm.org/D3524
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 13:26:43 -0400] rev 37978
posix: use inst.errno instead of inst[0] on OSError instances
Differential Revision: https://phab.mercurial-scm.org/D3523
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 13:17:24 -0400] rev 37977
tests: port test-filelog.py to Python 3
# skip-blame just some bytes prefixes
Differential Revision: https://phab.mercurial-scm.org/D3522
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 13:15:16 -0400] rev 37976
stringutil: teach pprint about tuples
Differential Revision: https://phab.mercurial-scm.org/D3521
Yuya Nishihara <yuya@tcha.org> [Thu, 19 Apr 2018 21:00:12 +0900] rev 37975
templatefuncs: show hint if extdata source is evaluated to empty (issue5843)
Martin von Zweigbergk <martinvonz@google.com> [Fri, 04 May 2018 21:31:34 -0700] rev 37974
revlog: use literal -1 instead of variable that always has that value
We were setting "ntrev" to "rev", but "rev" was always -1 at the end
of the loop, so it's clearer to use a literal -1.
Differential Revision: https://phab.mercurial-scm.org/D3498
Martin von Zweigbergk <martinvonz@google.com> [Fri, 04 May 2018 22:17:28 -0700] rev 37973
revlog: extract function for fully populating the radix tree
This code is currently used for partialmatch(), but I want to reuse it
when I implement shortest() in native code.
Differential Revision: https://phab.mercurial-scm.org/D3497
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 12:07:57 -0400] rev 37972
tests: port test-lfs-pointer.py to Python 3
The weird bit here is having to import /something/ from Mercurial
before we touch hgext.* so that the module loader gets
initialized. That's probably a bug we should explore at some point?
Differential Revision: https://phab.mercurial-scm.org/D3514
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 13:09:19 -0400] rev 37971
tests: port test-ui-verbosity.py to Python 3
# skip-blame just some bytes/string wrangling
Differential Revision: https://phab.mercurial-scm.org/D3515
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 12:07:32 -0400] rev 37970
lfs: stabilize error message values for Python 2 and 3
Differential Revision: https://phab.mercurial-scm.org/D3513
Augie Fackler <augie@google.com> [Fri, 27 Apr 2018 11:59:21 -0400] rev 37969
tests: port test-ui-color.py to Python 3
As in some other tests, I like confirming that we're dealing with
bytes here, so the b prefix is now in the expected output on both 2
and 3.
Differential Revision: https://phab.mercurial-scm.org/D3512