Wed, 28 Feb 2018 12:56:01 -0800 narrow: move narrowmatch-related methods to localrepo
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
Tue, 27 Feb 2018 23:05:39 -0800 narrow: remove dependency from narrowspec module to hg module
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
Wed, 28 Feb 2018 10:32:00 -0800 narrow: reduce depedence on narrowspec.save()
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
Wed, 28 Feb 2018 12:55:05 -0800 narrow: always wrap repo
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
Wed, 28 Feb 2018 10:29:04 -0800 narrow: consider both local and remote matchers in narrowchangegroup
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
Wed, 28 Feb 2018 10:22:54 -0800 narrow: move checking for narrow requirement into _narrowmatch()
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
Wed, 28 Feb 2018 10:55:21 -0800 narrow: move changegroup.supportedoutgoingversions() override to core
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
Wed, 28 Feb 2018 10:21:43 -0800 narrow: move requirement constant to core
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
Wed, 21 Feb 2018 14:36:42 +0530 remotenames: don't inherit the remotenames class from dict class
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
Sun, 25 Feb 2018 17:22:25 -0500 run-tests: cache hghave results
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.
Mon, 26 Feb 2018 23:34:29 -0500 run-tests: resume raising an exception when a server fails to start
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.
Tue, 27 Feb 2018 14:49:05 +0530 py3: use print as a function in tests/test-hgrc.t
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
Tue, 27 Feb 2018 14:46:35 +0530 py3: use '%d' to convert integers to bytes
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
Tue, 27 Feb 2018 14:44:37 +0530 py3: add b'' prefixes in tests/test-extension.t
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
Tue, 27 Feb 2018 14:42:30 +0530 py3: convert os.devnull to bytes using pycompat.bytestr
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
Tue, 27 Feb 2018 14:41:24 +0530 py3: fix more keyword arguments handling
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
Tue, 27 Feb 2018 14:28:17 +0530 py3: make sure regexes are bytes
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
Tue, 27 Feb 2018 00:43:37 +0530 py3: use pycompat.strurl to convert url to str
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
Mon, 26 Feb 2018 13:34:35 -0800 bookmarks: write bookmarks file deterministically
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
Mon, 26 Feb 2018 13:32:03 -0800 phases: write phaseroots deterministically
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
Sat, 17 Feb 2018 11:19:52 -0700 internals: document bundle2 format
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
Mon, 26 Feb 2018 23:54:40 +0530 py3: convert bytes to str using encoding.strfromlocal
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
Mon, 26 Feb 2018 23:50:30 +0530 py3: use encoding.strtolocal() to convert str to bytes
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
Mon, 26 Feb 2018 16:19:53 +0530 py3: use email.utils module instead of email.Utils
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
Mon, 26 Feb 2018 17:25:46 +0530 py3: slice over bytes or use .startswith() to prevent getting ascii values
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
Mon, 26 Feb 2018 16:23:12 +0530 py3: use '%d' for integers instead of '%s'
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
Sun, 25 Feb 2018 13:24:35 +0900 templatekw: add 'requires' flag to switch to exception-safe interface
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.
Sun, 25 Feb 2018 12:50:30 +0900 templater: specialize ResourceUnavailable error so that it can be caught
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.
Sun, 25 Feb 2018 12:47:53 +0900 templater: move specialized exception types to top
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.
Sun, 25 Feb 2018 14:14:33 +0900 templatekw: minimize resource dependency of {envvars} and {termwidth}
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.
(0) -30000 -10000 -3000 -1000 -300 -100 -50 -30 +30 +50 +100 +300 +1000 +3000 +10000 tip