Pulkit Goyal <7895pulkit@gmail.com> [Sun, 18 Feb 2018 18:20:21 +0530] rev 36325
py3: use range instead of xrange in tests/test-mq-qimport.t
xrange is not present on Python 3.
Differential Revision: https://phab.mercurial-scm.org/D2330
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 18 Feb 2018 18:19:10 +0530] rev 36324
py3: use range instead of xrange in tests/test-issue4074.t
xrange in not present on Python 3.
Differential Revision: https://phab.mercurial-scm.org/D2329
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 18 Feb 2018 18:18:24 +0530] rev 36323
py3: use range instead of xrange in tests/test-convert-mtn.t
xrange in not present on Python 3.
This change will make the test a bit slower on Python 2.
Differential Revision: https://phab.mercurial-scm.org/D2328
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 18 Feb 2018 18:28:45 +0530] rev 36322
py3: use range instead of xrange in tests/test-commandserver.t
xrange is not present on Python 3.
Differential Revision: https://phab.mercurial-scm.org/D2327
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 18 Feb 2018 18:07:12 +0530] rev 36321
py3: use range instead of xrange in tests/test-walk.t
xrange in not present in python 3.
Differential Revision: https://phab.mercurial-scm.org/D2326
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 18 Feb 2018 17:43:12 +0530] rev 36320
py3: use range instead of xrange in tests/test-mq-missingfiles.t
xrange is not present in python 3.
Differential Revision: https://phab.mercurial-scm.org/D2325
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 18 Feb 2018 17:42:33 +0530] rev 36319
py3: use range instead of xrange on py3 in tests/test-filecache.py
xrange is not present on py3.
Differential Revision: https://phab.mercurial-scm.org/D2324
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 18 Feb 2018 17:41:56 +0530] rev 36318
py3: use range instead on xrange on py3 in tests/test-atomictempfile.py
xrange is not available on Python 3.
Differential Revision: https://phab.mercurial-scm.org/D2323
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 18 Feb 2018 17:37:47 +0530] rev 36317
py3: add b'' prefix in test-mq-qrefresh-replace-log-message.t
# ski-blame as we just added b''
Differential Revision: https://phab.mercurial-scm.org/D2322
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 18 Feb 2018 17:36:52 +0530] rev 36316
py3: add b'' prefixes in test-mq-eol.t
# skip-blame because we are just adding b''
Differential Revision: https://phab.mercurial-scm.org/D2321
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 18 Feb 2018 17:35:44 +0530] rev 36315
py3: explicitly convert result of dict.items() into list
Differential Revision: https://phab.mercurial-scm.org/D2320
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 18 Feb 2018 17:35:13 +0530] rev 36314
py3: use pycompat.byteskwargs() to convert opts keys to bytes
Differential Revision: https://phab.mercurial-scm.org/D2319
Augie Fackler <augie@google.com> [Sun, 18 Feb 2018 00:02:33 -0500] rev 36313
wireprotoserver: py3 helpfully calls adds HTTP_ to CONTENT_LENGTH
Just handle both with a membership check, preferring the HTTP_
namespaced version. Sigh.
Differential Revision: https://phab.mercurial-scm.org/D2310
Augie Fackler <augie@google.com> [Sun, 18 Feb 2018 00:01:43 -0500] rev 36312
tests: port inline Python in test-http-branchmap.t to Python 3
Differential Revision: https://phab.mercurial-scm.org/D2309
Augie Fackler <augie@google.com> [Sat, 17 Feb 2018 22:52:24 -0500] rev 36311
hgweb_mod: partially undo 8afc25e7effc to fix py3
We now bytes-ify the entire request, so this is wrong.
Differential Revision: https://phab.mercurial-scm.org/D2308
Augie Fackler <augie@google.com> [Sat, 17 Feb 2018 22:39:38 -0500] rev 36310
tags: don't feed both int and None to min()
They're not comparable on Python 3, and we can just map None to 0.
Differential Revision: https://phab.mercurial-scm.org/D2307
Augie Fackler <augie@google.com> [Sat, 17 Feb 2018 22:39:12 -0500] rev 36309
tests: fix get-with-headers.py on python3 when writing to stdout
Differential Revision: https://phab.mercurial-scm.org/D2306
Augie Fackler <augie@google.com> [Sat, 17 Feb 2018 22:38:53 -0500] rev 36308
webcommands: use pycompat.strkwargs as needed
Differential Revision: https://phab.mercurial-scm.org/D2305
Augie Fackler <augie@google.com> [Sat, 17 Feb 2018 22:38:25 -0500] rev 36307
webcommands: unpack contents of length-1 dict portably
((k,v),) = dict.items() was suggested by some friends, but I feel like
that's maybe too clever?
Differential Revision: https://phab.mercurial-scm.org/D2304
Augie Fackler <augie@google.com> [Sat, 17 Feb 2018 22:37:35 -0500] rev 36306
bundle2: use pycompat.strkwargs as needed
Differential Revision: https://phab.mercurial-scm.org/D2303
Augie Fackler <augie@google.com> [Sat, 17 Feb 2018 21:47:49 -0500] rev 36305
tests: add b prefixes to test-rebase-dest.t
# skip-blame just b prefixes
Differential Revision: https://phab.mercurial-scm.org/D2302
Augie Fackler <augie@google.com> [Sat, 17 Feb 2018 21:47:26 -0500] rev 36304
rebase: sort roots by revision
Previously we were sorting them by whatever implicit sort order we got
between changectx instances. Sorting by rev at least makes some sense,
so I chose that.
Differential Revision: https://phab.mercurial-scm.org/D2301
Augie Fackler <augie@google.com> [Sat, 17 Feb 2018 21:25:14 -0500] rev 36303
httppeer: use %d to format int
Differential Revision: https://phab.mercurial-scm.org/D2300
Yuya Nishihara <yuya@tcha.org> [Sat, 17 Feb 2018 17:24:29 +0900] rev 36302
extensions: reject any unicode strings in tables before loading
This allows us to test hg on Python 3 without disabling third-party
extensions which could pollute cmdtable for example.
Yuya Nishihara <yuya@tcha.org> [Sat, 17 Feb 2018 18:20:15 +0900] rev 36301
py3: make test-extdiff.t pass on Python 3
Yuya Nishihara <yuya@tcha.org> [Sat, 17 Feb 2018 18:15:37 +0900] rev 36300
py3: make regexp patterns bytes in extdiff
Yuya Nishihara <yuya@tcha.org> [Sat, 17 Feb 2018 18:14:51 +0900] rev 36299
py3: fix bytes-unicode dance while building docstring of extdiff
Yuya Nishihara <yuya@tcha.org> [Sat, 17 Feb 2018 18:09:56 +0900] rev 36298
py3: factor out byterepr() which returns an asciified value on py3
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 15 Feb 2018 17:14:45 +0530] rev 36297
remotenames: don't use the default value of logfmt for namespaces
logfmt is the format which is used to format the log output for that namespace.
This patch passes "remote {bookmark|branch}: %s" as the logfmt. Space is not
added after bookmark and branch to make output consistent with other details.
Still this is not the best output. We may need to wrap getlogcolumns() to change
spacing in the in built columns to match the remotenames one.
lognames are also deleted as they are superseded by logfmt.
Differential Revision: https://phab.mercurial-scm.org/D2277
Augie Fackler <augie@google.com> [Sat, 17 Feb 2018 01:41:08 -0500] rev 36296
py3: whitelist test-pull-http.t
There's a lot of work left to do on network-related stuff, but I at
least got one more test passing.
Differential Revision: https://phab.mercurial-scm.org/D2296
Augie Fackler <augie@google.com> [Sat, 17 Feb 2018 00:29:23 -0500] rev 36295
scmutil: bytes-ify IOErrors before wrapping them in abort message
Differential Revision: https://phab.mercurial-scm.org/D2292
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 17 Feb 2018 13:55:12 -0700] rev 36294
py3: port f to Python 3
This involved a lot of b'' literals, conversion from %s to %d, and
using a hashing mechanism that returns bytes instead of str.
Differential Revision: https://phab.mercurial-scm.org/D2299
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 11 Feb 2018 17:17:56 +0530] rev 36293
py3: replace file() with open() in test-convert-git.t
file() is not present in Python 3.
It also makes sure we write bytes on Python 3.
Differential Revision: https://phab.mercurial-scm.org/D2133
Sushil khanchi <sushilkhanchi97@gmail.com> [Thu, 15 Feb 2018 12:45:46 +0530] rev 36292
bundle: updates the help text for hg bundle (issue5744)
Differential Revision: https://phab.mercurial-scm.org/D2278
Augie Fackler <augie@google.com> [Sat, 17 Feb 2018 01:11:48 -0500] rev 36291
py3: get bytes-repr of network errors portably
This resolves a lot of weird issues in Python 3 around error strings.
Differential Revision: https://phab.mercurial-scm.org/D2295
Augie Fackler <augie@google.com> [Sat, 17 Feb 2018 01:09:56 -0500] rev 36290
hgweb: open server logs in binary mode
This is consistent with when we're logging to stdout, so we don't have
to do something annoyingly complicated in the logging infrastructure.
Differential Revision: https://phab.mercurial-scm.org/D2294
Augie Fackler <augie@google.com> [Sat, 17 Feb 2018 00:29:46 -0500] rev 36289
tests: add some b prefixes in test-http-bundle1.t
# skip-blame just some b prefixes
Differential Revision: https://phab.mercurial-scm.org/D2293
Augie Fackler <augie@google.com> [Sat, 17 Feb 2018 00:28:55 -0500] rev 36288
hgweb: correctly bytes-ify status, not string-ify
Differential Revision: https://phab.mercurial-scm.org/D2291
Augie Fackler <augie@google.com> [Sat, 17 Feb 2018 00:28:24 -0500] rev 36287
printenv: port to python3
Differential Revision: https://phab.mercurial-scm.org/D2290
Augie Fackler <augie@google.com> [Thu, 15 Feb 2018 09:18:20 -0500] rev 36286
py3: whitelist another eight passing tests
Differential Revision: https://phab.mercurial-scm.org/D2281
Augie Fackler <augie@google.com> [Wed, 14 Feb 2018 23:23:57 -0500] rev 36285
remotenames: port partway to python3 by using collections.MutableMapping
test-logexchange.t doesn't pass after this, but at least the
remotenames extension can be imported.
Differential Revision: https://phab.mercurial-scm.org/D2280
Martin von Zweigbergk <martinvonz@google.com> [Fri, 16 Feb 2018 11:33:56 -0800] rev 36284
tests: avoid referring to pvec in demandimport test
Nothing else currently uses pvec, so we may want to delete it (but
Augie Fackler says he may want to use it). To enable deletion, this
patch replaces it by the error module in the demandimport test (any
module works). However, since the error module had already been loaded
at this point in the test (via the util module), I moved it earlier in
the test so it's still not loaded (although I'm not sure if that's
even relevant to the test).
Differential Revision: https://phab.mercurial-scm.org/D2287
Yuya Nishihara <yuya@tcha.org> [Mon, 08 Jan 2018 12:09:43 +0900] rev 36283
help: use cmdutil.parsealiases() to resolve command name
This seems slightly better than parsing '^command|name' string by using an
ad-hoc pattern.
Yuya Nishihara <yuya@tcha.org> [Sun, 27 Dec 2015 14:13:27 +0900] rev 36282
help: list deprecated and experimental extensions if --verbose
This is common in the other help topics.
Yuya Nishihara <yuya@tcha.org> [Sun, 27 Dec 2015 13:08:51 +0900] rev 36281
hgweb: translate Abort in help command to 404 error
c3784e3c3e8d changed the exception type to be raised if unknowncmd=False.
Yuya Nishihara <yuya@tcha.org> [Mon, 08 Jan 2018 11:11:06 +0900] rev 36280
templatekw: add {reporoot} keyword
The "%b" in filename format string will be replaced with "{reporoot|basename}".
Yuya Nishihara <yuya@tcha.org> [Sun, 07 Jan 2018 12:09:33 +0900] rev 36279
templatefilters: add dirname() filter
This is different from stripdir() in that the last component is always
removed.
Yuya Nishihara <yuya@tcha.org> [Sun, 07 Jan 2018 11:21:25 +0900] rev 36278
templater: add function to help substituting patterns in template string
This will be used to rewrite a filename pattern to a template string.
Yuya Nishihara <yuya@tcha.org> [Sun, 07 Jan 2018 11:04:53 +0900] rev 36277
templater: extract function scanning template string
This provides a tokenizer-level view of template fragments, and will be
used to substitute patterns in outermost 'string' tokens.
Yuya Nishihara <yuya@tcha.org> [Sun, 07 Jan 2018 11:26:16 +0900] rev 36276
cmdutil: narrow scope of KeyError in makefilename()
It seemed too broad to catch a standard Python exception.
Augie Fackler <augie@google.com> [Wed, 14 Feb 2018 21:34:12 -0500] rev 36275
node: make bin() be a wrapper instead of just an alias
This includes a full backout of 59affe7e and 30d0cb27. Per the review
of the former, we'd rather adapt the API to behave like it used to (at
least for now), and take a second run at it if it shows up in our
performance numbers. I ran perfrevlogindex with and without this
change and it didn't make a measurable difference, so maybe it's fine
(despite my intuition to the contrary).
Differential Revision: https://phab.mercurial-scm.org/D2279
Martin von Zweigbergk <martinvonz@google.com> [Fri, 16 Feb 2018 11:30:18 -0800] rev 36274
tests: actually check that HGDEMANDIMPORT=disable disables demandimport
At the point in the test where we were checking that the 'node' got
eagerly loaded, it had already been loaded (via the pvec module), so
our check wasn't doing anything (i.e. the test would pass even if you
removed the line that set HGDEMANDIMPORT=disable). Let's move this
test earlier so it tests what it was meant to test.
Differential Revision: https://phab.mercurial-scm.org/D2286
Kyle Lippincott <spectral@google.com> [Thu, 04 Jan 2018 16:29:07 -0800] rev 36273
debugcommands: print out the editor that was searched for (post shlexsplit)
A user was in #mercurial and had the following settings in their hgrc:
[ui]
editor = C:\home\npp\notepad++.exe -multiInst -nosession
After shlexsplit, the first argument was mangled into C:homenppnotepad++.exe,
which was quite unlikely to exist. It took many back-and-forths to identify
that adding " characters around the exe would fix the issue; we were thinking
that it's because something was incorrectly *not* splitting and adding/moving
the " characters fixed the split boundaries, but when testing afterward it
appears that it's just mangled.
I considered adding an informational if pycompat.iswindows and \ in the string
about this issue, but was worried that might have too many false positives and
did not do so at this time.
Differential Revision: https://phab.mercurial-scm.org/D1808
Augie Fackler <augie@google.com> [Fri, 16 Feb 2018 17:24:31 -0500] rev 36272
merge with stable
Anton Shestakov <av6@dwimlabs.net> [Thu, 15 Feb 2018 21:14:57 +0800] rev 36271
hgweb: show dates recorded in obsolescence markers
Dates of operations that obsolete commits are also important enough to be
shown, but maybe not as important as original commit dates, that and also for
brevity is why they are wrapped in a <span> with only "age" class. Provided
that JS is enabled, such elements only show age (e.g. "3 months ago"), and the
exact date is visible in a tooltip. Commits dates, on the other hand, show both
date and age (the latter in parenthesis).
Example result for f1a0933ce59e from hg-committed:
obsolete: pruned by Yuya Nishihara <yuya@tcha.org> 13 days ago
Anton Shestakov <av6@dwimlabs.net> [Thu, 15 Feb 2018 21:05:31 +0800] rev 36270
gitweb: make span.age CSS selector more specific
This set of CSS properties is only used on /changelog page to make age elements
float to the left and be fixed in size, but span.a is too broad of a selector,
because we don't want to apply these properties to all <span> elements that
have age class.
Augie Fackler <augie@google.com> [Thu, 15 Feb 2018 17:30:43 -0500] rev 36269
wireprotoserver: return to using iscmd() method
This was teased out in part so remotefilelog could disable an old
protocol method over http. It got dropped accidentally in the recent
refactor, but the code was all still present so it's easy to support
for now.
I think once we land remotefilelog, we should probably inline this
function.
Differential Revision: https://phab.mercurial-scm.org/D2285
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 11 Feb 2018 17:23:58 -0800] rev 36268
githelp: cast commands to bytes
This is more compatible with Python 3.
Differential Revision: https://phab.mercurial-scm.org/D2165
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 14 Feb 2018 17:43:33 +0530] rev 36267
py3: use util.forcebytestr instead of str for converting errors to bytes
Differential Revision: https://phab.mercurial-scm.org/D2269
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 14 Feb 2018 16:37:46 +0530] rev 36266
py3: use pycompat.bytestr to convert str to bytes
Differential Revision: https://phab.mercurial-scm.org/D2261
Augie Fackler <augie@google.com> [Mon, 12 Feb 2018 10:41:00 -0500] rev 36265
mpatch: allow clang-format oversight
Differential Revision: https://phab.mercurial-scm.org/D2183
Augie Fackler <augie@google.com> [Mon, 12 Feb 2018 10:39:46 -0500] rev 36264
base85: allow clang-format oversight
Differential Revision: https://phab.mercurial-scm.org/D2182
Augie Fackler <augie@google.com> [Mon, 12 Feb 2018 10:38:11 -0500] rev 36263
charencode: allow clang-format oversight
Nice and easy.
Differential Revision: https://phab.mercurial-scm.org/D2181
Augie Fackler <augie@google.com> [Wed, 14 Feb 2018 21:12:48 -0500] rev 36262
formatting: enforce system headers before local headers
Differential Revision: https://phab.mercurial-scm.org/D2275
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 12 Feb 2018 17:20:20 -0800] rev 36261
wireprotoserver: add version to HTTP protocol name (API)
This matches what we did for the SSH protocol handler in
ac33dc94e1d5.
.. api::
HTTP protocol handlers now advertises its internal name as
``http-v1`` instead of ``http``.
Differential Revision: https://phab.mercurial-scm.org/D2219
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 12 Feb 2018 17:19:51 -0800] rev 36260
wireprotoserver: rename webproto to httpv1protocolhandler
This matches our naming convention for the SSH server's protocol
handler.
Differential Revision: https://phab.mercurial-scm.org/D2218
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 12 Feb 2018 17:16:52 -0800] rev 36259
wireproto: improve docstring for "hello"
Differential Revision: https://phab.mercurial-scm.org/D2217
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 12 Feb 2018 17:14:29 -0800] rev 36258
httppeer: remove httpspeer
All it did was verify at construction time that Mercurial supports
TLS. instance() is what's used to construct peer instances. So
we can just inline this check into that function and do away with
the type variant.
Differential Revision: https://phab.mercurial-scm.org/D2216
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 12 Feb 2018 17:10:58 -0800] rev 36257
httppeer: remove redundant code to fetch capabilities
_fetchcaps() is called by httppeer.instance(), which is the only
instantiator of httppeer. Since _fetchcaps() always sets self._caps
and since 197d10e157ce removed the fallback for cases where the
remote doesn't support capabilities, we can remove some dead
code from httppeer.capabilities().
Differential Revision: https://phab.mercurial-scm.org/D2215
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 01 Feb 2018 19:32:42 -0800] rev 36256
httppeer: change logic around argument handling
The code to process arguments only makes sense if there are
arguments. So change an "else" to "elif args", remove an
"if" that isn't necessary, and add some docs for good measure.
Differential Revision: https://phab.mercurial-scm.org/D2214
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 12 Feb 2018 16:35:06 -0800] rev 36255
tests: test using both versions of SSH protocol
Now that the version 2 of the SSH protocol is usable in core, we
can start actively testing it more widely outside of low-level
protocol tests.
We add #testcases variants to a handful of tests so we exercise both
version 1 and version 2 of the SSH protocol when testing. This will
allow us to more easily find regressions and variances as protocol 2
is developed. It will also make it easier to continue testing with
protocol version 1 once version 2 is enabled by default.
There are a handful of tests using ssh:// that should also gain test
variances. One - test-push-race.t - already has a #testcases. This
would require combinatorial cases. I didn't want to go down that
rabbit hole, so that test is unchanged. Thinking aloud, there is
probably an opportunity to automatically run tests with multiple
server/protocol implementations. Ideally any test that performed
server interaction would run with all supported server implementations
and protocols so we could find variances between servers and protocols.
But this has been a long-standing issue with our test harness. I
don't think it is an easily solved problem. But it would be nice...
Differential Revision: https://phab.mercurial-scm.org/D2206
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 08 Feb 2018 11:39:23 -0800] rev 36254
sshpeer: log remote capabilities after protocol upgrade
This helps reduce variance with version 1 and will help prevent
test output divergence as we start testing protocol version 2 more
widely.
Differential Revision: https://phab.mercurial-scm.org/D2205
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 12 Feb 2018 16:33:54 -0800] rev 36253
wireprotoserver: handle SSH protocol version 2 upgrade requests
This commit teaches the SSH server to recognize the "upgrade"
request line that clients send when they wish to switch the
channel to version 2 of the SSH protocol.
Servers don't honor upgrade requests unless an experimental config
option is set.
Since the built-in server now supports upgrade requests, our test
server to test the handshake has been deleted. Existing tests
use the built-in server and their output doesn't change.
The upgrade is handled in our state machine. The end result is a bit
wonky, as the server transitions back to version 1 state immediately
after upgrading. But this will change as soon as version 2 has an
actual protocol that differs from version 1.
Tests demonstrating that the new server is a bit more strict about
the upgrade handshake have been added.
Differential Revision: https://phab.mercurial-scm.org/D2204
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 08 Feb 2018 15:09:59 -0800] rev 36252
wireprotoserver: move SSH server operation to a standalone function
The server-side processing logic will soon get a bit more complicated
in order to handle protocol switches. We will use a state machine
to help make the transitions clearer.
To prepare for this, we move SSH server operation into a standalone
function. We structure it as a very simple state machine. It only
has two states for now, with one state containing the bulk of the
logic. But things will evolve shortly.
Differential Revision: https://phab.mercurial-scm.org/D2203
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 14 Feb 2018 17:35:13 -0700] rev 36251
py3: stringify integer with %d instead of bytes()
The unbundle wire protocol command now returns a properly formatted
reply in Python 3.
Differential Revision: https://phab.mercurial-scm.org/D2274
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 14 Feb 2018 17:23:26 -0700] rev 36250
py3: add b'' to test-sshserver.py
# skip-blame because adding b'' prefixes
Differential Revision: https://phab.mercurial-scm.org/D2273
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 14 Feb 2018 17:21:42 -0700] rev 36249
py3: add b'' to config options in test extension
# skip-blame because just b'' prefixes
Differential Revision: https://phab.mercurial-scm.org/D2272
Martin von Zweigbergk <martinvonz@google.com> [Tue, 13 Feb 2018 14:15:29 -0800] rev 36248
manifest: add support for including directories outside narrowspec
When using tree manifests and the client doesn't have a directory, we
have two choices for what to do with "hg manifest" output: 1) ignore
the directory, and 2) include the directory (not files within it). For
"hg files", we decided to ignore the directories (and files) outside
the narrowspec.
If we choose to not include directories outside the narrowspec, then I
think we should also make sure we don't include files outside the
narrowspec. I also think we should add --outside-narrow flag (or other
name). Thus, whichever way we go, I think we should have a way of
displaying paths (files or directories) outside the narrowspec. For
that we'll need to handle the 't' flag that narrowhg uses, and that's
what this patch adds support for.
Differential Revision: https://phab.mercurial-scm.org/D2235
Martin von Zweigbergk <martinvonz@google.com> [Tue, 13 Feb 2018 13:50:24 -0800] rev 36247
narrow: restrict manifest iteration by using manifest.walk(matcher)
This is only for root nodes, so it shouldn't really matter (they're
rarely huge), but seems cleaner.
Differential Revision: https://phab.mercurial-scm.org/D2234
Martin von Zweigbergk <martinvonz@google.com> [Tue, 13 Feb 2018 13:16:06 -0800] rev 36246
narrow: only diff manifest part within narrowspec when generating changegroup
Since 959ebff3505a (manifest: add match argument to diff and
filesnotin, 2017-03-07), we have a more efficient way of diffing
manifests while applying a matcher. Let's use that while generating
narrowed changegroups, so we avoid diffing parts of the manifest that
don't match the narrowspec.
Differential Revision: https://phab.mercurial-scm.org/D2233
Yuya Nishihara <yuya@tcha.org> [Sat, 06 Jan 2018 17:44:57 +0900] rev 36245
cmdutil: build "%m" (desc|firstline) in makefilename()
Yuya Nishihara <yuya@tcha.org> [Thu, 02 Apr 2015 23:37:07 +0900] rev 36244
cmdutil: rewrite makefilename() to use ctx methods
Yuya Nishihara <yuya@tcha.org> [Thu, 02 Apr 2015 23:28:16 +0900] rev 36243
cmdutil: pass ctx to makefileobj() in place of repo/node pair (API)
Yuya Nishihara <yuya@tcha.org> [Thu, 02 Apr 2015 23:32:28 +0900] rev 36242
cmdutil: pass ctx to makefilename() in place of repo/node pair (API)
Yuya Nishihara <yuya@tcha.org> [Thu, 02 Apr 2015 23:22:02 +0900] rev 36241
cmdutil: make node parameter of makefileobj() mandatory (API)
(repo, node) pair will be replaced with ctx, so makefilename() can be easily
ported to templater.
Yuya Nishihara <yuya@tcha.org> [Wed, 14 Feb 2018 21:36:15 +0900] rev 36240
progress: use '%*d' to pad progress value
Follows up 7f5108e58083. The problem of '% Nd' is that ' ' means we want
{' ' or '-'} as a sign character. We should instead write '%Nd' to pad up
to N characters with space, and N can be '*'.
Yuya Nishihara <yuya@tcha.org> [Wed, 14 Feb 2018 21:29:27 +0900] rev 36239
py3: stringify IOError/OSError without loosing local character
Follows up fa4d333cac58. An environment error may contain non-ascii characters
on Windows, which should be encoded to a platform-native string.
Yuya Nishihara <yuya@tcha.org> [Fri, 26 Jan 2018 19:48:39 +0900] rev 36238
dirstate: drop explicit files that shouldn't match (BC) (issue4679)
Before, wctx.walk() could include files excluded by -X pattern, which
disagrees with wctx.matches() and ctx.walk()/matches() behavior. This patch
fixes the problem by testing stat results against the matcher if the matcher
may contain false paths.
I have no idea if the fix should be made before the workaround for case-
insensitive filesystems, but that shouldn't matter since match.anypats()
means 'not match.isexact()'.
This patch also makes narrow and sparse extensions to not exclude explicit
paths on walk() because they appear to depend on the buggy behavior.
More detailed analysis about this issue by Martin von Zweigbergk:
"I think it's just an unintended consequence of how the dirstate walk works,
but I'm not sure. The exception for explicit files also bothered me when I
was working on the matcher code a year or so ago. I actually added the
exception to the matcher code because I thought it was always working like
that (not just for dirstate) in a83a7d27911e (match: handle excludes using
new differencematcher, 2017-05-16). It was only recently that Yuya realized
that it used to be inconsistent and that I probably made it consistently bad
because I didn't realize it was inconsistent to start with, see 821d8a5ab4ff
(match: do not weirdly include explicit files excluded by -X option,
2018-01-16)."
.. bc::
Working-directory commands now respect ``-X PATTERN`` no matter if PATTERN
matches explicitly-specified FILEs. For example, ``hg add foo -X foo`` no
longer add the file ``foo``.
Yuya Nishihara <yuya@tcha.org> [Sun, 21 Jan 2018 17:04:42 +0900] rev 36237
log: add TODO comments about --line-range processing
Yuya Nishihara <yuya@tcha.org> [Sun, 21 Jan 2018 16:15:20 +0900] rev 36236
log: factor out function to feed revisions to displayer
Yuya Nishihara <yuya@tcha.org> [Sun, 21 Jan 2018 16:04:59 +0900] rev 36235
graphlog: unblock --line-range option
It should work now.
Yuya Nishihara <yuya@tcha.org> [Sun, 21 Jan 2018 16:03:14 +0900] rev 36234
graphlog: deduplicate preprocessing of log command
Anton Shestakov <av6@dwimlabs.net> [Wed, 14 Feb 2018 20:32:32 +0800] rev 36233
hgweb: show users recorded in obsolescence markers
It's useful to see who obsoleted a commit, because it's not always done by its
author (hg-committed is a good example, because people rebase stacks of commits
made by various people).
Usernames are obfuscated, but look correct (e.g. "test" is
"test").
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 14 Feb 2018 14:12:05 +0100] rev 36232
revert: use an exact matcher in interactive diff selection (issue5789)
When going through _performrevert() in the interactive case, we build a
matcher with files to revert and pass it patch.diff() for later
selection of diff hunks to revert. The files set used to build the
matcher comes from dirstate and accounts for patterns explicitly passed
to revert ('hg revert -i <file>') and, in case of nonexistent pattern,
this set is empty (which is expected). Unfortunately, the matcher built
from scmutil.match(ctx, []) is wrong as it leads patch.diff() to rebuild
a 'changes' tuple with dirstate information, ignoring user-specified
pattern. This leads to the situation described in issue5789, where
one gets prompted about reverting files unrelated to specified patterns
because they made a typo or so.
We fix this by building an exact matcher with the correct set of file
paths (built earlier). Thanks to Yuya Nishihara for suggesting the
correct fix.
Denis Laxalde <denis@laxalde.org> [Sun, 11 Feb 2018 20:37:44 +0100] rev 36231
tests: add a test demonstrate that 'revert -i' ignores nonexistent patterns
As described in issue5789, when revert is called through:
hg revert -i <some file that does not exist>
we'd expect the command to abort early. Currently, it just warns about
missing file but prompt about files unrelated to user arguments.
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 14 Feb 2018 17:44:54 +0530] rev 36230
py3: slice over bytes to prevent getting ascii values
Differential Revision: https://phab.mercurial-scm.org/D2271
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 14 Feb 2018 17:44:19 +0530] rev 36229
py3: converts bytes to pycompat.bytestr to get bytechrs while enumerating
Differential Revision: https://phab.mercurial-scm.org/D2270
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 14 Feb 2018 17:42:14 +0530] rev 36228
py3: use pycompat.{bytes|str}kwargs in transplant.py
Differential Revision: https://phab.mercurial-scm.org/D2268
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 14 Feb 2018 17:41:27 +0530] rev 36227
py3: replace file() with open() in transplant.py
Differential Revision: https://phab.mercurial-scm.org/D2267
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 14 Feb 2018 17:40:51 +0530] rev 36226
py3: use "%d" for converting int to bytes in transplant.py
Differential Revision: https://phab.mercurial-scm.org/D2266
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 14 Feb 2018 17:39:56 +0530] rev 36225
py3: open files in bytes mode in transplant.py
Differential Revision: https://phab.mercurial-scm.org/D2265
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 14 Feb 2018 17:06:20 +0530] rev 36224
py3: use pycompat.bytestr instead of str
Differential Revision: https://phab.mercurial-scm.org/D2264
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 14 Feb 2018 17:05:33 +0530] rev 36223
py3: use "%d" to convert integers to bytes
Differential Revision: https://phab.mercurial-scm.org/D2263
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 14 Feb 2018 16:38:15 +0530] rev 36222
py3: add couple of missing b'' in fakemergerecord.py
# skip-blame as we are just adding b'' prefixes
Differential Revision: https://phab.mercurial-scm.org/D2262
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 14 Feb 2018 16:06:54 +0530] rev 36221
py3: add b'' to make sure regex pattern are bytes in hgweb/webutil.py
# skip-blame because we are just adding b'' prefixes
Differential Revision: https://phab.mercurial-scm.org/D2260
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 14 Feb 2018 15:58:11 +0530] rev 36220
py3: add b'' prefixes in test-worker.t
# skip-blame because we are just adding b''
Differential Revision: https://phab.mercurial-scm.org/D2258
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 14 Feb 2018 15:46:57 +0530] rev 36219
py3: add b'' prefixes to make printrevset.py work in test-glog.t
# skip-blame because we are just adding b'' prefixes
Differential Revision: https://phab.mercurial-scm.org/D2257
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 14 Feb 2018 15:43:03 +0530] rev 36218
py3: slice over bytes to prevent getting ascii values
Differential Revision: https://phab.mercurial-scm.org/D2256
Augie Fackler <augie@google.com> [Wed, 14 Feb 2018 00:18:35 -0500] rev 36217
python3: whitelist another 5 passing tests
Differential Revision: https://phab.mercurial-scm.org/D2252
Augie Fackler <augie@google.com> [Tue, 13 Feb 2018 23:00:01 -0700] rev 36216
py3: introduce and use pycompat.getargspec
This is getfullargspec on py3, which means we can't use namedtuple
named accessors for all fields (eg keywords from getargspec is varkw
from getfullargspec, with the same meaning). Solves some warning
issues on Python 3.
I didn't clean up httpclient because that's vendored code I think we
should probably discard, and I didn't touch the manpage generator for
now either.
Differential Revision: https://phab.mercurial-scm.org/D2251
Augie Fackler <augie@google.com> [Tue, 13 Feb 2018 23:37:58 -0500] rev 36215
merge: coerce nodes to bytes, not str
Differential Revision: https://phab.mercurial-scm.org/D2250
Augie Fackler <augie@google.com> [Tue, 13 Feb 2018 19:12:44 -0500] rev 36214
py3: whitelist more passing tests
I had some good success tonight with histedit
tests. test-histedit-fold.t is now low-hanging fruit: it is only
failing because the logic for setting environment variables in hook.py
is slightly busted. Specifically, hook.py line 142 should be making
sure it puts strings in the env dict, not bytes, to avoid b'' goo in
environment variables.
Differential Revision: https://phab.mercurial-scm.org/D2249
Augie Fackler <augie@google.com> [Tue, 13 Feb 2018 18:46:47 -0500] rev 36213
histedit: binascii.unhexlify (aka node.bin) throws new exception type on py3
Lucky for us, the exception type exists on 2.7, so we can include it
in the except block without any extra work.
Differential Revision: https://phab.mercurial-scm.org/D2244
Martin von Zweigbergk <martinvonz@google.com> [Tue, 13 Feb 2018 13:23:18 -0800] rev 36212
treemanifest: add an optimized __nonzero__()
We use bool(manifest) in at least some places:
localrepo.py:1730
hgweb/webcommands.py:524
Since the treemanifest class doesn't define __nonzero__() (before this
patch), bool(manifest) will instead call __len__(), which can be slow
for treemanifests. This patch may make a noticeable difference in the
localrepo case above, but that only happens when committing a merge
and I haven't timed it.
Note that Durham already added a __nonzero__ implementation to
manifestdict in b19291e5d506 (manifest: add __nonzero__ method,
2016-11-03).
Differential Revision: https://phab.mercurial-scm.org/D2232
Augie Fackler <augie@google.com> [Tue, 13 Feb 2018 18:49:06 -0500] rev 36211
tests: port fakemergerecord to python3
Differential Revision: https://phab.mercurial-scm.org/D2248
Augie Fackler <augie@google.com> [Tue, 13 Feb 2018 18:48:47 -0500] rev 36210
tests: add some b-prefixes on local script in test-histedit-arguments
# skip-blame its just more b prefixes and a file in binary mode
Differential Revision: https://phab.mercurial-scm.org/D2247
Augie Fackler <augie@google.com> [Tue, 13 Feb 2018 18:47:55 -0500] rev 36209
tests: add bytes prefixes to test-histedit-fold.t's local extension
# skip-blame b prefixes
Differential Revision: https://phab.mercurial-scm.org/D2246
Augie Fackler <augie@google.com> [Tue, 13 Feb 2018 18:25:05 -0500] rev 36208
histedit: fix silly bug that was unpacking a bytestr before writing it
I have this foggy notion that popbuffer() might have returned a list
in the past, but it doesn't anymore, and this was breaking on Python
3. As a bonus, it's probably a ton faster on Python 2 now.
Differential Revision: https://phab.mercurial-scm.org/D2243
Augie Fackler <augie@google.com> [Tue, 13 Feb 2018 18:13:33 -0500] rev 36207
py3: whitelist another 8 passing tests
Differential Revision: https://phab.mercurial-scm.org/D2242
Augie Fackler <augie@google.com> [Tue, 13 Feb 2018 17:25:43 -0500] rev 36206
histedit: modernize write of histedit-last-edit file
Differential Revision: https://phab.mercurial-scm.org/D2241
Augie Fackler <augie@google.com> [Tue, 13 Feb 2018 17:25:25 -0500] rev 36205
histedit: convert bool to bytestring manually
Yes, this format has 'True' and 'False' in it. I'm sorry, as it's
almost certainly my fault.
Differential Revision: https://phab.mercurial-scm.org/D2240
Augie Fackler <augie@google.com> [Tue, 13 Feb 2018 13:38:38 -0500] rev 36204
narrowcommands: more byteskwargs cleanup
Differential Revision: https://phab.mercurial-scm.org/D2239
Augie Fackler <augie@google.com> [Tue, 13 Feb 2018 13:37:43 -0500] rev 36203
narrowmerge: iterate over a copy of dict items so we can mutate the dict
Differential Revision: https://phab.mercurial-scm.org/D2238
Augie Fackler <augie@google.com> [Tue, 13 Feb 2018 18:00:59 -0500] rev 36202
contrib: ban $RANDOM using check-code
Differential Revision: https://phab.mercurial-scm.org/D2237
Augie Fackler <augie@google.com> [Tue, 13 Feb 2018 17:58:40 -0500] rev 36201
tests: remove use of bashism $RANDOM to fix test-narrow.t on non-bash shells
This test passed on our workstations, including on Macs, so we never
noticed, but it fails on both the Linux and FreeBSD buildbots. Today I
learned about a bash feature, wherein $RANDOM gives a random int every
time you read it.
check-code rule to follow.
Differential Revision: https://phab.mercurial-scm.org/D2236
Sandu Turcan <idlsoft@gmail.com> [Tue, 13 Feb 2018 14:39:02 -0500] rev 36200
narrow: fix for getting the username when running http server
Differential Revision: https://phab.mercurial-scm.org/D2231
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 12 Feb 2018 16:22:31 -0800] rev 36199
tests: remove code to support Mercurial 4.3
Now that narrow lives in core, we don't need the legacy support.
Differential Revision: https://phab.mercurial-scm.org/D2202
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 12 Feb 2018 16:21:34 -0800] rev 36198
narrowspec: move module into core
Having support for parsing the narrow specification in core is
necessary for moving many other parts of narrow to core.
We do still want to harmonize the narrow spec with the sparse
spec. And the format needs to be documented. But this shouldn't
hold up the code moving to core.
Differential Revision: https://phab.mercurial-scm.org/D2201
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 12 Feb 2018 16:15:34 -0800] rev 36197
hg: move share._getsrcrepo into core
The fact we were calling this from extensions was a sign that it
should live in core.
We were also able to remove some extra attribute aliases from the
share extension.
Differential Revision: https://phab.mercurial-scm.org/D2200
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 12 Feb 2018 15:49:15 -0800] rev 36196
tests: glob over line number
Differential Revision: https://phab.mercurial-scm.org/D2199
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 12 Feb 2018 15:39:47 -0800] rev 36195
tests: remove references to bundle2-exp config option
This option was deleted a while ago. We don't even alias it in
core.
Differential Revision: https://phab.mercurial-scm.org/D2198
Augie Fackler <augie@google.com> [Tue, 13 Feb 2018 11:12:36 -0500] rev 36194
py3: whitelist another six passing tests
Differential Revision: https://phab.mercurial-scm.org/D2230
Augie Fackler <augie@google.com> [Tue, 13 Feb 2018 10:54:58 -0500] rev 36193
narrowrepo: filter() is a generator on py3, wrap in list()
Was at the top of Python 3 exceptions.
Differential Revision: https://phab.mercurial-scm.org/D2229
Augie Fackler <augie@google.com> [Tue, 13 Feb 2018 10:39:31 -0500] rev 36192
narrowcommands: use pycompat.{bytes,str}kwargs
Differential Revision: https://phab.mercurial-scm.org/D2228
Augie Fackler <augie@google.com> [Tue, 13 Feb 2018 10:38:02 -0500] rev 36191
debugcommands: mergestate version is an int, use %d on it
Differential Revision: https://phab.mercurial-scm.org/D2227
Augie Fackler <augie@google.com> [Tue, 13 Feb 2018 10:20:57 -0500] rev 36190
progress: use %d to format ints instead of %s
Due to behavioral changes between '% Ns' and '% Nd' this has some
unfortunate extra dancing. I'm not sure of a better way to solve this
problem.
Differential Revision: https://phab.mercurial-scm.org/D2226
Augie Fackler <augie@google.com> [Tue, 13 Feb 2018 08:43:14 -0500] rev 36189
progress: determine padding width portably
Differential Revision: https://phab.mercurial-scm.org/D2225
Augie Fackler <augie@google.com> [Tue, 13 Feb 2018 08:41:42 -0500] rev 36188
branchmap: wrap builtin exception in bytes for logging
Differential Revision: https://phab.mercurial-scm.org/D2224
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 23 Dec 2017 15:11:13 +0530] rev 36187
remotenames: add three new revsets related to remotenames
This patch adds three new revsets 'remotenames', 'remotebookmarks' and
'remotebranches' which will return changesets which have remotenames,
remotebookmarks and remotebranches on them respectively.
The remotenames revset exist in hgremotenames extension and is moved from there
whereas rest of the two revsets are introduced in this patch.
hgremotenames: https://bitbucket.org/seanfarley/hgremotenames
Differential Revision: https://phab.mercurial-scm.org/D2002
Yuya Nishihara <yuya@tcha.org> [Tue, 13 Feb 2018 21:52:51 +0900] rev 36186
convert: fix line ending of mapfile and commit.desc file
Follows up 42a393ea56d2. CRLF vs LF doesn't really matter as we do strip()
or rstrip() on read, but mixing them isn't nice. So let's restore the old
behavior.
I don't know whether CVS/Root, CVS/Repository, and ~/.cvspass are written
in native line ending, so I leave them read as binary files.
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 11 Feb 2018 18:34:22 -0800] rev 36185
py3: port string formatting
`skipped` is a set of integer revs here. So cast integers to
strings using %d.
None doesn't cast to an empty string on Python 3. So use '' explicitly.
Differential Revision: https://phab.mercurial-scm.org/D2146
Augie Fackler <augie@google.com> [Thu, 25 Jan 2018 21:16:28 -0500] rev 36184
bdiff: write a native version of splitnewlines
./hg perfunidiff mercurial/manifest.py 0 --count 500 --profile before:
! wall 0.309280 comb 0.350000 user 0.290000 sys 0.060000 (best of 32)
./hg perfunidiff mercurial/manifest.py 0 --count 500 --profile after:
! wall 0.241572 comb 0.260000 user 0.240000 sys 0.020000 (best of 39)
so it's about 20% faster. I hate Python. I wish we could usefully
write this in Rust, but it doesn't look like that's realistic without
using the cpython crate, which I'd still like to avoid.
Differential Revision: https://phab.mercurial-scm.org/D1973
Boris Feld <boris.feld@octobus.net> [Mon, 12 Feb 2018 16:09:31 +0100] rev 36183
label: enforce the lack of leading or trailing white space
In practice, all commands create label are currently striping external white
space. Let us enforce this logic at a lower level before starting to rely on
it elsewhere.
Antonio Muci <a.mux@inwind.it> [Tue, 13 Feb 2018 00:05:45 +0100] rev 36182
buildrpm: bump bundled docutils version to 0.14 when building for centos{5,6}
when building rpm packages for centos 5 and 6, we bundle a mercurial-specific
version of docutils in /opt/python-hg/lib/python2.7/site-packages/docutils
Let's bump the embedded docutils version from 0.12 (released in 2014) to
0.14 (latest as of today)
Antonio Muci <a.mux@inwind.it> [Mon, 12 Feb 2018 23:59:36 +0100] rev 36181
buildrpm: bump bundled python version to 2.7.14 when building for centos{5,6}
when building rpm packages for centos 5 and 6, we bundle a mercurial-specific
version of python 2.7 in /opt/python-hg
Let's bump the embedded python version from 2.7.10 (released in 2015) to
2.7.14 (latest as of today)
Matt Harbison <matt_harbison@yahoo.com> [Sun, 11 Feb 2018 13:25:56 -0500] rev 36180
merge: invoke scmutil.fileprefetchhooks() prior to applying updates
This moves the file list calculation into core, so other extensions don't need
to duplicate it.
Matt Harbison <matt_harbison@yahoo.com> [Sun, 11 Feb 2018 00:40:27 -0500] rev 36179
revert: drop the remnant of the prefetchfiles hook
Matt Harbison <matt_harbison@yahoo.com> [Sun, 11 Feb 2018 00:51:22 -0500] rev 36178
cat: migrate to the fileprefetch callback mechanism
Matt Harbison <matt_harbison@yahoo.com> [Sun, 11 Feb 2018 00:49:43 -0500] rev 36177
archive: migrate to the fileprefetch callback mechanism
Matt Harbison <matt_harbison@yahoo.com> [Sun, 11 Feb 2018 00:30:15 -0500] rev 36176
lfs: migrate to the fileprefetch callback mechanism
Matt Harbison <matt_harbison@yahoo.com> [Sun, 11 Feb 2018 00:23:57 -0500] rev 36175
cmdutil: convert the prefetchfiles() hook to a callback mechanism (API)
Yuya suggested a list of callbacks instead of function wrapping. This means
that one extension can't block another from processing the list.
.. api::
File prefetching is now handled by registering a callback with
scmutil.fileprefetchhooks.
Matt Harbison <matt_harbison@yahoo.com> [Tue, 13 Feb 2018 00:54:36 -0500] rev 36174
test-narrow: partially stabilize on Windows
test-narrow-strip.t is still broken. I don't see any feature condititionals, so
it might be an actual problem.
Augie Fackler <augie@google.com> [Tue, 13 Feb 2018 00:06:22 -0500] rev 36173
py3: whitelist test-convert-clonebranches.t
Differential Revision: https://phab.mercurial-scm.org/D2223
Augie Fackler <augie@google.com> [Mon, 12 Feb 2018 23:51:37 -0500] rev 36172
convert: make hg sha1 regex consistently be a bytes
Differential Revision: https://phab.mercurial-scm.org/D2222
Augie Fackler <augie@google.com> [Mon, 12 Feb 2018 23:51:18 -0500] rev 36171
convcmd: pass encoding name as a sysstr
Differential Revision: https://phab.mercurial-scm.org/D2221
Augie Fackler <augie@google.com> [Mon, 12 Feb 2018 23:50:58 -0500] rev 36170
convert: open all files in binary mode
Differential Revision: https://phab.mercurial-scm.org/D2220
Augie Fackler <augie@google.com> [Mon, 12 Feb 2018 22:29:36 -0500] rev 36169
py3: whitelist another 11 passing tests
Differential Revision: https://phab.mercurial-scm.org/D2213
Augie Fackler <augie@google.com> [Mon, 12 Feb 2018 20:44:06 -0500] rev 36168
util: convert traceback-related sysstrs to sysbytes in getstackframes
With this change, test-devel-warnings.t passes except for differences
in how ProgrammingError is formatted and one mysterious traceback
inside of transaction.__del__.
Differential Revision: https://phab.mercurial-scm.org/D2212
Augie Fackler <augie@google.com> [Mon, 12 Feb 2018 20:43:33 -0500] rev 36167
util: format line number of stack trace using %d
Required on Python 3, functional on Python 2.
Differential Revision: https://phab.mercurial-scm.org/D2211
Augie Fackler <augie@google.com> [Mon, 12 Feb 2018 20:43:05 -0500] rev 36166
util: call warnings.warn() with a sysstr in nouideprecwarn
This preserves nouideprecwarn wanting a bytes, which is consistent
with the rest of hg.
Differential Revision: https://phab.mercurial-scm.org/D2210
Augie Fackler <augie@google.com> [Mon, 12 Feb 2018 20:42:28 -0500] rev 36165
ui: convert stack traces to sysbytes before logging
They're coming back as unicodes, so sysbytes seems like the best we can do.
This is like D2171 and D2172, but those fail on Python 2.7.5
(seriously!), so this is my version of the same change. I actually
wrote this before reviewing those, then discarded it, then came back
to it after finding out 2.7.5 is a silly place.
Differential Revision: https://phab.mercurial-scm.org/D2209
Augie Fackler <augie@google.com> [Mon, 12 Feb 2018 20:41:47 -0500] rev 36164
ui: use pycompat.bytestr() to get a bytes-repr of config default
We don't know what type we'll get here, so we need something that'll
behave like a repr without returning a unicode.
Differential Revision: https://phab.mercurial-scm.org/D2208
Augie Fackler <augie@google.com> [Mon, 12 Feb 2018 20:39:48 -0500] rev 36163
tests: add tons of b prefixes in test-devel-warnings.t
# skip-blame because it's just b prefixes
Differential Revision: https://phab.mercurial-scm.org/D2207
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 11 Feb 2018 19:43:43 -0800] rev 36162
py3: convert traceback representation to bytes when logging
Python's APIs should return a system string. We want to use bytes
for logging. So convert the traceback to bytes before sending
it to the logger.
Differential Revision: https://phab.mercurial-scm.org/D2176
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 11 Feb 2018 19:26:53 -0800] rev 36161
py3: convert context to bytes instead of str
This yields identical behavior on Python 2 and 3.
Differential Revision: https://phab.mercurial-scm.org/D2174
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 11 Feb 2018 19:24:27 -0800] rev 36160
py3: add missing b'' literal to sshprotoext.py
Everywhere else in this file uses b''. I must have missed a line
when I wrote this code a few days ago.
# skip-blame b prefix
Differential Revision: https://phab.mercurial-scm.org/D2173
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 11 Feb 2018 19:11:17 -0800] rev 36159
py3: make dummyssh compatible with Python 3
Required encoding a str to bytes and writing bytes to a file
descriptor.
Differential Revision: https://phab.mercurial-scm.org/D2170
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 11 Feb 2018 18:58:45 -0800] rev 36158
mail: import email.utils not email.Utils
email.Utils was renamed to email.utils in Python 2.5. But it appears
at some point before Python 2.7 (possibly 2.5) email.Utils was aliased
to the new home. So email.utils should be safe for all versions of
Python we support.
Differential Revision: https://phab.mercurial-scm.org/D2168
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 11 Feb 2018 18:50:24 -0800] rev 36157
py3: cast character set to bytes
The returned value from this function is eventually fed into
email.charset.Charset.__init__. However, the standard library
appears to handle both string types in Python 2 and 3. So there
shouldn't be any problem returning a bytes here.
Differential Revision: https://phab.mercurial-scm.org/D2167
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 11 Feb 2018 18:47:19 -0800] rev 36156
py3: cast decode() argument to system string
The actual types here may be mixed due to string literals
and variables from other modules. So a cast is necessary.
Differential Revision: https://phab.mercurial-scm.org/D2166
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 11 Feb 2018 16:56:29 -0800] rev 36155
py3: avoid changing dictionary during iteration
dict.items() and friends are iterators/views in Python 3. You
aren't allowed to mutate the underlying dictionary when iterating
on these views. So iterate over a copy of things.
Differential Revision: https://phab.mercurial-scm.org/D2164
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 11 Feb 2018 16:54:56 -0800] rev 36154
py3: use raw string for key in **kwargs
Otherwise Python 3 is unhappy. We only set a single key here.
So I don't think pycompat.strkwargs() is necessary.
Differential Revision: https://phab.mercurial-scm.org/D2163
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 11 Feb 2018 16:50:45 -0800] rev 36153
py3: preserve chunks as an iterable of bytes
patch.diffstat() returns a bytes. util.chunkbuffer() expects an
iterable of bytes. Feeding it a single bytes instance on Python 3
will iterate the characters as integers. This blows up
util.chunkbuffer.
Differential Revision: https://phab.mercurial-scm.org/D2162
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 11 Feb 2018 16:40:02 -0800] rev 36152
py3: use b'' for changegroup version literals
Test extensions aren't currently loaded with our custom module
importer.
# skip-blame b prefix
Differential Revision: https://phab.mercurial-scm.org/D2161
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 11 Feb 2018 16:30:44 -0800] rev 36151
py3: use b'' in inline extension
# skip-blame b prefix
Differential Revision: https://phab.mercurial-scm.org/D2160
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 11 Feb 2018 16:29:35 -0800] rev 36150
py3: use hex(hasher.digest())
.hexdigest() returns a system str. .digest() consistently returns
bytes.
Differential Revision: https://phab.mercurial-scm.org/D2159
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 11 Feb 2018 16:21:30 -0800] rev 36149
py3: use string for "close" value in commit extras
The extras dict on commits has string keys and values. Before this
commit, we passed "close" as an integer, which Python 2 gladly
coerced to a string during a %s formatting in the bowels of
changelog.py.
Differential Revision: https://phab.mercurial-scm.org/D2157
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 11 Feb 2018 16:16:43 -0800] rev 36148
py3: catch TypeError during template operations
Two places in this code Python 3 changed from raising ValueError
to TypeError. So catch the addition exceptions.
IMO this code might be better off performing type sniffing. But
I'm not sure the implications of changing that.
Differential Revision: https://phab.mercurial-scm.org/D2156
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 11 Feb 2018 16:08:11 -0800] rev 36147
py3: use bytes literals for test extension
These extensions don't get run through our custom module importer.
It's easy enough to make them dual compatible with Python 2 and 3.
# skip-blame b prefixes
Differential Revision: https://phab.mercurial-scm.org/D2155
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 11 Feb 2018 16:02:32 -0800] rev 36146
py3: use system strings when calling __import__
We must pass the native str type when importing.
Differential Revision: https://phab.mercurial-scm.org/D2154
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 11 Feb 2018 15:58:31 -0800] rev 36145
py3: open patches.queue in binary mode
And switch to using the context manager form of open() while we're
here.
Differential Revision: https://phab.mercurial-scm.org/D2153
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 11 Feb 2018 15:55:47 -0800] rev 36144
py3: compare against bytes instead of str
Differential Revision: https://phab.mercurial-scm.org/D2152
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 11 Feb 2018 19:39:15 -0800] rev 36143
py3: use b'' in mockblackbox.py
This unmasks a ton of other TypeError in blackbox code.
# skip-blame since it's just a b prefix
Differential Revision: https://phab.mercurial-scm.org/D2175
Augie Fackler <augie@google.com> [Mon, 12 Feb 2018 15:08:15 -0500] rev 36142
narrow: add a TODO document
These are things that are bigger than we want to handle right now, but
are pretty important to get narrowing to be non-experimental.
Differential Revision: https://phab.mercurial-scm.org/D2196
Augie Fackler <augie@google.com> [Mon, 12 Feb 2018 15:00:18 -0500] rev 36141
tests: use `hello` not `capabilities` over ssh
Differential Revision: https://phab.mercurial-scm.org/D2195
Augie Fackler <augie@google.com> [Mon, 12 Feb 2018 14:58:32 -0500] rev 36140
narrowwirepeer: add TODO about how we add wireproto args to unbundle :(
Differential Revision: https://phab.mercurial-scm.org/D2194
Augie Fackler <augie@google.com> [Mon, 12 Feb 2018 14:49:38 -0500] rev 36139
narrowwirepeer: rename expandnarrow capability to exp-expandnarrow
The expandnarrow functionality lets a client have a shorthand (for
Google it's a reference to a checked-in file) for a set of includes
and excludes. For testing we should probably implement a simple
version of that functionality here. For now, rename the capability so
we don't burn the good name in the future if we need to change
behavior.
It's plausible that this functionality should be dropped from the
narrowhg we ship long-term, but I'm dubious as it seems pretty likely
other organizations will want similar shorthands for commonly-used
subsets of their trees.
Differential Revision: https://phab.mercurial-scm.org/D2193
Augie Fackler <augie@google.com> [Mon, 12 Feb 2018 14:42:47 -0500] rev 36138
narrow: make restrictpatterns a little more idiomatic
I'm not sure why invalid_includes was an out-param, but it doesn't
look like there's any reason for it to be now.
Differential Revision: https://phab.mercurial-scm.org/D2192
Augie Fackler <augie@google.com> [Mon, 12 Feb 2018 14:37:10 -0500] rev 36137
narrowspec: consistently use set() to copy sets
Differential Revision: https://phab.mercurial-scm.org/D2191
Augie Fackler <augie@google.com> [Mon, 12 Feb 2018 14:27:32 -0500] rev 36136
narrowspec: document constraints when validating patterns
Differential Revision: https://phab.mercurial-scm.org/D2190
Augie Fackler <augie@google.com> [Mon, 12 Feb 2018 14:15:52 -0500] rev 36135
narrowrevlog: add a TODO around remotefilelog moving to core
We should clean this up considerably when remotefilelog lands, which
we expect to try and accomplish in the near-ish future.
Differential Revision: https://phab.mercurial-scm.org/D2189
Augie Fackler <augie@google.com> [Mon, 12 Feb 2018 14:12:28 -0500] rev 36134
narrowrevlog: add what little I can remember about rename filtering
Differential Revision: https://phab.mercurial-scm.org/D2188