Sat, 03 Mar 2018 17:09:26 -0500 cmdutil: ensure PatchError messages are coerded to bytes, not str
Augie Fackler <augie@google.com> [Sat, 03 Mar 2018 17:09:26 -0500] rev 36663
cmdutil: ensure PatchError messages are coerded to bytes, not str Differential Revision: https://phab.mercurial-scm.org/D2613
Sat, 03 Mar 2018 17:08:41 -0500 tests: fix bytes literals in test-fncache.t
Augie Fackler <augie@google.com> [Sat, 03 Mar 2018 17:08:41 -0500] rev 36662
tests: fix bytes literals in test-fncache.t # skip-blame just b prefixes Differential Revision: https://phab.mercurial-scm.org/D2612
Sat, 03 Mar 2018 17:08:05 -0500 scmutil: avoid using basestring and add explicit handling of unicodes
Augie Fackler <augie@google.com> [Sat, 03 Mar 2018 17:08:05 -0500] rev 36661
scmutil: avoid using basestring and add explicit handling of unicodes This resolves some Python 3 defects, and I don't think it is a meaningful behavior change in Python 2. Differential Revision: https://phab.mercurial-scm.org/D2611
Sat, 03 Mar 2018 17:07:18 -0500 tests: fix inline extension bytes in test-ssh-proto-unbundle.t
Augie Fackler <augie@google.com> [Sat, 03 Mar 2018 17:07:18 -0500] rev 36660
tests: fix inline extension bytes in test-ssh-proto-unbundle.t # skip-blame just b prefixes Differential Revision: https://phab.mercurial-scm.org/D2610
Sat, 03 Mar 2018 16:38:17 -0500 hghave: fix up clang-libfuzzer regex to be bytes
Augie Fackler <augie@google.com> [Sat, 03 Mar 2018 16:38:17 -0500] rev 36659
hghave: fix up clang-libfuzzer regex to be bytes Fixes this check on Python 3. # skip-blame just a b prefix Differential Revision: https://phab.mercurial-scm.org/D2607
Sat, 03 Mar 2018 15:41:12 -0500 py3: accept both unicode and byte strings as filename carried by IOError
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 15:41:12 -0500] rev 36658
py3: accept both unicode and byte strings as filename carried by IOError Follows up 77f98867538f. We could assume there's no bytes filename in our codebase, but it's probably better to not raise UnicodeError because of a unicode filename.
Sat, 03 Mar 2018 15:33:52 -0500 py3: back out c77c925987d7 to store bytes filename in IOError
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 15:33:52 -0500] rev 36657
py3: back out c77c925987d7 to store bytes filename in IOError Appears that this is how Python 3 works.
Sat, 03 Mar 2018 14:57:23 -0500 largefiles: headers and values need to be sysstrs, add r prefixes
Augie Fackler <augie@google.com> [Sat, 03 Mar 2018 14:57:23 -0500] rev 36656
largefiles: headers and values need to be sysstrs, add r prefixes # skip-blame just some r prefixes Differential Revision: https://phab.mercurial-scm.org/D2606
Sat, 03 Mar 2018 11:26:30 -0500 cext: accept arguments as Py_buffer
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 03 Mar 2018 11:26:30 -0500] rev 36655
cext: accept arguments as Py_buffer The s*/y* value formatters receive a Py_buffer instead of a char *. This value format is more flexible in the types that it allows. We change bdiff() to accept any object that conforms to the buffer protocol. We validate the buffers are contiguous and have a single dimension. This allows memoryview instances to be handled by the function, so we revert a recent change to cast arguments to bytes before calling this function. Differential Revision: https://phab.mercurial-scm.org/D2587
Sat, 03 Mar 2018 11:19:43 -0500 cext: refactor cleanup code in bdiff()
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 03 Mar 2018 11:19:43 -0500] rev 36654
cext: refactor cleanup code in bdiff() A future commit will need to introduce additional cleanup code. We refactor the cleanup code to check NULL before calling free(). We also initialize these variables as NULL. We set the out of memory exception explicitly, so we can just return result. Differential Revision: https://phab.mercurial-scm.org/D2586
Fri, 02 Mar 2018 07:13:33 +0530 py3: use pycompat.bytestr() to convert error messages to bytes
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 02 Mar 2018 07:13:33 +0530] rev 36653
py3: use pycompat.bytestr() to convert error messages to bytes Differential Revision: https://phab.mercurial-scm.org/D2535
Sat, 03 Mar 2018 14:28:51 -0500 url: more bytes/unicodes fussing in url.py around auth handling
Augie Fackler <augie@google.com> [Sat, 03 Mar 2018 14:28:51 -0500] rev 36652
url: more bytes/unicodes fussing in url.py around auth handling Once again, these methods are a little annoying to handle because they can get unicodes or bytes depending on who's calling. I think we can probably clean this up a TON once we can run something like pytype and do typechecking of our Python, but until then this is going to be the easy way out. This fixes test-http-bundle1.t. Differential Revision: https://phab.mercurial-scm.org/D2599
Sat, 03 Mar 2018 14:24:21 -0500 httpconnection: convert url to bytes in readauthforuri
Augie Fackler <augie@google.com> [Sat, 03 Mar 2018 14:24:21 -0500] rev 36651
httpconnection: convert url to bytes in readauthforuri This method is sometimes called by the stdlib, so we just need to accept both bytes and unicodes here. Awesome. Differential Revision: https://phab.mercurial-scm.org/D2598
Sat, 03 Mar 2018 14:44:41 -0500 tests: prevent enormous output spew in test-lfs-largefiles.t
Augie Fackler <augie@google.com> [Sat, 03 Mar 2018 14:44:41 -0500] rev 36650
tests: prevent enormous output spew in test-lfs-largefiles.t This test currently fails on Python 3, but in a super-slow way. Adding this `head` invocation costs us nothing, but will prevent failures in this area from being super expensive. Differential Revision: https://phab.mercurial-scm.org/D2600
Sat, 03 Mar 2018 12:23:03 -0500 py3: fix formatting of path-auditing errors
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 12:23:03 -0500] rev 36649
py3: fix formatting of path-auditing errors
Sat, 03 Mar 2018 12:36:05 -0500 py3: make os.curdir a bytes
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 12:36:05 -0500] rev 36648
py3: make os.curdir a bytes
Sat, 03 Mar 2018 12:34:35 -0500 py3: make os.pardir a bytes
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 12:34:35 -0500] rev 36647
py3: make os.pardir a bytes
Sat, 03 Mar 2018 14:21:47 -0500 py3: fix slicing of bytes in patch.iterhunks()
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 14:21:47 -0500] rev 36646
py3: fix slicing of bytes in patch.iterhunks()
Sat, 03 Mar 2018 09:35:59 -0500 tests: fix various test-check-module-imports.t violations
Augie Fackler <augie@google.com> [Sat, 03 Mar 2018 09:35:59 -0500] rev 36645
tests: fix various test-check-module-imports.t violations Somehow these are only caught when running the test under Python 3. Differential Revision: https://phab.mercurial-scm.org/D2580
Tue, 27 Feb 2018 00:33:46 +0530 pycompat: prevent encoding or decoding values if not required
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 27 Feb 2018 00:33:46 +0530] rev 36644
pycompat: prevent encoding or decoding values if not required pycompat.py has functions strurl and bytesurl which decodes and encodes the url passed on Python 3 respectively. In some cases, strurl gets a url which is already str and bytesurl gets a url which is already bytes. Let's prevent encoding or decoding the values again if not required. Differential Revision: https://phab.mercurial-scm.org/D2472
Sat, 03 Mar 2018 10:39:48 -0500 py3: add some b'' to make test-lock-badness.t happy
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 10:39:48 -0500] rev 36643
py3: add some b'' to make test-lock-badness.t happy
Sat, 03 Mar 2018 10:32:06 -0500 py3: fix formatting of lock error message
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 10:32:06 -0500] rev 36642
py3: fix formatting of lock error message
Sat, 03 Mar 2018 10:02:36 -0500 py3: fix some unicode madness in global exception catcher
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 10:02:36 -0500] rev 36641
py3: fix some unicode madness in global exception catcher
Sat, 03 Mar 2018 10:08:13 -0500 py3: pass a system-string filename to sub-classes of IOError
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 10:08:13 -0500] rev 36640
py3: pass a system-string filename to sub-classes of IOError
Sat, 03 Mar 2018 09:19:34 -0500 py3: fix some membership tests on linkrev adjustment
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 09:19:34 -0500] rev 36639
py3: fix some membership tests on linkrev adjustment
Fri, 02 Mar 2018 22:38:09 -0500 py3: make test-basic.t pass on Python 3
Yuya Nishihara <yuya@tcha.org> [Fri, 02 Mar 2018 22:38:09 -0500] rev 36638
py3: make test-basic.t pass on Python 3
Fri, 02 Mar 2018 22:35:20 -0500 py3: silence the final IOError by closing stdout/err slightly early
Yuya Nishihara <yuya@tcha.org> [Fri, 02 Mar 2018 22:35:20 -0500] rev 36637
py3: silence the final IOError by closing stdout/err slightly early Fixes the following test failure: $ hg status >/dev/full abort: No space left on device Exception ignored in: <_io.TextIOWrapper name='<stdout>' mode='w' ... OSError: [Errno 28] No space left on device [120]
Fri, 02 Mar 2018 22:10:36 -0500 py3: conditionalize initialization of stdio flags
Yuya Nishihara <yuya@tcha.org> [Fri, 02 Mar 2018 22:10:36 -0500] rev 36636
py3: conditionalize initialization of stdio flags Since Python 3 doesn't depend on the stdio of libc, there should be no need to set O_BINARY flag on Windows.
Thu, 01 Mar 2018 18:25:19 -0500 test-command-template: glob out detailed "invalid escape" message
Yuya Nishihara <yuya@tcha.org> [Thu, 01 Mar 2018 18:25:19 -0500] rev 36635
test-command-template: glob out detailed "invalid escape" message Python 3 also reports the position where an invalid escape found.
Thu, 01 Mar 2018 08:14:54 -0500 templater: byte-stringify dict/list values before passing to default format
Yuya Nishihara <yuya@tcha.org> [Thu, 01 Mar 2018 08:14:54 -0500] rev 36634
templater: byte-stringify dict/list values before passing to default format bytestr() is applied only when no custom format string like '%d' is specified.
Thu, 01 Mar 2018 08:07:22 -0500 templater: allow dynamically switching the default dict/list formatting
Yuya Nishihara <yuya@tcha.org> [Thu, 01 Mar 2018 08:07:22 -0500] rev 36633
templater: allow dynamically switching the default dict/list formatting '%s' doesn't work nicely on Python 3 because many Python types don't implement __bytes__().
Sat, 03 Mar 2018 21:01:07 +0530 py3: use util.forcevytestr to convert error to bytes
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 03 Mar 2018 21:01:07 +0530] rev 36632
py3: use util.forcevytestr to convert error to bytes Differential Revision: https://phab.mercurial-scm.org/D2585
Sat, 03 Mar 2018 09:50:07 -0500 util: report integer result from write()
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 03 Mar 2018 09:50:07 -0500] rev 36631
util: report integer result from write() Python 2 sometimes returns None from write() calls. Python 3 doesn't. This will make test output inconsistent between Python 2 and 3. So let's paper over the differences by converting None to the length of the result string. Differential Revision: https://phab.mercurial-scm.org/D2584
Sat, 03 Mar 2018 09:34:06 -0500 util: log readinto() I/O
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 03 Mar 2018 09:34:06 -0500] rev 36630
util: log readinto() I/O Differential Revision: https://phab.mercurial-scm.org/D2583
Fri, 02 Mar 2018 22:47:18 -0500 util: teach escapedata() about bytearray
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 02 Mar 2018 22:47:18 -0500] rev 36629
util: teach escapedata() about bytearray re.map doesn't seem to know about bytearray (at least in Python 2). Cast bytearray to a bytes to work around this inconvenience. Differential Revision: https://phab.mercurial-scm.org/D2582
Fri, 02 Mar 2018 22:59:12 -0500 sshpeer: don't read(0)
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 02 Mar 2018 22:59:12 -0500] rev 36628
sshpeer: don't read(0) read(0) is essentially a no-op. Let's avoid the function call, overhead, and extra test output by not performing it. Differential Revision: https://phab.mercurial-scm.org/D2581
Sat, 03 Mar 2018 05:51:34 -0500 py3: unblock C extensions on Python 3
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 05:51:34 -0500] rev 36627
py3: unblock C extensions on Python 3 Please make sure to build C extensions before running tests with -l: $ make local PYTHON=python3
Sat, 03 Mar 2018 07:59:20 -0500 py3: make test-ancestors.py pass on Python 3 with C extensions
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 07:59:20 -0500] rev 36626
py3: make test-ancestors.py pass on Python 3 with C extensions # skip-blame just some b prefixes
Sat, 03 Mar 2018 07:24:25 -0500 py3: do not pass a memoryview to bdiff.bdiff()
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 07:24:25 -0500] rev 36625
py3: do not pass a memoryview to bdiff.bdiff() This doesn't look nice, but I don't know how to make a zero-copy slice of bytes which is compatible with the buffer protocol.
Sat, 03 Mar 2018 07:00:37 -0500 py3: do not pass a list of iterators to computephasesmapsets()
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 07:00:37 -0500] rev 36624
py3: do not pass a list of iterators to computephasesmapsets()
Sat, 03 Mar 2018 06:57:02 -0500 cext: fix computephasesmapsets() not to return without setting an exception
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 06:57:02 -0500] rev 36623
cext: fix computephasesmapsets() not to return without setting an exception Spotted by map() of Python 3.
Sat, 03 Mar 2018 06:44:47 -0500 py3: do not pass a float to dict_new_presized()
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 06:44:47 -0500] rev 36622
py3: do not pass a float to dict_new_presized() I really don't like the division operator of Python 3 since I'm not doing a math.
Sat, 03 Mar 2018 06:41:52 -0500 cext: mark tuple_format as a constant
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 06:41:52 -0500] rev 36621
cext: mark tuple_format as a constant Just for clarity.
Sat, 03 Mar 2018 06:18:47 -0500 py3: bulk-replace 'const char*' format specifier passed to PyArg_ParseTuple*()
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 06:18:47 -0500] rev 36620
py3: bulk-replace 'const char*' format specifier passed to PyArg_ParseTuple*() Perhaps we need this because 's' accepts a unicode string. https://docs.python.org/3/c-api/arg.html#strings-and-buffers Substituted using the following pattern with some manual fixes: '\b(PyArg_ParseTuple)\((\s*\w+,\s*)"([^"]+)"' '\b(PyArg_ParseTupleAndKeywords)\((\s*\w+,\s*\w+,\s*)"([^"]+)"'
Sat, 03 Mar 2018 06:08:22 -0500 py3: bulk-replace bytes format specifier passed to Py_BuildValue()
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 06:08:22 -0500] rev 36619
py3: bulk-replace bytes format specifier passed to Py_BuildValue() On Python 3, "s" means a utf-8 string. We have to use "y" for bytes, sigh. https://docs.python.org/3/c-api/arg.html#c.Py_BuildValue Substituted using the following pattern with some manual fixes: '\b(Py_BuildValue)\((\s*)"([^"]+)"'
Sat, 03 Mar 2018 05:58:41 -0500 py3: add PY23() macro to switch string literal depending on python version
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 05:58:41 -0500] rev 36618
py3: add PY23() macro to switch string literal depending on python version I have no better idea to work around the bytes-unicode divergence of Py_BuildValue(). Maybe we can write a code transformer for C extensions? :)
Sat, 03 Mar 2018 05:50:45 -0500 py3: don't try to mangle C extension blob by code transformer
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Mar 2018 05:50:45 -0500] rev 36617
py3: don't try to mangle C extension blob by code transformer
Fri, 02 Mar 2018 18:47:27 -0500 tests: add missing b prefixes in test-atomictempfile.py
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 18:47:27 -0500] rev 36616
tests: add missing b prefixes in test-atomictempfile.py # skip-blame just some b prefixes Differential Revision: https://phab.mercurial-scm.org/D2570
Tue, 27 Feb 2018 16:31:44 -0800 wireproto: only expose "between" to version 1 of wire protocols
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 27 Feb 2018 16:31:44 -0800] rev 36615
wireproto: only expose "between" to version 1 of wire protocols We recently marked other legacy commands as only available to version 1 of the wire protocols. We held off marking "between" because it is used as part of the SSH handshake. Since SSH servers assume they are version 1 by default and the "between" request that is issued as part of the version 2 handshake is swallowed and not operated on, everything should "just work" if "between" is not available to version 2. Differential Revision: https://phab.mercurial-scm.org/D2513
Fri, 02 Mar 2018 18:55:18 -0500 tests: add more tests around hook output and getbundle
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 02 Mar 2018 18:55:18 -0500] rev 36614
tests: add more tests around hook output and getbundle The previous tests around hook output only tested Python hooks. Let's add some shell hooks in for additional test coverage. Differential Revision: https://phab.mercurial-scm.org/D2550
Tue, 27 Feb 2018 16:24:02 -0800 wireproto: add transport specific capabilities in the transport
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 27 Feb 2018 16:24:02 -0800] rev 36613
wireproto: add transport specific capabilities in the transport We add a method to the protocol handler interface that allows specific implementations to add their own capabilities. The SSH implementation is a no-op. The HTTP implementation adds the HTTP-specific capabilities. The end result is transport specific capabilities now live in the transport code instead of in some generic function in the wireproto module. Differential Revision: https://phab.mercurial-scm.org/D2512
Tue, 27 Feb 2018 15:23:04 -0800 wireproto: don't expose changegroupsubset capability if not available
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 27 Feb 2018 15:23:04 -0800] rev 36612
wireproto: don't expose changegroupsubset capability if not available We just marked the changegroupsubset command as only available to version 1 of the wire transports. There is a capability of the same name of the command that indicates if the command is supported. This commit teaches the capabilities code to conditionally emit that capability depending on whether the command is available for the current transport. Most test output is reordering of capabilities. But the limited tests for version 2 of the SSH protocol do show the capability disappearing. Differential Revision: https://phab.mercurial-scm.org/D2486
Tue, 27 Feb 2018 15:06:10 -0800 wireproto: don't expose legacy commands to version 2 of wire protocol
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 27 Feb 2018 15:06:10 -0800] rev 36611
wireproto: don't expose legacy commands to version 2 of wire protocol Now that we have the ability to control which transports a wire protocol command is exposed on, let's put it to use. We flag the "branches," "changegroup," and "changegroupsubset" commands as only available on version 1. "branches" was used by the legacy discovery mechanism and was replaced by the "known" and "heads" commands. "changegroup" and "changegroupsubset" were replaced by "getbundle." "between" is also legacy. However, since it is used by the SSH handshake protocol, marking it as legacy is a bit more complicated and will be done in a later commit. Another nuanced issue with this change is that the server-advertised capabilities still list "changegroupsubset" despite the command not being available. This will be addressed in a subsequent commit. Differential Revision: https://phab.mercurial-scm.org/D2485
Tue, 27 Feb 2018 14:56:03 -0800 wireprotoserver: identify requests via version 2 of SSH protocol as such
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 27 Feb 2018 14:56:03 -0800] rev 36610
wireprotoserver: identify requests via version 2 of SSH protocol as such The protocol handler needs to advertise itself as version 2 in order for a future feature to work. Differential Revision: https://phab.mercurial-scm.org/D2484
Fri, 02 Mar 2018 09:47:37 -0500 wireproto: allow wire protocol commands to declare transport support
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 02 Mar 2018 09:47:37 -0500] rev 36609
wireproto: allow wire protocol commands to declare transport support Currently, wire protocol commands are exposed on all transports. Some wire protocol commands are only supported or sensical on some transports. In the future, new wire protocol commands may only be available on new transports and legacy wire protocol commands may not be available to newer transports. This commit introduces a mechanism to allow @wireprotocommand to declare transports for which they should not be available. The mechanism for determining if a wire protocol command is available for a given transport instance has been taught to take this knowledge into account. To help implement this feature, we add a dict to wireprototypes declaring all wire transports and their metadata. There's probably room to refactor the constants used to identify the wire protocols. But that can be in another commit. Differential Revision: https://phab.mercurial-scm.org/D2483
Fri, 02 Mar 2018 18:50:49 -0500 sshpeer: don't read from stderr when that behavior is disabled
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 02 Mar 2018 18:50:49 -0500] rev 36608
sshpeer: don't read from stderr when that behavior is disabled We previously prevented the creation of doublepipe instances when we're not supposed to automatically read from stderr. However, there were other automatic calls to read from stderr that were undermining this effort. This commit prevents all automatic reads from stderr from occurring when they are supposed to be disabled. Because stderr is no longer being read, we need to call "readavailable" from tests so stderr is read from. Test output changes because stderr is now always (manually) read after stdout. And, since sshpeer no longer automatically tends to stderr, no "remote: " messages are printed. This should fix non-deterministic test output. FWIW, doublepipe automatically reads from stderr when reading from stdout, so I'm not sure some of these calls to self._readerr() are even needed. Differential Revision: https://phab.mercurial-scm.org/D2571
Thu, 15 Feb 2018 17:18:26 +0100 util: extract all date-related utils in utils/dateutil module
Boris Feld <boris.feld@octobus.net> [Thu, 15 Feb 2018 17:18:26 +0100] rev 36607
util: extract all date-related utils in utils/dateutil module With this commit, util.py lose 262 lines Note for extensions author, if this commit breaks your extension, you can pull the step-by-step split here to help you more easily pinpoint the renaming that broke your extension: hg pull https://bitbucket.org/octobus/mercurial-devel/ -r ac1f6453010d Differential Revision: https://phab.mercurial-scm.org/D2282
Thu, 08 Feb 2018 23:27:24 +0530 clone: updates the help text for hg clone -{r,b} (issue5654)
Sangeet Kumar Mishra <mail2sangeetmishra@gmail.com> [Thu, 08 Feb 2018 23:27:24 +0530] rev 36606
clone: updates the help text for hg clone -{r,b} (issue5654) Differential Revision: https://phab.mercurial-scm.org/D2095
Fri, 02 Mar 2018 15:48:31 -0500 py3: whitelist more passing tests
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 15:48:31 -0500] rev 36605
py3: whitelist more passing tests Differential Revision: https://phab.mercurial-scm.org/D2569
Fri, 02 Mar 2018 11:07:42 -0500 lfs: convert hexdigest to bytes using sysbytes
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 11:07:42 -0500] rev 36604
lfs: convert hexdigest to bytes using sysbytes Differential Revision: https://phab.mercurial-scm.org/D2568
(0) -30000 -10000 -3000 -1000 -300 -100 -60 +60 +100 +300 +1000 +3000 +10000 tip