Boris Feld <boris.feld@octobus.net> [Fri, 21 Dec 2018 05:27:30 +0100] rev 41090
revlog: add test case for _findsnapshots
Testing the method directly is more robust.
Boris Feld <boris.feld@octobus.net> [Fri, 21 Dec 2018 05:27:38 +0100] rev 41089
revlog: use the native implementation of issnapshot
In some sparserevlog case where a lot of the history has to be searched for a
snapshot, the cost of issnashot cost becomes significant. The computation done
by the method is fairly low level, a native implementation provide a very
significant speedup.
example affected manifest write
before: 0.490375s
after: 0.114989s (-76%)
Boris Feld <boris.feld@octobus.net> [Mon, 17 Dec 2018 10:57:13 +0100] rev 41088
revlog: add a native implementation of issnapshot
This will be used in the next changesets
Boris Feld <boris.feld@octobus.net> [Mon, 17 Dec 2018 10:51:36 +0100] rev 41087
revlog: more efficient implementation for issnapshot
We avoid multiple method calls and tuple creation, this provides a significant
speedup in some case:
example affected manifest write
before: 0.815520s
after: 0.487767s (-40%)
Boris Feld <boris.feld@octobus.net> [Sun, 30 Dec 2018 16:14:42 +0100] rev 41086
revlog: clarify the non sparse-revlog case in `issnapshot`
If we are not using sparse-revlog, there is only one type of snapshot, the full
one.
Matt Harbison <matt_harbison@yahoo.com> [Sun, 30 Dec 2018 22:46:54 -0500] rev 41085
exthelper: switch to using the registrar merging method
Matt Harbison <matt_harbison@yahoo.com> [Sun, 30 Dec 2018 21:52:26 -0500] rev 41084
registrar: add a method to merge registrar instances
This provides sanity checking beyond simply merging the underlying dictionaries.
Matt Harbison <matt_harbison@yahoo.com> [Sat, 29 Dec 2018 01:51:02 -0500] rev 41083
phabricator: ensure that the return of urlopener.open() is closed
No problem observed, just an oversight noticed while reading documentation.
Boris Feld <boris.feld@octobus.net> [Thu, 20 Dec 2018 09:59:16 +0100] rev 41082
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.
Yuya Nishihara <yuya@tcha.org> [Sun, 30 Dec 2018 17:31:57 +0900] rev 41081
merge with stable
Kyle Lippincott <spectral@google.com> [Thu, 27 Dec 2018 15:19:46 -0800] rev 41080
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
Kyle Lippincott <spectral@google.com> [Fri, 28 Dec 2018 12:51:47 -0800] rev 41079
procutil: correct spelling of uninterruptable -> uninterruptible
Differential Revision: https://phab.mercurial-scm.org/D5488
Matt Harbison <matt_harbison@yahoo.com> [Fri, 28 Dec 2018 18:14:10 -0500] rev 41078
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.
Matt Harbison <matt_harbison@yahoo.com> [Fri, 28 Dec 2018 17:45:27 -0500] rev 41077
help: remove a duplicate category name entry for TOPIC_CATEGORY_NONE
Matt Harbison <matt_harbison@yahoo.com> [Fri, 28 Dec 2018 17:33:13 -0500] rev 41076
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.
Matt Harbison <matt_harbison@yahoo.com> [Fri, 28 Dec 2018 00:53:58 -0500] rev 41075
largefiles: eliminate an unnecessary import of configitems
Thanks to Yuya for pointing this out.
Matt Harbison <matt_harbison@yahoo.com> [Fri, 28 Dec 2018 00:51:02 -0500] rev 41074
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.
Matt Harbison <matt_harbison@yahoo.com> [Thu, 27 Dec 2018 23:46:35 -0500] rev 41073
exthelper: reintroduce the ability to register filesets
Same mechanism as revsets earlier in this series. The LFS extension is updated
to provide test coverage.
Matt Harbison <matt_harbison@yahoo.com> [Thu, 27 Dec 2018 21:55:22 -0500] rev 41072
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.
Matt Harbison <matt_harbison@yahoo.com> [Thu, 27 Dec 2018 21:46:03 -0500] rev 41071
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.
Matt Harbison <matt_harbison@yahoo.com> [Thu, 27 Dec 2018 21:27:43 -0500] rev 41070
largefiles: port revset registration to exthelper
This tests the merge code that wasn't tested in the previous patch.
Matt Harbison <matt_harbison@yahoo.com> [Thu, 27 Dec 2018 21:26:17 -0500] rev 41069
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
Matt Harbison <matt_harbison@yahoo.com> [Sun, 23 Dec 2018 23:01:51 -0500] rev 41068
largefiles: drop the uisetup module
This is small enough to live in the __init__ module.
Navaneeth Suresh <navaneeths1998@gmail.com> [Mon, 24 Dec 2018 17:04:37 +0530] rev 41067
branches: add -r option to show branch name(s) of a given rev (issue5948)
Differential Revision: https://phab.mercurial-scm.org/D5486
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 10 Dec 2018 20:06:58 +0000] rev 41066
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
Matt Harbison <matt_harbison@yahoo.com> [Sun, 23 Dec 2018 22:57:03 -0500] rev 41065
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.
Matt Harbison <matt_harbison@yahoo.com> [Sun, 23 Dec 2018 17:26:25 -0500] rev 41064
largefiles: port commands to exthelper
One subtle change here is that the purge, rebase and transplant extensions are
wrapped in extsetup() instead of uisetup().
Matt Harbison <matt_harbison@yahoo.com> [Sun, 23 Dec 2018 21:54:56 -0500] rev 41063
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.
Matt Harbison <matt_harbison@yahoo.com> [Sun, 23 Dec 2018 16:16:13 -0500] rev 41062
largefiles: port configitems to exthelper
It looks like dynamicdefault was referenced in a non-standard way.
Matt Harbison <matt_harbison@yahoo.com> [Sun, 23 Dec 2018 15:18:38 -0500] rev 41061
remotefilelog: use repo.local() instead of isinstance()