Matt Harbison <matt_harbison@yahoo.com> [Sun, 27 Jan 2019 15:19:28 -0500] rev 41426
py3: byteify the LFS blobstore module
This is almost entirely b'' prefixing, with a couple of exceptions forced to
bytes. Much of this is also borrowed from Augie's code. There's an
HTTPError.read() that I flagged that I assume needs to be converted to bytes,
but I can't find confirmation.
Handling the deserialized JSON object over several functions made r'' vs b''
accesses confusing, so this assumes that the JSON object will be converted to
bytes immediately. That will be done in the following commits, so it's not
buried in these trivial changes.
Matt Harbison <matt_harbison@yahoo.com> [Sun, 27 Jan 2019 00:50:39 -0500] rev 41425
py3: raw stringify various things in the LFS server module
Some of this is based on code written by Augie. I'm slightly unsure if these
are the correct pycompat bytes <-> str conversion methods.
Matt Harbison <matt_harbison@yahoo.com> [Sun, 27 Jan 2019 00:36:56 -0500] rev 41424
py3: add b'' prefixes to the LFS server module
There are a ton of these changes in the blobstore, as well as r'' prefixing. So
separating these out hopefully makes review easier.
# skip-blame for b'' prefixing
Matt Harbison <matt_harbison@yahoo.com> [Sun, 27 Jan 2019 00:26:17 -0500] rev 41423
py3: add b'' and r'' prefixes to LFS tests
Augie Fackler <augie@google.com> [Sun, 27 Jan 2019 20:22:07 -0500] rev 41422
py3: more tests from the ratchet
Differential Revision: https://phab.mercurial-scm.org/D5730
Yuya Nishihara <yuya@tcha.org> [Sat, 26 Jan 2019 17:53:03 +0900] rev 41421
dispatch: unify handler of IOError and OSError
These exceptions were merged in Python 3.
Yuya Nishihara <yuya@tcha.org> [Sat, 26 Jan 2019 17:51:55 +0900] rev 41420
dispatch: quote filename in IOError as well
It's explicitly added for OSError at
720308f741cb "dispatch: show empty
filename in OSError aborts". Let's do the same for IOError.
Yuya Nishihara <yuya@tcha.org> [Sat, 26 Jan 2019 17:44:07 +0900] rev 41419
dispatch: add inline comment about possible IOError subtypes
It's hard to tell which "if" would handle which exception.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 26 Jan 2019 16:53:17 -0800] rev 41418
convert: print exception message directly
Otherwise the default repr() implementation will b'' prefix the
returned str on Python 3.
Differential Revision: https://phab.mercurial-scm.org/D5729
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 26 Jan 2019 16:45:25 -0800] rev 41417
crecord: always return a str from uihunk.__repr__
Otherwise Python 3 complains about it returning bytes.
Differential Revision: https://phab.mercurial-scm.org/D5728
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 26 Jan 2019 15:52:37 -0800] rev 41416
tests: handles bytes/str mismatch in test-commit-interface-curses.t
This fixes various test failures on Python 3.
Differential Revision: https://phab.mercurial-scm.org/D5727
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 26 Jan 2019 14:16:34 -0800] rev 41415
githelp: format with %d if an integer
Python 3 doesn't allow us to format an int with %s like Python 2
did. So handle that.
Differential Revision: https://phab.mercurial-scm.org/D5726
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 26 Jan 2019 14:14:44 -0800] rev 41414
githelp: make argument parsing more compatible with Python 3
There were various mixing of str and bytes in here. This change
fixes most of the failures in test-githelp.t.
Differential Revision: https://phab.mercurial-scm.org/D5725
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 26 Jan 2019 14:08:35 -0800] rev 41413
tests: add b'' prefixes to flagprocessorext.py
Otherwise a part of test-flavprocessor.t fails due to not
setting the proper key.
Differential Revision: https://phab.mercurial-scm.org/D5724
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 26 Jan 2019 14:06:07 -0800] rev 41412
tests: add b'' to config file name
Without this, things die in the bowels of the config system
due to mixing str and bytes.
# skip-blame: just b'' prefix
Differential Revision: https://phab.mercurial-scm.org/D5723
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 26 Jan 2019 14:00:42 -0800] rev 41411
sslutil: ensure serverhostname is bytes when formatting
It will likely be a str on Python 3.
Differential Revision: https://phab.mercurial-scm.org/D5722
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 26 Jan 2019 13:58:58 -0800] rev 41410
sslutil: use raw strings for exception reason compare
Otherwise we attempt to compare a bytes to a str on Python 3
and it always fails.
Differential Revision: https://phab.mercurial-scm.org/D5721
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 26 Jan 2019 13:40:44 -0800] rev 41409
keepalive: track ready state with a bool
This code may have been written before Python had a bool type.
Differential Revision: https://phab.mercurial-scm.org/D5719
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 26 Jan 2019 13:39:18 -0800] rev 41408
keepalive: use collections.defaultdict for host map
Cleaning up the code as part of debugging Python 3 issues.
Differential Revision: https://phab.mercurial-scm.org/D5718
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 26 Jan 2019 10:57:17 -0800] rev 41407
statichttprepo: use str to appease Python 3
The URL fed into urllib and HTTP headers need to be str on
Python 3.
Differential Revision: https://phab.mercurial-scm.org/D5716
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 26 Jan 2019 10:53:10 -0800] rev 41406
statichttprepo: use URLError.reason directly
0b3f4be5c5bf changed str(inst) to inst.reason[0] all the way back
in 2006. URLError.reason is a str and we should have taken that
attribute in its entirety. I think the code was supposed to be
inst.args[1] for compatibility with ancient Python versions.
Python 2.7 always sets .reason, so it should be safe to use
directly.
Differential Revision: https://phab.mercurial-scm.org/D5715
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 26 Jan 2019 10:40:37 -0800] rev 41405
mail: document behavior of Python 3
test-notify.t (and possibly other tests) are failing on Python 3
because email.message.Message is now aware of encodings and
attempts to roundtrip values with the specified message encoding.
Python 2 doesn't perform this roundtripping. We have tests with
non-ascii data being serialized to a message that claims to use
ascii encoding.
I /think/ Mercurial's behavior may be buggy here. But I'm not
sure.
I'm documenting the behavior so the next person who looks into
this doesn't start from scratch like I did.
Differential Revision: https://phab.mercurial-scm.org/D5714
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 26 Jan 2019 10:22:09 -0800] rev 41404
notify: be more defensive aboute None values
encoding.strtolocal is the identity function on Python 2
but an actual string manipulation routine on Python 3.
In some cases, we were passing None, which caused Python 3
to barf.
Let's change the code to react properly when the value is
None.
Differential Revision: https://phab.mercurial-scm.org/D5713
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 26 Jan 2019 10:00:17 -0800] rev 41403
wireprotov2server: use our JSON encoder
Python's json module doesn't like to encode bytes instances.
This makes this code difficult to work with Python 3.
We simply swap in Mercurial's JSON encoder to work around it.
Differential Revision: https://phab.mercurial-scm.org/D5712
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 25 Jan 2019 17:11:49 -0800] rev 41402
tests: add optional setsockopt() lines for Python 3
Differential Revision: https://phab.mercurial-scm.org/D5711
Navaneeth Suresh <navaneeths1998@gmail.com> [Sat, 26 Jan 2019 13:14:21 +0530] rev 41401
diffstat: support filenames with whitespaces on renames
This is a follow-up patch to D5628. `line.split()` cannot get filenames with
whitespaces as mentioned by @yuja. This patch replaces `split()` method with
`slice`. Corresponding tests were also added.
Differential Revision: https://phab.mercurial-scm.org/D5709
Martin von Zweigbergk <martinvonz@google.com> [Mon, 21 Jan 2019 23:08:31 -0800] rev 41400
largefiles: avoid walking full manifest
When using treemanifest, diffs between two manifests can often be much
cheaper than iterating the full manifests (because common subtrees are
skipped).
Differential Revision: https://phab.mercurial-scm.org/D5644
Martin von Zweigbergk <martinvonz@google.com> [Fri, 25 Jan 2019 23:22:23 -0800] rev 41399
cleanup: use p1() instead of parents() when we only need the first parent
Differential Revision: https://phab.mercurial-scm.org/D5708
Martin von Zweigbergk <martinvonz@google.com> [Fri, 25 Jan 2019 23:43:11 -0800] rev 41398
cleanup: use repo['.'] instead of repo[None].p1()
Differential Revision: https://phab.mercurial-scm.org/D5707
Martin von Zweigbergk <martinvonz@google.com> [Fri, 25 Jan 2019 23:36:23 -0800] rev 41397
cleanup: use p1() and p2() instead of parents()[0] and parents()[1]
We have had these methods on both contexts and dirstate for a long
time now.
Differential Revision: https://phab.mercurial-scm.org/D5706
Martijn Pieters <mj@octobus.net> [Mon, 21 Jan 2019 15:29:14 +0000] rev 41396
branchmap: rename partial -> bcache
The name better reflects that we have a branchcache object here, even if at
*some point* it is still being constructed.
Differential Revision: https://phab.mercurial-scm.org/D5290
Martin von Zweigbergk <martinvonz@google.com> [Mon, 21 Jan 2019 13:45:12 -0800] rev 41395
context: delete mistaken comment about return value of renamed()
The comment seems to think that the return value of renamed() is a
tuple of source pathsx in the parents, but it's actually a pair of
(rename source path, file nodeid).
Differential Revision: https://phab.mercurial-scm.org/D5639