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.
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*)"([^"]+)"'
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*)"([^"]+)"'
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? :)
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 11:07:25 -0500] rev 36603
lfs: use %d to encode int, not str()
Differential Revision: https://phab.mercurial-scm.org/D2567
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 11:07:07 -0500] rev 36602
lfs: use byteskwargs() on some **kwargs for python 3 compat
Differential Revision: https://phab.mercurial-scm.org/D2566
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 11:06:37 -0500] rev 36601
lfs: add some bytestring wrappers in blobstore.py
Differential Revision: https://phab.mercurial-scm.org/D2565
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 11:05:53 -0500] rev 36600
lfs: add missing b prefixes on some regular expressions
# skip-blame just some b prefixes
Differential Revision: https://phab.mercurial-scm.org/D2564
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Feb 2018 19:34:35 +0900] rev 36599
templatekw: deprecate showdict() and showlist() (API)
.. api::
templatekw.showdict() and showlist() are deprecated in favor of new
(context, mapping) API. Switch the keyword function to new API and use
templatekw.compatdict() and compatlist() instead.
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Feb 2018 19:25:14 +0900] rev 36598
templatekw: switch remainder of _showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Feb 2018 20:55:53 +0900] rev 36597
templatekw: switch manifest template keyword to new API
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Feb 2018 19:23:06 +0900] rev 36596
templatekw: switch latesttags template keywords to new API
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Feb 2018 19:08:02 +0900] rev 36595
templatekw: switch revset() to new API
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Feb 2018 19:05:57 +0900] rev 36594
templatekw: switch obsfate-related template keywords to new API
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Feb 2018 18:52:51 +0900] rev 36593
templatekw: switch namespace template keywords to new API
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Feb 2018 18:56:06 +0900] rev 36592
namespace: use registrar to add template keyword
Prepares for switching to the new API.
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Feb 2018 16:45:44 +0900] rev 36591
templatekw: switch most of showlist template keywords to new API (
issue5779)
Non-trivial changes will follow.
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Feb 2018 16:22:55 +0900] rev 36590
templatekw: switch showdict template keywords to new API
Kevin Bullock <kbullock+mercurial@ringworld.org> [Fri, 02 Mar 2018 15:37:57 -0500] rev 36589
py3: bail on ratcheting tests forward on 3.6.0 and 3.6.1
Yuya Nishihara <yuya@tcha.org> [Thu, 01 Mar 2018 18:22:36 -0500] rev 36588
py3: silence "bad escape" warning emitted by re.sub()
Since we pass user strings directly to re.sub(), we can't avoid this warning
without a BC.
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 14:12:17 -0500] rev 36587
debugcommands: add some strkwargs love to some **args calls
Differential Revision: https://phab.mercurial-scm.org/D2563
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 14:10:34 -0500] rev 36586
debugcommands: add an r prefix to make file mode for fdopen a sysstr
# skip-blame just an r prefix
Differential Revision: https://phab.mercurial-scm.org/D2562
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 14:09:50 -0500] rev 36585
util: work around Python 3 returning None at EOF instead of ''
Differential Revision: https://phab.mercurial-scm.org/D2561
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 14:09:20 -0500] rev 36584
util: add missing r prefix on some __setattr__ calls
# skip-blame just a pair of r prefixes
Differential Revision: https://phab.mercurial-scm.org/D2560
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 13:47:49 -0500] rev 36583
tests: add some re and globs for test-revset on python3
At this point we're down to two deprecation warnings (which I suspect
are showing a bug in the test?) and one weird-looking failure. Progress!
Differential Revision: https://phab.mercurial-scm.org/D2559
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 11:38:16 -0500] rev 36582
tests: add missing b prefixes and fix a %s to %d in test-revset.t
# skip-blame just b prefixes and a %d instead of %s
Differential Revision: https://phab.mercurial-scm.org/D2558
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 11:37:41 -0500] rev 36581
revset: use %d to turn an int into a bytestr
Differential Revision: https://phab.mercurial-scm.org/D2557
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 11:37:21 -0500] rev 36580
revset: use {force,}bytestr to fix some %r formatting issues
Differential Revision: https://phab.mercurial-scm.org/D2556
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 01:17:42 -0500] rev 36579
py3: sixteen more passing tests
Differential Revision: https://phab.mercurial-scm.org/D2552
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 00:37:33 -0500] rev 36578
debugcommands: fix repr in debugignore print with pycompat.bytestr
Differential Revision: https://phab.mercurial-scm.org/D2549
Augie Fackler <augie@google.com> [Thu, 01 Mar 2018 23:58:28 -0500] rev 36577
verify: fix exception formatting bug in Python 3
Differential Revision: https://phab.mercurial-scm.org/D2541
Yuya Nishihara <yuya@tcha.org> [Fri, 02 Mar 2018 13:50:31 -0500] rev 36576
get-with-headers: use bytes stdout thoroughly
On Python 3, sys.stdout.buffer is backed by a separate buffer from sys.stdout.
We should choose one.
Martin von Zweigbergk <martinvonz@google.com> [Thu, 01 Mar 2018 17:16:36 -0800] rev 36575
exchange: remove dead assignment or forcebundle1
Differential Revision: https://phab.mercurial-scm.org/D2548
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 09:09:38 -0500] rev 36574
templatekw: fix dict construction in _showlist to not mix bytes and strs
What we had was fine on Python 2, but was slightly wrong on Python
3. This works on both.
Differential Revision: https://phab.mercurial-scm.org/D2554
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 09:08:11 -0500] rev 36573
templatefilters: avoid infinite recursion bug in stringify
This doesn't ever happen on Python 2, but it's been a persistent pain
on Python 3. Adding this helped produce some of my upcoming Python 3
fixes.
Differential Revision: https://phab.mercurial-scm.org/D2553
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 00:37:55 -0500] rev 36572
match: some minimal pycompat fixes guided by test-hgignore.t
Differential Revision: https://phab.mercurial-scm.org/D2551
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 00:37:07 -0500] rev 36571
purge: apply byteskwargs to opts, fixing all python3 issues here
Differential Revision: https://phab.mercurial-scm.org/D2547
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 00:19:51 -0500] rev 36570
tests: port test-bookmarks.t extension to Python 3
# skip-blame it's just b prefixes
Differential Revision: https://phab.mercurial-scm.org/D2546
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 00:19:30 -0500] rev 36569
scmutil: fix a repr in an error message on Python 3
Differential Revision: https://phab.mercurial-scm.org/D2545
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 00:19:16 -0500] rev 36568
bookmarks: fix a repr in a message on Python 3
Differential Revision: https://phab.mercurial-scm.org/D2544
Augie Fackler <augie@google.com> [Fri, 02 Mar 2018 00:11:19 -0500] rev 36567
py3: add missing b prefixes in test-debugextensions.t
# skip-blame just some b prefixes
Differential Revision: https://phab.mercurial-scm.org/D2543
Augie Fackler <augie@google.com> [Thu, 01 Mar 2018 23:59:44 -0500] rev 36566
tests: help dummysmtpd work on python 3
Differential Revision: https://phab.mercurial-scm.org/D2542
Augie Fackler <augie@google.com> [Thu, 01 Mar 2018 23:58:04 -0500] rev 36565
tests: port helper script revlog-formatv0.py to python 3
Differential Revision: https://phab.mercurial-scm.org/D2540
Augie Fackler <augie@google.com> [Thu, 01 Mar 2018 21:17:58 -0500] rev 36564
tests: add missing b prefix in test python in test-
issue2137.t
# skip-blame just a b prefix
Differential Revision: https://phab.mercurial-scm.org/D2539
Augie Fackler <augie@google.com> [Thu, 01 Mar 2018 20:44:38 -0500] rev 36563
templatefilters: convert arguments to sysstrs for unicode() ctor
Differential Revision: https://phab.mercurial-scm.org/D2538
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 02 Mar 2018 07:14:59 +0530] rev 36562
py3: use util.forcebytestr() to convert IOErrors to bytes
Differential Revision: https://phab.mercurial-scm.org/D2536
Augie Fackler <augie@google.com> [Thu, 01 Mar 2018 18:20:49 -0500] rev 36561
py3: whitelist three more passing tests
Differential Revision: https://phab.mercurial-scm.org/D2530
Augie Fackler <augie@google.com> [Thu, 01 Mar 2018 18:13:50 -0500] rev 36560
convert: fix two %r output formats with pycompat.bytestr() wrapping
Differential Revision: https://phab.mercurial-scm.org/D2529
Augie Fackler <augie@google.com> [Thu, 01 Mar 2018 17:48:06 -0500] rev 36559
convert: use our shlex wrapper in filemap to avoid Python 3 tracebacks
Differential Revision: https://phab.mercurial-scm.org/D2527
Augie Fackler <augie@google.com> [Thu, 01 Mar 2018 17:47:49 -0500] rev 36558
convcmd: use our shlex wrapper to avoid Python 3 tracebacks
Differential Revision: https://phab.mercurial-scm.org/D2526