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.