Thu, 20 Dec 2018 09:59:16 +0100 revlog: fix pure python slicing test when chain contains nullrev
Boris Feld <boris.feld@octobus.net> [Thu, 20 Dec 2018 09:59:16 +0100] rev 41079
revlog: fix pure python slicing test when chain contains nullrev The revlog mock used in the test was not behaving the same as its C counterpart.
Sun, 30 Dec 2018 17:31:57 +0900 merge with stable
Yuya Nishihara <yuya@tcha.org> [Sun, 30 Dec 2018 17:31:57 +0900] rev 41078
merge with stable
Thu, 27 Dec 2018 15:19:46 -0800 remotefilelog: fix bug in maybesparsematch returning alwaysmatcher
Kyle Lippincott <spectral@google.com> [Thu, 27 Dec 2018 15:19:46 -0800] rev 41077
remotefilelog: fix bug in maybesparsematch returning alwaysmatcher The description of the method says that it should return None if sparse is not used in this repository; since sparse.matcher() returns alwaysmatcher if sparse is not enabled, I'm using that as the signal to return None here to preserve the previous behavior. Differential Revision: https://phab.mercurial-scm.org/D5487
Fri, 28 Dec 2018 12:51:47 -0800 procutil: correct spelling of uninterruptable -> uninterruptible
Kyle Lippincott <spectral@google.com> [Fri, 28 Dec 2018 12:51:47 -0800] rev 41076
procutil: correct spelling of uninterruptable -> uninterruptible Differential Revision: https://phab.mercurial-scm.org/D5488
Fri, 28 Dec 2018 18:14:10 -0500 help: show advanced, experimental and deprecated extensions with --verbose
Matt Harbison <matt_harbison@yahoo.com> [Fri, 28 Dec 2018 18:14:10 -0500] rev 41075
help: show advanced, experimental and deprecated extensions with --verbose I noticed that phabricator and absorb weren't showing up, no matter what. There's a related problem where commands for these extensions *do* show up without --verbose. I'm not sure what the point of hiding the extensions, but not the commands is.
Fri, 28 Dec 2018 17:45:27 -0500 help: remove a duplicate category name entry for TOPIC_CATEGORY_NONE
Matt Harbison <matt_harbison@yahoo.com> [Fri, 28 Dec 2018 17:45:27 -0500] rev 41074
help: remove a duplicate category name entry for TOPIC_CATEGORY_NONE
Fri, 28 Dec 2018 17:33:13 -0500 phabricator: assign commands to help categories
Matt Harbison <matt_harbison@yahoo.com> [Fri, 28 Dec 2018 17:33:13 -0500] rev 41073
phabricator: assign commands to help categories `phabsend` and `phabupdate` seem pretty close to `email`. `phabread` is a little less close, but can be trivially used to actually import patches.
Fri, 28 Dec 2018 00:53:58 -0500 largefiles: eliminate an unnecessary import of configitems
Matt Harbison <matt_harbison@yahoo.com> [Fri, 28 Dec 2018 00:53:58 -0500] rev 41072
largefiles: eliminate an unnecessary import of configitems Thanks to Yuya for pointing this out.
Fri, 28 Dec 2018 00:51:02 -0500 exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com> [Fri, 28 Dec 2018 00:51:02 -0500] rev 41071
exthelper: add some examples for using registrar aliases Maybe it's my general lack of python knowledge, but how to use these would be way too obscure for me otherwise.
Thu, 27 Dec 2018 23:46:35 -0500 exthelper: reintroduce the ability to register filesets
Matt Harbison <matt_harbison@yahoo.com> [Thu, 27 Dec 2018 23:46:35 -0500] rev 41070
exthelper: reintroduce the ability to register filesets Same mechanism as revsets earlier in this series. The LFS extension is updated to provide test coverage.
Thu, 27 Dec 2018 21:55:22 -0500 exthelper: reintroduce the ability to register templates
Matt Harbison <matt_harbison@yahoo.com> [Thu, 27 Dec 2018 21:55:22 -0500] rev 41069
exthelper: reintroduce the ability to register templates Same mechanism as revsets earlier in this series. The LFS extension is updated to provide test coverage. This also seems to make the test failure around issue6033 mentioned in 0a7f582f6f1f much less regular on Windows.
Thu, 27 Dec 2018 21:46:03 -0500 extensions: deprecate extsetup without a `ui` argument (API)
Matt Harbison <matt_harbison@yahoo.com> [Thu, 27 Dec 2018 21:46:03 -0500] rev 41068
extensions: deprecate extsetup without a `ui` argument (API) 9.5 years should be enough time, but there were some tests for the old style still (which are now updated). Exthelper doesn't fallback to the old API, so this is for consistency. .. api:: The extension hook ``extsetup`` without a `ui` argument has been deprecated, and will be removed in the next version. Add a `ui` argument to avoid the deprecation warning.
Thu, 27 Dec 2018 21:27:43 -0500 largefiles: port revset registration to exthelper
Matt Harbison <matt_harbison@yahoo.com> [Thu, 27 Dec 2018 21:27:43 -0500] rev 41067
largefiles: port revset registration to exthelper This tests the merge code that wasn't tested in the previous patch.
Thu, 27 Dec 2018 21:26:17 -0500 exthelper: reintroduce the ability to register revsets
Matt Harbison <matt_harbison@yahoo.com> [Thu, 27 Dec 2018 21:26:17 -0500] rev 41066
exthelper: reintroduce the ability to register revsets I think this is what Yuya and Boris agreed on.[1] This happens *after* the extsetup phase now (and after the _aftercallback notifications). But this is trivial, mergeable between exthelper instances, and doesn't need to have the extension name supplied when registering. The test needed updating so that extsetup() takes a `ui` argument, as exthelper isn't trying to be backward compatible with 1.3.1. [1] https://www.mercurial-scm.org/pipermail/mercurial-devel/2018-December/125888.html
Sun, 23 Dec 2018 23:01:51 -0500 largefiles: drop the uisetup module
Matt Harbison <matt_harbison@yahoo.com> [Sun, 23 Dec 2018 23:01:51 -0500] rev 41065
largefiles: drop the uisetup module This is small enough to live in the __init__ module.
Mon, 24 Dec 2018 17:04:37 +0530 branches: add -r option to show branch name(s) of a given rev (issue5948)
Navaneeth Suresh <navaneeths1998@gmail.com> [Mon, 24 Dec 2018 17:04:37 +0530] rev 41064
branches: add -r option to show branch name(s) of a given rev (issue5948) Differential Revision: https://phab.mercurial-scm.org/D5486
Mon, 10 Dec 2018 20:06:58 +0000 progress: avoid ui.configbool() lookup when progress bar is active
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 10 Dec 2018 20:06:58 +0000] rev 41063
progress: avoid ui.configbool() lookup when progress bar is active Profiling revealed that the ui.configbool('progress', 'debug') during progress bar updates was consuming a significant amount of overhead. This commit adds an attribute on progress bar instances that caches this config option. The impact on `hg perfprogress` with default options is significant: before: ! wall 4.641942 comb 4.580000 user 4.210000 sys 0.370000 (best of 3) after: ! wall 1.948626 comb 1.950000 user 1.950000 sys 0.000000 (best of 5) After this change, profiling reveals that progress.progbar.progress() is now consuming ~73% of time. This change does not improve the execution time if the progress bar is disabled. We may want a more comprehensive solution for that case, as the progress bar won't be enabled in a number of scenarios (e.g. servers and processes not attached to an interactive TTY). I also think that overhead of ~2.0s for 1M updates is a bit high. I suspect further refactoring of the progress bar can significantly reduce overhead. I don't have plans to do this, however. Differential Revision: https://phab.mercurial-scm.org/D5408
Sun, 23 Dec 2018 22:57:03 -0500 largefiles: port wrapped functions to exthelper
Matt Harbison <matt_harbison@yahoo.com> [Sun, 23 Dec 2018 22:57:03 -0500] rev 41062
largefiles: port wrapped functions to exthelper Things get interesting in the commit. I hadn't seen issue6033 on Windows, and yet it is now reproducible 100% of the time on Windows 10 with this commit. I didn't test Linux. (For comparison, after seeing this issue, I tested on the parent with --loop, and it failed 5 times out of over 1300 tests.) The strange thing is that largefiles has nothing to do with that test (it's not even mentioned there). It isn't autoloading run amuck- it occurs even if largefiles is explicitly disabled, and also if the entry in afterhgrcload() is commented out. It's also not the import of lfutil- I disabled that by copying the function into lfs and removing the import, and the problem still occurs. Experimenting further, it seems that the problem is isolated to 3 entries: exchange.pushoperation, hg.clone, and cmdutil.revert. If those decorators are all commented out, the test passes when run in a loop for awhile. (Obviously, some largefiles tests will fail.) But if any one is commented back in, the test fails immediately. I left one method related to wrapping the wire protocol, because it seemed more natural with the TODO. Also, exthelper doesn't support wrapping functions from another extension, only commands in another extension. I didn't try to figure out why rebase is both command wrapped and function wrapped.
Sun, 23 Dec 2018 17:26:25 -0500 largefiles: port commands to exthelper
Matt Harbison <matt_harbison@yahoo.com> [Sun, 23 Dec 2018 17:26:25 -0500] rev 41061
largefiles: port commands to exthelper One subtle change here is that the purge, rebase and transplant extensions are wrapped in extsetup() instead of uisetup().
Sun, 23 Dec 2018 21:54:56 -0500 exthelper: support the option argument when registering a command
Matt Harbison <matt_harbison@yahoo.com> [Sun, 23 Dec 2018 21:54:56 -0500] rev 41060
exthelper: support the option argument when registering a command Largefiles uses this 5th argument with push and pull, so this will be tested in the next commit. I assume the reason for unrolling and reforming the tuple in each finalxxxsetup() is to validate that something proper was passed in when registering. But it's better to explode when decorating than during the delayed actual registration.
Sun, 23 Dec 2018 16:16:13 -0500 largefiles: port configitems to exthelper
Matt Harbison <matt_harbison@yahoo.com> [Sun, 23 Dec 2018 16:16:13 -0500] rev 41059
largefiles: port configitems to exthelper It looks like dynamicdefault was referenced in a non-standard way.
Sun, 23 Dec 2018 15:18:38 -0500 remotefilelog: use repo.local() instead of isinstance()
Matt Harbison <matt_harbison@yahoo.com> [Sun, 23 Dec 2018 15:18:38 -0500] rev 41058
remotefilelog: use repo.local() instead of isinstance()
Sun, 23 Dec 2018 14:52:43 -0500 exthelper: add a cautionary note about adding attributes to containers
Matt Harbison <matt_harbison@yahoo.com> [Sun, 23 Dec 2018 14:52:43 -0500] rev 41057
exthelper: add a cautionary note about adding attributes to containers
Thu, 27 Dec 2018 00:10:40 -0500 exthelper: drop a compatibility shim with '^command' syntax
Matt Harbison <matt_harbison@yahoo.com> [Thu, 27 Dec 2018 00:10:40 -0500] rev 41056
exthelper: drop a compatibility shim with '^command' syntax This syntax was dropped in fa88170c10bb.
Mon, 24 Dec 2018 14:04:16 -0500 wireproto: in batch queries, support queries with immediate responses
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com> [Mon, 24 Dec 2018 14:04:16 -0500] rev 41055
wireproto: in batch queries, support queries with immediate responses listkeys and pushkey return without querying the remote when the remote doesn't support such queries. Before this change, the batching code didn't handle this convention, resulting in this kind of error: $ hg pull ssh://user@dummy/repo1 -r tip -B a pulling from ssh://user@dummy/repo1 remote: ** Unknown exception encountered with possibly-broken third-party extension disable-lookup remote: ** which supports versions unknown of Mercurial. remote: ** Please disable disable-lookup and try your action again. remote: ** If that fixes the bug please report it to the extension author. remote: ** Python 2.7.15+ (default, Oct 2 2018, 22:12:08) [GCC 8.2.0] remote: ** Mercurial Distributed SCM (version 4.8.1+586-ef54bd33b476+20181224) remote: ** Extensions loaded: disable-lookup remote: Traceback (most recent call last): remote: File "/tmp/hgtests.i66Npc/install/bin/hg", line 43, in <module> remote: dispatch.run() remote: File "/tmp/hgtests.i66Npc/install/lib/python/mercurial/dispatch.py", line 99, in run remote: status = dispatch(req) remote: File "/tmp/hgtests.i66Npc/install/lib/python/mercurial/dispatch.py", line 225, in dispatch remote: ret = _runcatch(req) or 0 remote: File "/tmp/hgtests.i66Npc/install/lib/python/mercurial/dispatch.py", line 376, in _runcatch remote: return _callcatch(ui, _runcatchfunc) remote: File "/tmp/hgtests.i66Npc/install/lib/python/mercurial/dispatch.py", line 384, in _callcatch remote: return scmutil.callcatch(ui, func) remote: File "/tmp/hgtests.i66Npc/install/lib/python/mercurial/scmutil.py", line 166, in callcatch remote: return func() remote: File "/tmp/hgtests.i66Npc/install/lib/python/mercurial/dispatch.py", line 367, in _runcatchfunc remote: return _dispatch(req) remote: File "/tmp/hgtests.i66Npc/install/lib/python/mercurial/dispatch.py", line 1021, in _dispatch remote: cmdpats, cmdoptions) remote: File "/tmp/hgtests.i66Npc/install/lib/python/mercurial/dispatch.py", line 756, in runcommand remote: ret = _runcommand(ui, options, cmd, d) remote: File "/tmp/hgtests.i66Npc/install/lib/python/mercurial/dispatch.py", line 1030, in _runcommand remote: return cmdfunc() remote: File "/tmp/hgtests.i66Npc/install/lib/python/mercurial/dispatch.py", line 1018, in <lambda> remote: d = lambda: util.checksignature(func)(ui, *args, **strcmdopt) remote: File "/tmp/hgtests.i66Npc/install/lib/python/mercurial/util.py", line 1670, in check remote: return func(*args, **kwargs) remote: File "/tmp/hgtests.i66Npc/install/lib/python/mercurial/commands.py", line 5257, in serve remote: s.serve_forever() remote: File "/tmp/hgtests.i66Npc/install/lib/python/mercurial/wireprotoserver.py", line 797, in serve_forever remote: self.serveuntil(threading.Event()) remote: File "/tmp/hgtests.i66Npc/install/lib/python/mercurial/wireprotoserver.py", line 804, in serveuntil remote: _runsshserver(self._ui, self._repo, self._fin, self._fout, ev) remote: File "/tmp/hgtests.i66Npc/install/lib/python/mercurial/wireprotoserver.py", line 656, in _runsshserver remote: rsp = wireprotov1server.dispatch(repo, proto, request) remote: File "/tmp/hgtests.i66Npc/install/lib/python/mercurial/wireprotov1server.py", line 74, in dispatch remote: return func(repo, proto, *args) remote: File "/tmp/hgtests.i66Npc/install/lib/python/mercurial/wireprotov1server.py", line 195, in batch remote: data[k] = vals[k] remote: KeyError: 'namespace' abort: unexpected response: empty string [255] Differential Revision: https://phab.mercurial-scm.org/D5482
Tue, 04 Dec 2018 11:05:06 +0100 rust: core implementation for lazyancestors
Georges Racinet <gracinet@anybox.fr> [Tue, 04 Dec 2018 11:05:06 +0100] rev 41054
rust: core implementation for lazyancestors Once exposed through appropriate bindings, this should be able to replace ancestor.lazyancestors entirely. Differential Revision: https://phab.mercurial-scm.org/D5440
Thu, 06 Dec 2018 20:01:21 +0100 rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr> [Thu, 06 Dec 2018 20:01:21 +0100] rev 41053
rust-cpython: binding for AncestorsIterator It's now reachable from Python as rustext.ancestor.AncestorsIterator Tests are provided in the previously introduced Python testcase: this is much more convenient that writing lengthy Rust code to call into Python. Differential Revision: https://phab.mercurial-scm.org/D5439
Mon, 03 Dec 2018 07:44:08 +0100 rust-cpython: implement Graph using C parents function
Georges Racinet <gracinet@anybox.fr> [Mon, 03 Dec 2018 07:44:08 +0100] rev 41052
rust-cpython: implement Graph using C parents function We introduce the `Index` struct that wraps the C index. It is not intrinsically protected by the GIL (see the lengthy discussion in its docstring). Improving on this seems prematurate at this point. A pointer to the parents function is stored on the parsers C extension module as a capsule object. This is the recommended way to export a C API for consumption from other extensions. See also: https://docs.python.org/2.7/c-api/capsule.html In our case, we use it in cindex.rs, retrieving function pointer from the capsule and storing it within the CIndex struct, alongside with a pointer to the index. From there, the implementation is very close to the one from hg-direct-ffi. The naming convention for the capsule is inspired from the one in datetime: >>> import datetime >>> datetime.datetime_CAPI <capsule object "datetime.datetime_CAPI" at 0x7fb51201ecf0> although in datetime's case, the capsule points to a struct holding several type objects and methods. Differential Revision: https://phab.mercurial-scm.org/D5438
Thu, 20 Dec 2018 22:28:39 -0500 pull: fix inconsistent view of bookmarks during pull (issue4700)
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com> [Thu, 20 Dec 2018 22:28:39 -0500] rev 41051
pull: fix inconsistent view of bookmarks during pull (issue4700) I had a share where a pull apparently pulled a bookmark but not the revision pointed to by the bookmark, which I suspect is due to this (and if not, we might as well remove known issues in this area). I do this by combining doing all the queries that could read the bookmarks in one round trip. I had to change the handling of the case where the server doesn't support the lookup query, because if it fails, it would otherwise make fremotebookmark.result() block forever. This is due to wireprotov1peer.peerexecutor.sendcommands's behavior (it fills a single future if any query fails synchronously and leaves all other futures unchanged), but I don't know if the fix is to cancel all other futures, or to keep going with the other queries. Differential Revision: https://phab.mercurial-scm.org/D5449
Sun, 23 Dec 2018 13:16:25 +0530 merge: modify the logical statement
Sushil khanchi <sushilkhanchi97@gmail.com> [Sun, 23 Dec 2018 13:16:25 +0530] rev 41050
merge: modify the logical statement Differential Revision: https://phab.mercurial-scm.org/D5476
(0) -30000 -10000 -3000 -1000 -300 -100 -50 -30 +30 +50 +100 +300 +1000 +3000 +10000 tip