Pulkit Goyal <7895pulkit@gmail.com> [Wed, 28 Feb 2018 22:14:36 +0530] rev 36485
py3: add b'' prefix in tests/test-revlog-v2.t
After this, the test works on Python 3. There is some extra return value by
open().write() I think which needs to be handled.
# skip-blame because just b'' prefix
Differential Revision: https://phab.mercurial-scm.org/D2509
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 28 Feb 2018 22:10:59 +0530] rev 36484
py3: add b'' prefixes in tests/test-revlog.t
# skip-blame because just b'' prefixes
Differential Revision: https://phab.mercurial-scm.org/D2508
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 28 Feb 2018 22:03:47 +0530] rev 36483
py3: make sure we open the file in bytes mode
This makes the test pass on Python 3.
Differential Revision: https://phab.mercurial-scm.org/D2507
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 28 Feb 2018 22:03:29 +0530] rev 36482
py3: add b'' prefixes in tests/test-revlog-ancestry.py
# skip-blame because just b'' prefixes
Differential Revision: https://phab.mercurial-scm.org/D2506
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 28 Feb 2018 21:57:22 +0530] rev 36481
py3: port the markdirver extension in tests/test-resolve.t
Differential Revision: https://phab.mercurial-scm.org/D2505
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 28 Feb 2018 21:48:30 +0530] rev 36480
py3: backout changeset
56635c506608 which wrongly added couple of b''
I am not sure what I was thinking when I added that but while fixing rebase
tests, I revisited the file and found that I did wrong. I am sorry for this.
Differential Revision: https://phab.mercurial-scm.org/D2504
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 28 Feb 2018 21:45:42 +0530] rev 36479
py3: add a missing b'' in tests/bruterebase.py
Differential Revision: https://phab.mercurial-scm.org/D2503
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 28 Feb 2018 21:45:15 +0530] rev 36478
py3: use '%d' for integers instead of b'%s'
Differential Revision: https://phab.mercurial-scm.org/D2502
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 28 Feb 2018 21:44:28 +0530] rev 36477
py3: make sure we write in mergestate in bytes mode
Differential Revision: https://phab.mercurial-scm.org/D2501
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 28 Feb 2018 21:43:35 +0530] rev 36476
py3: add b'' prefixes in tests/test-rebase-scenario-global.t
# skip-blame because just b'' prefixes
Differential Revision: https://phab.mercurial-scm.org/D2500
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 28 Feb 2018 21:42:37 +0530] rev 36475
py3: replace str() calls with their preferred bytes equivalent
Differential Revision: https://phab.mercurial-scm.org/D2499
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 28 Feb 2018 19:54:49 +0530] rev 36474
py3: convert error messages to bytes using util.forcebytestr()
Differential Revision: https://phab.mercurial-scm.org/D2497
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 28 Feb 2018 19:54:10 +0530] rev 36473
py3: slice over bytes or use startswith() to prevent getting ascii values
Differential Revision: https://phab.mercurial-scm.org/D2496
Martin von Zweigbergk <martinvonz@google.com> [Wed, 28 Feb 2018 10:38:09 -0800] rev 36472
narrow: drop safehasattr() checks for always-present repo.narrowmatch
I've added checks for repo.narrowmatch().always() in order to restore
some of the fast paths for non-narrow repos.
Differential Revision: https://phab.mercurial-scm.org/D2495
Martin von Zweigbergk <martinvonz@google.com> [Wed, 28 Feb 2018 12:56:01 -0800] rev 36471
narrow: move narrowmatch-related methods to localrepo
This patch makes it so localrepo.narrowmatch() and a few more are
always available, which will let us simplify the use sites a
bit. narrowmatch() will return an always-matcher in non-narrow repos
(just like it did when it lived in the narrow extension).
Differential Revision: https://phab.mercurial-scm.org/D2494
Martin von Zweigbergk <martinvonz@google.com> [Tue, 27 Feb 2018 23:05:39 -0800] rev 36470
narrow: remove dependency from narrowspec module to hg module
Differential Revision: https://phab.mercurial-scm.org/D2493
Martin von Zweigbergk <martinvonz@google.com> [Wed, 28 Feb 2018 10:32:00 -0800] rev 36469
narrow: reduce depedence on narrowspec.save()
I think narrowspec should be a simple, low-level module and not depend
on the hg module. This prepares for moving that dependency out of
narrowspec.
Differential Revision: https://phab.mercurial-scm.org/D2492
Martin von Zweigbergk <martinvonz@google.com> [Wed, 28 Feb 2018 12:55:05 -0800] rev 36468
narrow: always wrap repo
It's simpler to always wrap the repo. This prepares for moving
narrowrepo.narrowmatch() onto localrepo by showing that it's now safe
to always wrap the repo (and thus always define narrowmatch() etc.).
Note that since narrowmatch() returns an always-matcher (rather than
None) in non-narrow repos, this may mean a performance hit when the
narrow extension is enabled because it adds a no-op filtering step in
various places against the always-matcher. I'll restore some of that
soon.
Differential Revision: https://phab.mercurial-scm.org/D2491
Martin von Zweigbergk <martinvonz@google.com> [Wed, 28 Feb 2018 10:29:04 -0800] rev 36467
narrow: consider both local and remote matchers in narrowchangegroup
The existing code that picked one or the other seemed very
suspicious. This patch makes us intersect the local matcher with the
matcher from the remote, which seems better. It fixes one test case
and makes another one that used to crash no longer crash, but instead
silently succeed with a push that's lossy, so that remains to be
fixed.
The real reason for doing this now is that I'm going to move
narrowrepo.narrowmatch() onto localrepo and then it will always be
defined, which would otherwise break this code.
Differential Revision: https://phab.mercurial-scm.org/D2490
Martin von Zweigbergk <martinvonz@google.com> [Wed, 28 Feb 2018 10:22:54 -0800] rev 36466
narrow: move checking for narrow requirement into _narrowmatch()
We want to move narrowmatch() and others into core, so we need to get
rid of the dependence on the "narrow_opts" from the closure in
narrowrepo.wraprepo(). We can simply check if the narrow requirement
is set. I think that seems like an improvement regardless of moving
narrowmatch().
Differential Revision: https://phab.mercurial-scm.org/D2489
Martin von Zweigbergk <martinvonz@google.com> [Wed, 28 Feb 2018 10:55:21 -0800] rev 36465
narrow: move changegroup.supportedoutgoingversions() override to core
Also document why we need cg3 or higher.
Differential Revision: https://phab.mercurial-scm.org/D2488
Martin von Zweigbergk <martinvonz@google.com> [Wed, 28 Feb 2018 10:21:43 -0800] rev 36464
narrow: move requirement constant to core
My short-term goal is to move narrowrepo.narrowmatch() onto localrepo
and this is a necessary step for that.
I put the constant in changegroup.py, unlike REVLOGV2_REQUIREMENT,
which is in localrepo.py, since we'll need to access it from the
changegroup module eventually.
Differential Revision: https://phab.mercurial-scm.org/D2487
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 21 Feb 2018 14:36:42 +0530] rev 36463
remotenames: don't inherit the remotenames class from dict class
The remotenames class was moved from hgremotenames extension. The class in
hgremotenames extension used to extend dict because updating bookmark was done
through a dict-like interface or Sean (smf) wanted it to be that way.
But now, we can remove the inheritance from the dict class as updating bookmark
is not done using a dict-like interface.
Thanks to Martin von Zweigbergk for spotting this.
Differential Revision: https://phab.mercurial-scm.org/D2361
Matt Harbison <matt_harbison@yahoo.com> [Sun, 25 Feb 2018 17:22:25 -0500] rev 36462
run-tests: cache hghave results
Spawning a process on Windows is expensive. I've got a version of
test-lfs-test-server.t locally which prints the http request/responses that
totals 819 lines, with 149 conditional lines, 11 #if tests, and 2 test cases.
It takes just under 1 minute with this change to run both cases, vs just over
2 minutes without this change. Worse, when I explored adding ui.debug to the
test, it takes 13 minutes due to all of the mismatches and retests, vs less than
1 minute with this change. Overall, the difference when running all tests is
negligible- 103 minutes with this change, vs 105 without when using -j9.
It also looks like an exit value of 2 from `hghave` is treated specially, but
there's nothing preventing 2 missing features from also using this value.
Matt Harbison <matt_harbison@yahoo.com> [Mon, 26 Feb 2018 23:34:29 -0500] rev 36461
run-tests: resume raising an exception when a server fails to start
Prior to
93228b2a1fc0, this exception was raised before the diff could be
printed. By raising the exception after printing the diff, the location of the
failure can be identified, but it is also easier to locate test runs where this
occurs. The test bot maintains a list of failed tests, separate from the wall
of diff output.
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 27 Feb 2018 14:49:05 +0530] rev 36460
py3: use print as a function in tests/test-hgrc.t
print was made a function in Python 3.
Differential Revision: https://phab.mercurial-scm.org/D2480
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 27 Feb 2018 14:46:35 +0530] rev 36459
py3: use '%d' to convert integers to bytes
Differential Revision: https://phab.mercurial-scm.org/D2479
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 27 Feb 2018 14:44:37 +0530] rev 36458
py3: add b'' prefixes in tests/test-extension.t
We are now close to getting this test pass on Python 3.
# skip-blame because just b'' prefixes.
Differential Revision: https://phab.mercurial-scm.org/D2478
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 27 Feb 2018 14:42:30 +0530] rev 36457
py3: convert os.devnull to bytes using pycompat.bytestr
os.devnull returns str on Python 3.
Differential Revision: https://phab.mercurial-scm.org/D2477
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 27 Feb 2018 14:41:24 +0530] rev 36456
py3: fix more keyword arguments handling
Differential Revision: https://phab.mercurial-scm.org/D2476
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 27 Feb 2018 14:28:17 +0530] rev 36455
py3: make sure regexes are bytes
# skip-blame because we are adding just b'' prefixes
Differential Revision: https://phab.mercurial-scm.org/D2475
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 27 Feb 2018 00:43:37 +0530] rev 36454
py3: use pycompat.strurl to convert url to str
Differential Revision: https://phab.mercurial-scm.org/D2474
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 26 Feb 2018 13:34:35 -0800] rev 36453
bookmarks: write bookmarks file deterministically
Bookmarks are internally stored as an unsorted dictionary. Let's at
least write out the bookmarks file in a deterministic order so it is
easier to test, diff, etc.
Differential Revision: https://phab.mercurial-scm.org/D2469
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 26 Feb 2018 13:32:03 -0800] rev 36452
phases: write phaseroots deterministically
self.phaseroots is a list of sets of binary nodes.
Let's sort the nodes before writing so the phaseroots file is
written out deterministically.
Differential Revision: https://phab.mercurial-scm.org/D2468
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 17 Feb 2018 11:19:52 -0700] rev 36451
internals: document bundle2 format
It seems like a good idea to have thorough documentation of the bundle2
data format, including the format of each part and the capabilities.
The added documentation is far from complete. For example, we don't
fully capture the semantics of each capability and part. But a start
is better than nothing, which was pretty much where we were before.
Differential Revision: https://phab.mercurial-scm.org/D2298
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 26 Feb 2018 23:54:40 +0530] rev 36450
py3: convert bytes to str using encoding.strfromlocal
using encoding.strfromlocal because sender is provided from user config or
argument.
Differential Revision: https://phab.mercurial-scm.org/D2460
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 26 Feb 2018 23:50:30 +0530] rev 36449
py3: use encoding.strtolocal() to convert str to bytes
Differential Revision: https://phab.mercurial-scm.org/D2459
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 26 Feb 2018 16:19:53 +0530] rev 36448
py3: use email.utils module instead of email.Utils
On py2:
>>> import email
>>> import email.utils as eutil
>>> email.Utils.parseaddr is eutil.parseaddr
True
>>> email.Utils.formatdate is eutil.formatdate
True
email.Utils is not present on Python 3.
Differential Revision: https://phab.mercurial-scm.org/D2453
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 26 Feb 2018 17:25:46 +0530] rev 36447
py3: slice over bytes or use .startswith() to prevent getting ascii values
Differential Revision: https://phab.mercurial-scm.org/D2457
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 26 Feb 2018 16:23:12 +0530] rev 36446
py3: use '%d' for integers instead of '%s'
Differential Revision: https://phab.mercurial-scm.org/D2455
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Feb 2018 13:24:35 +0900] rev 36445
templatekw: add 'requires' flag to switch to exception-safe interface
The current templatekw interface, f(repo, ctx, templ, **args), is horrible
because it's quite easy to encounter TypeError, ValueError, etc. It's also
bad for Python 3 porting due to the **kwargs issue.
This patch introduces a flag to switch to new f(context, mapping) API seen
in templater functions. The requirement spec isn't verified (yet) because
context.resource() can gracefully raise a ResourceUnavailable exception,
but it's planned to be used as a filter in the help, such as "Revision
Keywords" (if 'ctx' in requires), "File Keywords" (if 'fctx' in requires),
etc.
showauthor() is ported to the new API as an example. 20 more follows.
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Feb 2018 12:50:30 +0900] rev 36444
templater: specialize ResourceUnavailable error so that it can be caught
See the next patch how it will be used.
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Feb 2018 12:47:53 +0900] rev 36443
templater: move specialized exception types to top
I'm going to add one more exception type.
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Feb 2018 14:14:33 +0900] rev 36442
templatekw: minimize resource dependency of {envvars} and {termwidth}
These keywords can be evaluated without a repo.
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Feb 2018 14:12:34 +0900] rev 36441
templatekw: simply override {graphwidth} function by mapping variable
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Feb 2018 16:40:41 +0900] rev 36440
remotenames: drop redundant templatekw names from help text
Also removed the second "List of" phrase, which is obvious from the type
"List of strings."
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Feb 2018 13:42:51 +0900] rev 36439
narrow: drop redundant templatekw/revset names from help text
":<name>:" is automatically added by the registrar.
Matt Harbison <matt_harbison@yahoo.com> [Sun, 25 Feb 2018 21:04:12 -0500] rev 36438
run-tests: don't mask errors when a server fails to start
There are sporadic instances of this on Windows. They seem to happen more
frequently after the test machine is rebooted, although the only way to hit it
on my laptop is to loop certain tests with -j9 for hours. The problem with
masking out the specific failure is that there's no way to know if it's the same
line in the test that's failing, or if it is random.
The justification for adding this masking in
52e9e63f1495 was that the failures
occur regularly, but that's not the case anymore. The port number is still
printed, in case that turns out to be useful.
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 26 Feb 2018 17:27:08 +0530] rev 36437
py3: use bytes instead of str in isinstance
Internally we use bytes everywhere, and str on Python 3 is unicodes, so we need
to make sure we are doing the right check.
Differential Revision: https://phab.mercurial-scm.org/D2458
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 26 Feb 2018 18:00:29 +0530] rev 36436
py3: convert a map expression into list comprehension
map returns a map object on Python 3 and here we wanted a list instead.
Differential Revision: https://phab.mercurial-scm.org/D2456
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 26 Feb 2018 16:22:15 +0530] rev 36435
py3: use email.generator module instead of email.Generator
On py2:
>>> import email
>>> import email.generator as emailgen
>>> email.Generator.Generator is emailgen.Generator
True
email.Generator is not present on Python 3.
Differential Revision: https://phab.mercurial-scm.org/D2454
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 26 Feb 2018 16:16:37 +0530] rev 36434
py3: use pycompat.strkwargs to convert kwargs keys to str
Differential Revision: https://phab.mercurial-scm.org/D2452
Augie Fackler <augie@google.com> [Mon, 26 Feb 2018 01:01:35 -0500] rev 36433
py3: whitelist test-push-http.t as passing
Differential Revision: https://phab.mercurial-scm.org/D2451
Augie Fackler <augie@google.com> [Mon, 26 Feb 2018 00:51:41 -0500] rev 36432
util: handle fileno() on Python 3 throwing io.UnsupportedOperation
Fortunately, the exception exists on Python 2 so we don't have to do
something weirder than this.
Differential Revision: https://phab.mercurial-scm.org/D2450
Augie Fackler <augie@google.com> [Mon, 26 Feb 2018 00:50:57 -0500] rev 36431
wireproto: use %d to encode an int, not a %s
Differential Revision: https://phab.mercurial-scm.org/D2449
Augie Fackler <augie@google.com> [Mon, 26 Feb 2018 00:50:35 -0500] rev 36430
httppeer: explicitly catch urlerr.httperror and re-raise
On Python 3 it seems urllib.error.HTTPError doesn't set the .args
field of the exception to have any contents, which then breaks our
socket.error catch. This works around that issue.
Differential Revision: https://phab.mercurial-scm.org/D2448
Augie Fackler <augie@google.com> [Mon, 26 Feb 2018 00:49:33 -0500] rev 36429
hgweb: pass exception message to builtin Exception ctor as sysstr
If we don't do this, the bytes gets repr()ed on Python 3 and we get
bogus error strings sent to clients. Ick.
Differential Revision: https://phab.mercurial-scm.org/D2447
Augie Fackler <augie@google.com> [Mon, 26 Feb 2018 00:28:10 -0500] rev 36428
bundle2: part id is an int, use %d to make it bytes
Differential Revision: https://phab.mercurial-scm.org/D2446
Augie Fackler <augie@google.com> [Mon, 26 Feb 2018 00:27:47 -0500] rev 36427
bundle2: **strkwargs love on various kwargs constructions
Differential Revision: https://phab.mercurial-scm.org/D2445
Augie Fackler <augie@google.com> [Sun, 25 Feb 2018 23:51:32 -0500] rev 36426
http: drop custom http client logic
Eight and a half years ago, as my starter bug on code.google.com, I
investigated a mysterious "broken pipe" error from seemingly random
clients[0]. That investigation revealed a tragic story: the Python
standard library's httplib was (and remains) barely functional. During
large POSTs, if a server responds early with an error (even a
permission denied error!) the client only notices that the server
closed the connection and everything breaks. Such server behavior is
implicitly legal under RFC 2616 (the latest HTTP RFC as of when I was
last working on this), and my understanding is that later RFCs have
made it explicitly legal to respond early with any status code outside
the 2xx range.
I embarked, probably foolishly, on a journey to write a new http
library with better overall behavior. The http library appears to work
well in most cases, but it can get confused in the presence of
proxies, and it depends on select(2) which limits its utility if a lot
of file descriptors are open. I haven't touched the http library in
almost two years, and in the interim the Python community has
discovered a better way[1] of writing network code. In theory some day
urllib3 will have its own home-grown http library built on h11[2], or
we could do that. Either way, it's time to declare our current
confusingly-named "http2" client logic and move on. I do hope to
revisit this some day: it's still garbage that we can't even respond
with a 401 or 403 without reading the entire POST body from the
client, but the goalposts on writing a new http client library have
moved substantially. We're almost certainly better off just switching
to requests and eventually picking up their http fixes than trying to
live with something that realistically only we'll ever use. Another
approach would be to write an adapter so that Mercurial can use pycurl
if it's installed. Neither of those approaches seem like they should
be investigated prior to a release of Mercurial that works on Python
3: that's where the mindshare is going to be for any improvements to
the state of the http client art.
0: http://web.archive.org/web/
20130501031801/http://code.google.com/p/support/issues/detail?id=2716
1: http://sans-io.readthedocs.io/
2: https://github.com/njsmith/h11
Differential Revision: https://phab.mercurial-scm.org/D2444
Augie Fackler <augie@google.com> [Sun, 25 Feb 2018 23:34:58 -0500] rev 36425
statichttprepo: move HTTPRangeHandler from byterange and delete the latter
It turns out we've been toting around 472 lines of Python just for
this 20-ish line class that teaches urllib how to handle '206 Partial
Content'. byterange.py showed up in my \sstr\( Python 3 dragnet, and
found itself having overstayed its welcome in our codebase.
# no-check-commit because we're moving code that has to have foo_bar naming.
Differential Revision: https://phab.mercurial-scm.org/D2443
Augie Fackler <augie@google.com> [Sun, 25 Feb 2018 23:09:58 -0500] rev 36424
filemerge: do what the context __bytes__ does, but locally
str() here is clearly the wrong thing, and I think the code is clearer
when it doesn't just depend on the magic __{str,bytes}__ behavior.
I decided to grep around for \sstr\( and see what low-hanging fruit
that showed me. This was part of that hunt. That grep pattern still
has some things worth exploring.
Differential Revision: https://phab.mercurial-scm.org/D2442
Augie Fackler <augie@google.com> [Sun, 25 Feb 2018 23:09:07 -0500] rev 36423
py3: convert known-int values to bytes using %d
I decided to grep around for \sstr\( and see what low-hanging fruit
that showed me. This was part of that hunt. That grep pattern still
has some things worth exploring.
Differential Revision: https://phab.mercurial-scm.org/D2441
Augie Fackler <augie@google.com> [Sun, 25 Feb 2018 23:08:41 -0500] rev 36422
py3: hunt down str(exception) instances and use util.forcebytestr
I decided to grep around for \sstr\( and see what low-hanging fruit
that showed me. This was part of that hunt. That grep pattern still
has some things worth exploring.
Differential Revision: https://phab.mercurial-scm.org/D2440
Augie Fackler <augie@google.com> [Sun, 25 Feb 2018 22:30:14 -0500] rev 36421
subrepo: use util.forcebytestr() instead of str() on exception
Differential Revision: https://phab.mercurial-scm.org/D2437
Augie Fackler <augie@google.com> [Sun, 25 Feb 2018 22:29:28 -0500] rev 36420
tests: add missing b prefixes in test-commit.t
# skip-blame just some b prefixes
Differential Revision: https://phab.mercurial-scm.org/D2436
Augie Fackler <augie@google.com> [Sun, 25 Feb 2018 22:28:52 -0500] rev 36419
commitextras: fix on Python 3 by using sysstrs for __dict__ ops
I'm dubious of the __dict__ shenanigans in use here, but lack the
enthusiasm for figuring out why that was done right now.
# skip-blame just some r prefixes
Differential Revision: https://phab.mercurial-scm.org/D2435
Augie Fackler <augie@google.com> [Sun, 25 Feb 2018 22:06:53 -0500] rev 36418
util: use pycompat.bytestr() instead of str()
This fixes at least some environment variable prints for util.system()
callers on Python 3. Yay!
Differential Revision: https://phab.mercurial-scm.org/D2434
Yuya Nishihara <yuya@tcha.org> [Wed, 21 Feb 2018 22:47:47 +0900] rev 36417
showconfig: allow multiple section.name selectors (
issue5797)
This seems useful and we can disambiguate the output format solely by the
type of the command arguments.
Yuya Nishihara <yuya@tcha.org> [Wed, 21 Feb 2018 23:02:39 +0900] rev 36416
showconfig: use set to filter sections and entry names
Before, an entry matching the specified section could be printed twice if the
selector wasn't unique.
"sections" and "items" are renamed because it's hard to distinguish "sections"
from the loop variable "section".
Yuya Nishihara <yuya@tcha.org> [Wed, 21 Feb 2018 22:20:27 +0900] rev 36415
util: factor out shellsplit() function
It turned out to be more than the simple posix=True|False flag, so let's
introduce a platform function. I also made it py3 ready.
Yuya Nishihara <yuya@tcha.org> [Fri, 23 Feb 2018 23:09:58 +0900] rev 36414
diff: do not split function name if character encoding is unknown
Only ASCII characters can be split reliably at any byte positions, so let's
just leave long multi-byte sequence long. It's probably less bad than putting
an invalid byte sequence into a diff.
This doesn't try to split the first ASCII slice from multi-byte sequence
because a combining character may follow.
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Feb 2018 11:20:35 +0900] rev 36413
histedit: use repo.revs() instead of repo.set() where revisions are needed
Follows up
72da480db4a5. This is just a micro optimization, but looks slightly
nicer.
Yuya Nishihara <yuya@tcha.org> [Sun, 25 Feb 2018 11:13:01 +0900] rev 36412
acl: replace bare getpass.getuser() by platform function
Follows up
dbadf28d4db0. bytestr() shouldn't be applied here because getuser()
isn't guaranteed to be all in ASCII.
This change means GetUserNameA() is used on Windows, but that's probably
better than trying to get the current user name in UNIX way.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 24 Feb 2018 11:21:14 -0800] rev 36411
context: remove basectx.__int__ (API)
basectx is the only type in the repo having __int__ implemented.
This magic method can result in unexpected coercion. Furthermore,
having it implemented is wrong for some contexts, since rev() may
return None in some cases.
Previous commits removed known cases in core where contexts are
coerced to integers. So let's delete basectx.__int__.
This commit is a bit dangerous. While the test suite passes, there
are likely still some callers in core that rely on __int__ that
don't have test coverage. An alternative would be to issue a
deprecation warning and let this bake for a few releases.
.. api::
context.basectx no longer implements __int__. Context instances
will no longer cast to ints. Consumers should call ``ctx.rev()``
instead.
Differential Revision: https://phab.mercurial-scm.org/D2433
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 24 Feb 2018 11:17:10 -0800] rev 36410
patchbomb: resolve revs before evaluating %ld revset
Weaning off of basectx.__rev__.
Differential Revision: https://phab.mercurial-scm.org/D2432
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 24 Feb 2018 11:04:21 -0800] rev 36409
histedit: resolve revs before evaluating %ld revset
We want to stop relying on basectx.__int__. That means we can't
use the %ld revset operator with an iterable of contexts. So
we expand an iterable of contexts into a list of revs before calling
into the revset.
Perhaps it would be worthwhile to add a revset format operator
that recognizes context instances so we can just pass contexts
as revset arguments?
Differential Revision: https://phab.mercurial-scm.org/D2431
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 24 Feb 2018 11:20:24 -0800] rev 36408
split: use ctx.rev() instead of %d % ctx
And rename a variable for clarity while we're here.
This is part of our effort to wean off basectx.__int__.
Differential Revision: https://phab.mercurial-scm.org/D2430
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 24 Feb 2018 11:14:28 -0800] rev 36407
commands: use ctx.rev() instead of %d % ctx
Weaning off basectx.__int__.
Differential Revision: https://phab.mercurial-scm.org/D2429
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 24 Feb 2018 11:13:36 -0800] rev 36406
cmdutil: use ctx.rev() instead of %d % ctx
Weaning off basectx.__int__.
Differential Revision: https://phab.mercurial-scm.org/D2428
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 24 Feb 2018 11:07:07 -0800] rev 36405
rebase: use ctx.rev() instead of %d % ctx
Weaning away from basectx.__int__.
Differential Revision: https://phab.mercurial-scm.org/D2427
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 24 Feb 2018 10:53:47 -0800] rev 36404
histedit: use ctx.rev() instead of %d % ctx
Weaning off basectx.__int__.
Differential Revision: https://phab.mercurial-scm.org/D2426
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 24 Feb 2018 10:56:15 -0800] rev 36403
histedit: rename variables so they have "ctx" in them
It is convention for context instances to end with "ctx." Until
we have type annotations, this makes auditing much, much easier.
Differential Revision: https://phab.mercurial-scm.org/D2425
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 24 Feb 2018 10:51:13 -0800] rev 36402
cmdutil: use ctx.rev() instead of int(ctx)
Continuing to wean off basectx.__int__.
Differential Revision: https://phab.mercurial-scm.org/D2424
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 24 Feb 2018 10:48:24 -0800] rev 36401
templatekw: use ctx.rev() instead of casting context to int
basectx has __int__ implemented. Per mailing list discussion
with Yuya, we don't like having this implemented because it is
too much magic and in some cases rev() will return None, which
isn't an int.
So convert a `'%d' % ctx` to ctx.rev() instead.
Differential Revision: https://phab.mercurial-scm.org/D2423
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 24 Feb 2018 16:18:40 +0530] rev 36400
py3: fix handling of keyword arguments at more places
The keys of keyword arguments of Python 3 should be str, which is why we need to
prevent getting the b'' prefix added by the transformer or convert keys to str
using pycompat.strkwargs()
Differential Revision: https://phab.mercurial-scm.org/D2420
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 24 Feb 2018 16:16:14 +0530] rev 36399
py3: use '%d' for integers instead of '%s'
Differential Revision: https://phab.mercurial-scm.org/D2419
Kevin Bullock <kbullock+mercurial@ringworld.org> [Sat, 24 Feb 2018 17:49:10 -0600] rev 36398
merge with stable
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 24 Feb 2018 16:20:55 +0530] rev 36397
py3: use '//' for integer division in hgweb/common.py
'/' on Python 3 does the float division.
Differential Revision: https://phab.mercurial-scm.org/D2422
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 24 Feb 2018 16:20:15 +0530] rev 36396
py3: use util.forcebytestr to convert error messages to bytes
Differential Revision: https://phab.mercurial-scm.org/D2421
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 24 Feb 2018 16:15:16 +0530] rev 36395
py3: add b'' prefixes to config options in test/badserverext.py
Differential Revision: https://phab.mercurial-scm.org/D2418
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 24 Feb 2018 16:07:45 +0530] rev 36394
py3: replace file() with open()
file() is not present in Python 3.
Differential Revision: https://phab.mercurial-scm.org/D2417
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 24 Feb 2018 16:06:21 +0530] rev 36393
py3: make sure regexes are bytes
# skip-blame because we added just b'' prefix
Differential Revision: https://phab.mercurial-scm.org/D2416
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 24 Feb 2018 16:04:57 +0530] rev 36392
py3: convert dict.items() to list explicitly
On python 3, dict.items() returns a dict_items object which cannot be sorted.
Differential Revision: https://phab.mercurial-scm.org/D2415
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 24 Feb 2018 15:35:00 +0530] rev 36391
py3: whitelist another 8 passing tests
Differential Revision: https://phab.mercurial-scm.org/D2414
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 24 Feb 2018 01:22:15 +0530] rev 36390
py3: use '//' for integer divisions
Differential Revision: https://phab.mercurial-scm.org/D2413