Sat, 22 Dec 2018 11:38:03 +0100 rust-cpython: rustdoc improvements
Georges Racinet <georges.racinet@octobus.net> [Sat, 22 Dec 2018 11:38:03 +0100] rev 41184
rust-cpython: rustdoc improvements By default, `cargo doc` builds the documentation for public constructs only, so we make public those that can. Since `cindex` is not safe, we keep it private. Unfortunately, the macro syntax of rust-cpython doesn't allow us to document the classes directly, so we resort to do that at the module level. Differential Revision: https://phab.mercurial-scm.org/D5546
Thu, 10 Jan 2019 10:23:22 -0500 fuzz: stop building Python in the Makefile
Augie Fackler <augie@google.com> [Thu, 10 Jan 2019 10:23:22 -0500] rev 41183
fuzz: stop building Python in the Makefile $OUT/sanpy is now built by the build.sh in oss-fuzz, which simplifies the setup here considerably. Differential Revision: https://phab.mercurial-scm.org/D5553
Thu, 10 Jan 2019 23:20:46 +0530 py3: add a test to whitelist caught by buildbot
Pulkit Goyal <pulkit@yandex-team.ru> [Thu, 10 Jan 2019 23:20:46 +0530] rev 41182
py3: add a test to whitelist caught by buildbot Differential Revision: https://phab.mercurial-scm.org/D5555
Thu, 10 Jan 2019 16:36:55 -0800 tests: de-flake test-narrow-share.t by making dirstate predictable
Martin von Zweigbergk <martinvonz@google.com> [Thu, 10 Jan 2019 16:36:55 -0800] rev 41181
tests: de-flake test-narrow-share.t by making dirstate predictable test-narrow-share.t was sometimes (~0.5% on my machine) failing like this: @@ -61,7 +61,7 @@ A d3/g $ hg -R main debugdirstate --no-dates n 644 2 set d1/f - n 644 2 unset d3/f + n 644 2 set d3/f a 0 -1 unset d3/g n 644 2 set d5/f n 644 2 set d7/f The timestamp for d3/f would get set if it was determined at some point that it was clean. That check is usually done when the user runs `hg st`. We don't do that before the failure in the test case, but it happens at the end of the `hg clone` call. So if the file system's time happens to roll over after the clone's working copy has been written, but before its (final) dirstate has been written, we can end up with a set timestamp there. This patch makes it consistent by sleeping for 2 seconds so the timestamp gets reliably set. Differential Revision: https://phab.mercurial-scm.org/D5568
Wed, 09 Jan 2019 16:02:05 -0500 convert: don't drop commits that are empty in the source when using --filemap
Matt Harbison <matt_harbison@yahoo.com> [Wed, 09 Jan 2019 16:02:05 -0500] rev 41180
convert: don't drop commits that are empty in the source when using --filemap I ran into this when using `hg lfconvert --to-normal` (which uses the filemap class internally), and saw that commits with nothing but a branch change were dropped. We could put in an option that only lfconvert uses internally. But silently dropping anything other than a commit where all changes were excluded seems unintended. For example, there's a message in mercurial_sink.putcommit() if it drops an empty commit. (And the reason that isn't kicking in here is because lfconvert isn't passing --filemap, so the self.filemapmode conditional there is always False.) The naive change of `return not files` broke test-convert-filemap.t, so this is a little more elaborate than needed for converting from largefiles.
Wed, 09 Jan 2019 14:33:06 -0500 convert: add missing numcommits() override to hg sources
Matt Harbison <matt_harbison@yahoo.com> [Wed, 09 Jan 2019 14:33:06 -0500] rev 41179
convert: add missing numcommits() override to hg sources Otherwise, the progressbar in converter.walktree() gets None as its total during the initial scan. (Though that seems harmless, and there are other foreign vcs sources without this.)
Thu, 10 Jan 2019 14:32:36 -0800 testrunner: make `-j100 --runs-per-test=100 test-foo.t` use 100 jobs
Martin von Zweigbergk <martinvonz@google.com> [Thu, 10 Jan 2019 14:32:36 -0800] rev 41178
testrunner: make `-j100 --runs-per-test=100 test-foo.t` use 100 jobs It would use only 1 job since 1039404c5e1d (run-tests: print number of tests and parallel process count, 2018-10-13), but I'm pretty sure that was unintentional. Differential Revision: https://phab.mercurial-scm.org/D5557
Sun, 06 Jan 2019 23:37:13 -0800 narrow: use merge.ACTION_GET instead of duplicating 'g' constant
Martin von Zweigbergk <martinvonz@google.com> [Sun, 06 Jan 2019 23:37:13 -0800] rev 41177
narrow: use merge.ACTION_GET instead of duplicating 'g' constant As suggested by Yuya. Differential Revision: https://phab.mercurial-scm.org/D5512
Mon, 07 Jan 2019 00:37:46 -0800 narrow: drop explicit dirstate write
Martin von Zweigbergk <martinvonz@google.com> [Mon, 07 Jan 2019 00:37:46 -0800] rev 41176
narrow: drop explicit dirstate write The dirstate is written when the wlock is released, so we don't need to write it explicitly in updateworkingcopy(). I don't know why I put it there in the first place (tests pass without it even in the commit that introduced it). Differential Revision: https://phab.mercurial-scm.org/D5515
Wed, 09 Jan 2019 18:00:20 -0500 histedit: fix --continue and --abort when curses is enabled
Augie Fackler <augie@google.com> [Wed, 09 Jan 2019 18:00:20 -0500] rev 41175
histedit: fix --continue and --abort when curses is enabled I overlooked this when I did the initial import. Differential Revision: https://phab.mercurial-scm.org/D5540
Thu, 10 Jan 2019 21:57:21 +0900 graft: abort if --date/user specified with --currentdate/currentuser (BC)
Yuya Nishihara <yuya@tcha.org> [Thu, 10 Jan 2019 21:57:21 +0900] rev 41174
graft: abort if --date/user specified with --currentdate/currentuser (BC) They are conflicting options. Let's explicitly ban such combination. Note that this means you need "--no-currentdate --date" to override --currentdate specified in aliases/defaults.
Thu, 10 Jan 2019 21:32:37 +0900 amend: turn currentdate into tri-state bool so config option can be negated
Yuya Nishihara <yuya@tcha.org> [Thu, 10 Jan 2019 21:32:37 +0900] rev 41173
amend: turn currentdate into tri-state bool so config option can be negated Otherwise, rewrite.update-timestap couldn't be overridden by --no-currentdate. FWIW, which do we like? --no-currentdate vs --no-current-date. If the latter is preferred, maybe we can add "graft --current-date" and deprecate "--currentdate".
Fri, 04 Jan 2019 17:54:18 +0100 discovery: improve partial discovery documentation
Boris Feld <boris.feld@octobus.net> [Fri, 04 Jan 2019 17:54:18 +0100] rev 41172
discovery: improve partial discovery documentation The older documentation could be improved.
Fri, 28 Dec 2018 03:59:38 +0100 discovery: add a simple `addinfo` method
Boris Feld <boris.feld@octobus.net> [Fri, 28 Dec 2018 03:59:38 +0100] rev 41171
discovery: add a simple `addinfo` method The method can directly process a sample result. This makes the main code simpler to follow.
Fri, 28 Dec 2018 03:48:00 +0100 discovery: move missing tracking inside the partialdiscovery object
Boris Feld <boris.feld@octobus.net> [Fri, 28 Dec 2018 03:48:00 +0100] rev 41170
discovery: move missing tracking inside the partialdiscovery object This is the final set that we need to track to have a fully up to date information within the object.
Fri, 28 Dec 2018 03:39:43 +0100 discovery: add a `iscomplete` method to the `partialdiscovery` object
Boris Feld <boris.feld@octobus.net> [Fri, 28 Dec 2018 03:39:43 +0100] rev 41169
discovery: add a `iscomplete` method to the `partialdiscovery` object The method is used by higher level logic to know if the initial discovery question has been answered.
Fri, 28 Dec 2018 03:34:23 +0100 discovery: update undecided from common directly within partialdiscovery
Boris Feld <boris.feld@octobus.net> [Fri, 28 Dec 2018 03:34:23 +0100] rev 41168
discovery: update undecided from common directly within partialdiscovery The object knows when there are changes in the "common" set, so it is a good place to update the undecided set.
Fri, 28 Dec 2018 03:23:37 +0100 discovery: move undecided set on the partialdiscovery
Boris Feld <boris.feld@octobus.net> [Fri, 28 Dec 2018 03:23:37 +0100] rev 41167
discovery: move undecided set on the partialdiscovery To initialize it, we need to know the discovery target. This commit only move the set on the `partialdiscovery` object, later changeset will take advantage of it.
Wed, 09 Jan 2019 15:34:24 -0800 histedit: use context manager for locks
Martin von Zweigbergk <martinvonz@google.com> [Wed, 09 Jan 2019 15:34:24 -0800] rev 41166
histedit: use context manager for locks Differential Revision: https://phab.mercurial-scm.org/D5542
Wed, 09 Jan 2019 15:32:26 -0800 histedit: drop unused constructor arguments (API)
Martin von Zweigbergk <martinvonz@google.com> [Wed, 09 Jan 2019 15:32:26 -0800] rev 41165
histedit: drop unused constructor arguments (API) All in-tree callers pass a repo and nothing else. Differential Revision: https://phab.mercurial-scm.org/D5541
Sat, 05 Jan 2019 19:50:30 -0500 phabricator: teach {phabreview} to work without --amend
Matt Harbison <matt_harbison@yahoo.com> [Sat, 05 Jan 2019 19:50:30 -0500] rev 41164
phabricator: teach {phabreview} to work without --amend There's some possibility of this being wrong (e.g. if the url config was changed). But commit messages can be amended too, so that isn't bulletproof either. Having something seems better than just returning None.
Sat, 05 Jan 2019 15:20:33 -0500 phabricator: warn if unable to amend, instead of aborting after posting
Matt Harbison <matt_harbison@yahoo.com> [Sat, 05 Jan 2019 15:20:33 -0500] rev 41163
phabricator: warn if unable to amend, instead of aborting after posting There was a divergence in behavior here between obsolete and strip based amending. I first noticed the abort when testing outside of the test harness, but then had trouble recreating it here after reverting the code changes. It turns out, strip based amend was successfully amending the public commit after it was posted! It looks like the protection is in the `commit --amend` command, not in the underlying code that it calls. I considered doing a preflight check and aborting. But the locks are only acquired at the end, if amending, and this is too large a section of code to be wrapped in a maybe-it's-held-or-not context manager for my tastes. Additionally, some people do post-push reviews, and amending is the default behavior, so they shouldn't see a misleading error message. The lack of a 'Differential Revision' entry in the commit message breaks a {phabreview} test, so it had to be partially conditionalized.
Thu, 10 Jan 2019 04:35:48 +0100 discovery: re-adjust a conditional wrongly changed
Boris Feld <boris.feld@octobus.net> [Thu, 10 Jan 2019 04:35:48 +0100] rev 41162
discovery: re-adjust a conditional wrongly changed In 71b0db4fa027 we updated this conditional to `<=`. As Yuya Nishihara pointed out, this was wrong.
Mon, 07 Jan 2019 18:43:10 -0500 cleanup: stop including thirdparty.cbor in builds
Augie Fackler <augie@google.com> [Mon, 07 Jan 2019 18:43:10 -0500] rev 41161
cleanup: stop including thirdparty.cbor in builds Differential Revision: https://phab.mercurial-scm.org/D5524
Mon, 07 Jan 2019 18:41:53 -0500 tests: get access to thirdparty.cbor without requiring it to be installed
Augie Fackler <augie@google.com> [Mon, 07 Jan 2019 18:41:53 -0500] rev 41160
tests: get access to thirdparty.cbor without requiring it to be installed This makes the test a noop when run from a tarball, but in return we can stop shipping a library we don't use. Differential Revision: https://phab.mercurial-scm.org/D5523
Mon, 07 Jan 2019 17:19:19 -0500 tests: add simplestorerepo to test-check-interfaces.py
Augie Fackler <augie@google.com> [Mon, 07 Jan 2019 17:19:19 -0500] rev 41159
tests: add simplestorerepo to test-check-interfaces.py I'm not thrilled with this, but it'll help avoid future bitrot. Differential Revision: https://phab.mercurial-scm.org/D5521
Mon, 07 Jan 2019 16:50:23 -0500 simplestorerepo: migrate to in-hg CBOR code
Augie Fackler <augie@google.com> [Mon, 07 Jan 2019 16:50:23 -0500] rev 41158
simplestorerepo: migrate to in-hg CBOR code This is the only use of thirdparty.cbor outside of a test-* file, so it felt worthwhile to clean it up. Differential Revision: https://phab.mercurial-scm.org/D5520
Mon, 07 Jan 2019 18:22:20 -0500 simplestorerepo: minimal changes required to get this mostly working again
Augie Fackler <augie@google.com> [Mon, 07 Jan 2019 18:22:20 -0500] rev 41157
simplestorerepo: minimal changes required to get this mostly working again I was going to change this code's use of CBOR to use our in-house CBOR code, but discovered it's been broken for a while. This messy change gets it back to a point where it mostly works, I think roughly as well as it ever did. Should we keep this and fix it up the rest of the way, or dump it in favor of the sqlite store? Would this be a good jumping-off point for some sort of union store that could facilitate a cleanup in remotefilelog? Differential Revision: https://phab.mercurial-scm.org/D5519
Tue, 04 Dec 2018 11:22:31 -0800 perfrevlogwrite: use progress helper on modern hg
Martin von Zweigbergk <martinvonz@google.com> [Tue, 04 Dec 2018 11:22:31 -0800] rev 41156
perfrevlogwrite: use progress helper on modern hg Differential Revision: https://phab.mercurial-scm.org/D5372
Tue, 08 Jan 2019 14:19:51 -0800 merge: make local file storage in the .hg/merge directory extensible
Daniel Ploch <dploch@google.com> [Tue, 08 Jan 2019 14:19:51 -0800] rev 41155
merge: make local file storage in the .hg/merge directory extensible This is similar to remotefilelog's 'getlocalkey' method, which must be overridden by systems which rely on full path names for access control purposes. Differential Revision: https://phab.mercurial-scm.org/D5534
Tue, 08 Jan 2019 14:31:22 -0800 context: schedule file prefetch before comparing for cleanliness
Kyle Lippincott <spectral@google.com> [Tue, 08 Jan 2019 14:31:22 -0800] rev 41154
context: schedule file prefetch before comparing for cleanliness When using a system like remotefilelog, we can occasionally run into scenarios where the local content cache does not have the data we need to perform these comparisons. These will be fetched on-demand, but individually; if the remotefilelog server isn't extremely low latency, the runtime of the command becomes dominated by the multiple getfile requests for individual files. By performing the prefetch, we can download these files in bulk, and save server resources and many network roundtrips. Differential Revision: https://phab.mercurial-scm.org/D5532
Wed, 12 Dec 2018 16:26:58 +0300 manifest: convert a recursive function to iterative one using stacks
Pulkit Goyal <pulkit@yandex-team.ru> [Wed, 12 Dec 2018 16:26:58 +0300] rev 41153
manifest: convert a recursive function to iterative one using stacks I am debugging a memory issue from yesterday where `hg update` goes upto taking 22GB of memory on our internal treemanifest repository. This is an interesting function and I saw memory consumption increasing while this function was running. It's sometimes hard to understand a recursive function and also the profile won't show you actual operations which took time, rather it will show you the function again and again in profile. I am yet to notice any memory consumption decrease with this patch, but I believe this will help like in making this a generator. Differential Revision: https://phab.mercurial-scm.org/D5413
Sun, 23 Dec 2018 02:01:35 +0530 obsutil: fix the issue5686
Sushil khanchi <sushilkhanchi97@gmail.com> [Sun, 23 Dec 2018 02:01:35 +0530] rev 41152
obsutil: fix the issue5686 While traversing the obsolescence graph to find the successors sets of csets: In its 4th case (read comments of obsutil.successorssets to see all 4 cases) where we know successors sets of all direct successors of CURRENT, we were just missing a condition to filter out the case when a cset is pruned. And without this condition (that this patch added) it was making a whole successor set to [] just because of one pruned marker. For e.g:if following is the successors set of a cset A: A -> [a, b, c] if we prune c, we expect A's successors set to be [a, b] but you would get: A -> [] So this patch make sure that we calculate the right successorsset of csets considering the pruned cset (in split case). Differential Revision: https://phab.mercurial-scm.org/D5474
Sun, 06 Jan 2019 09:34:41 +0530 histedit: add user input to warning message on editing tagged commits
Navaneeth Suresh <navaneeths1998@gmail.com> [Sun, 06 Jan 2019 09:34:41 +0530] rev 41151
histedit: add user input to warning message on editing tagged commits This is a follow-up patch to D5489. Now, the user will be able to input yes/no(default) on the warning message. Initially, it was the sleep of 1s and histedit window opens. Changes were made as suggested by @mharbison72 and @yuja. Differential Revision: https://phab.mercurial-scm.org/D5494
Mon, 24 Dec 2018 16:04:52 +0300 sparse: fix debugrebuilddirsate when narrow extension is enabled
Pulkit Goyal <pulkit@yandex-team.ru> [Mon, 24 Dec 2018 16:04:52 +0300] rev 41150
sparse: fix debugrebuilddirsate when narrow extension is enabled dirstate wrapping in narrow extension converts the manifest object to a list. So let's assume we get a list of files in sparse extension. Differential Revision: https://phab.mercurial-scm.org/D5481
Mon, 24 Dec 2018 15:57:54 +0300 tests: show that debugrebuilddirstate is broken with narrow+sparse
Pulkit Goyal <pulkit@yandex-team.ru> [Mon, 24 Dec 2018 15:57:54 +0300] rev 41149
tests: show that debugrebuilddirstate is broken with narrow+sparse This adds a test to show that debugrebuildirstate is broken when both narrow and sparse extensions are enabled. Differential Revision: https://phab.mercurial-scm.org/D5480
Mon, 24 Dec 2018 15:30:39 +0300 sparse: don't enable on clone if it was a narrow clone
Pulkit Goyal <pulkit@yandex-team.ru> [Mon, 24 Dec 2018 15:30:39 +0300] rev 41148
sparse: don't enable on clone if it was a narrow clone When both sparse and narrow extensions are enabled and we do a narrow clone, sparse enables itself because it reads --include flag and thinks that user is trying to do a sparse clone. This patch changes that behavior, and now if both extensions are enabled and user passes `--narrow`, then the includes and excludes won't be considered as part of sparse profile. Differential Revision: https://phab.mercurial-scm.org/D5479
Mon, 24 Dec 2018 15:01:47 +0300 tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru> [Mon, 24 Dec 2018 15:01:47 +0300] rev 41147
tests: add tests for narrow clone when both sparse and narrow are enabled This patch adds tests for doing a narrow clone when client has both sparse and narrow enabled. As shown by this patch, we can see that the narrow clone has sparse enabled which we does not want here. Upcoming patch will fix this. Also while writing tests, I realized we don't have a flag to list the current sparse profile. Differential Revision: https://phab.mercurial-scm.org/D5478
Tue, 08 Jan 2019 00:30:30 -0800 progress: check what type of progress bar to use only once per topic
Martin von Zweigbergk <martinvonz@google.com> [Tue, 08 Jan 2019 00:30:30 -0800] rev 41146
progress: check what type of progress bar to use only once per topic This seems to have sped up `hg perfprogress` from 1.78 s to 1.41 s. Differential Revision: https://phab.mercurial-scm.org/D5530
Tue, 08 Jan 2019 00:17:41 -0800 progress: split up _print() method in bar-updating and debug-printing
Martin von Zweigbergk <martinvonz@google.com> [Tue, 08 Jan 2019 00:17:41 -0800] rev 41145
progress: split up _print() method in bar-updating and debug-printing I just thought this was clearer, but it turned out to also simplify the next patch. This seems to have sped up `hg perfprogress` from 1.85 s to 1.78 s. Differential Revision: https://phab.mercurial-scm.org/D5529
Tue, 08 Jan 2019 00:12:08 -0800 progress: move cached debug flag from progress.progbar to scmutil.progress
Martin von Zweigbergk <martinvonz@google.com> [Tue, 08 Jan 2019 00:12:08 -0800] rev 41144
progress: move cached debug flag from progress.progbar to scmutil.progress It's simpler this way. One possible drawback (and a possisble advantage) is that we now check the debug flag once per topic, so processes that generate new topics all the time will still check the flag frequently. Differential Revision: https://phab.mercurial-scm.org/D5528
Mon, 07 Jan 2019 23:55:26 -0800 progress: write ui.progress() in terms of ui.makeprogress()
Martin von Zweigbergk <martinvonz@google.com> [Mon, 07 Jan 2019 23:55:26 -0800] rev 41143
progress: write ui.progress() in terms of ui.makeprogress() I think ui.makeprogress() should be the preferred interface and we should deprecate ui.progress(). All in-core callers already use ui.makeprogress(). Moving the logic to the scmutil.progress() will let us make further improvements. This seems to have sped up `hg perfprogress` from 1.92 s to 1.85 s, perhaps because we now skip the indirection of updating the progress bar via ui.progress(). Differential Revision: https://phab.mercurial-scm.org/D5527
Tue, 08 Jan 2019 22:07:47 -0800 testrunner: avoid capturing a regex group we don't care about
Martin von Zweigbergk <martinvonz@google.com> [Tue, 08 Jan 2019 22:07:47 -0800] rev 41142
testrunner: avoid capturing a regex group we don't care about Differential Revision: https://phab.mercurial-scm.org/D5536
Tue, 08 Jan 2019 14:48:05 -0800 remotefilelog: add newlines to ui.log() invocations
Kyle Lippincott <spectral@google.com> [Tue, 08 Jan 2019 14:48:05 -0800] rev 41141
remotefilelog: add newlines to ui.log() invocations The comment at the top of ui.log() says that the message should be a newline-terminated string. When using the blackbox logger, if the string does not end in a newline, the appearance in the file gets quite messy. This sometimes leaves a string with just the newline as the message, these are logged by the blackbox logger just fine. I don't know what other loggers do when logging structured data and a message that is just the newline. Differential Revision: https://phab.mercurial-scm.org/D5533
Tue, 08 Jan 2019 10:31:10 -0500 xdiff: don't attempt to use fuzzer inputs larger than 100k
Augie Fackler <augie@google.com> [Tue, 08 Jan 2019 10:31:10 -0500] rev 41140
xdiff: don't attempt to use fuzzer inputs larger than 100k This is the recommended approach from [0], and limiting the input was suggested in https://github.com/google/oss-fuzz/issues/2076 when discussing our broken coverage build. 0: https://github.com/google/oss-fuzz/blob/master/docs/new_project_guide.md#custom-libfuzzer-options-for-clusterfuzz Differential Revision: https://phab.mercurial-scm.org/D5525
Tue, 08 Jan 2019 17:52:39 -0800 tests: support passing testcase after .t paths that have path separators
Kyle Lippincott <spectral@google.com> [Tue, 08 Jan 2019 17:52:39 -0800] rev 41139
tests: support passing testcase after .t paths that have path separators This probably could have been implemented by changing the regex above this bit of code, but I wasn't sure if it would end up handling various OSes correctly, so I decided to go with this version instead. Previously: $ tests/run-tests.py tests/test-ssh.t -l running 2 tests using 2 parallel processes .. # Ran 2 tests, 0 skipped, 0 failed. $ tests/run-tests.py tests/test-ssh.t#sshv1 -l running 0 tests using 0 parallel processes # Ran 0 tests, 0 skipped, 0 failed. Now: $ tests/run-tests.py tests/test-ssh.t -l running 2 tests using 2 parallel processes .. # Ran 2 tests, 0 skipped, 0 failed. $ tests/run-tests.py tests/test-ssh.t#sshv1 -l running 1 tests using 1 parallel processes . # Ran 1 tests, 0 skipped, 0 failed. Differential Revision: https://phab.mercurial-scm.org/D5535
Tue, 08 Jan 2019 09:43:24 -0800 progress: document progress.debug config option
Martin von Zweigbergk <martinvonz@google.com> [Tue, 08 Jan 2019 09:43:24 -0800] rev 41138
progress: document progress.debug config option I think it was not spotted by test-check-config.t that we had not documented it because no caller refers to the ui object simply as "ui" (it was either "self.ui" or just "self"). Differential Revision: https://phab.mercurial-scm.org/D5526
Mon, 07 Jan 2019 18:37:50 -0500 tests: migrate test-wireproto-serverreactor.py to our internal CBOR
Augie Fackler <augie@google.com> [Mon, 07 Jan 2019 18:37:50 -0500] rev 41137
tests: migrate test-wireproto-serverreactor.py to our internal CBOR This leaves the only client of thirdparty.cbor as test-cbor.py, which appears to be testing the behavior of cborutil against cbor. We should figure out some appropriate test strings and drop thirdparty.cbor, but that's a mission for another day. Differential Revision: https://phab.mercurial-scm.org/D5522
Mon, 07 Jan 2019 16:34:04 -0500 state: update comment about use of CBOR
Augie Fackler <augie@google.com> [Mon, 07 Jan 2019 16:34:04 -0500] rev 41136
state: update comment about use of CBOR We use our internal cbor library, not the vendored one in thirdparty. Differential Revision: https://phab.mercurial-scm.org/D5518
Wed, 19 Dec 2018 22:24:20 +0900 rust-ancestors: adjust branches and inline comments per previous change
Yuya Nishihara <yuya@tcha.org> [Wed, 19 Dec 2018 22:24:20 +0900] rev 41135
rust-ancestors: adjust branches and inline comments per previous change Now the top-level "if" can be read as both_visit|revs_visit|bases_visit.
Wed, 19 Dec 2018 21:52:40 +0900 rust-ancestors: remove unreachable conditions from missing_ancestors()
Yuya Nishihara <yuya@tcha.org> [Wed, 19 Dec 2018 21:52:40 +0900] rev 41134
rust-ancestors: remove unreachable conditions from missing_ancestors()
Wed, 19 Dec 2018 21:51:08 +0900 rust-ancestors: duplicate loop that visits parents of revs/bases
Yuya Nishihara <yuya@tcha.org> [Wed, 19 Dec 2018 21:51:08 +0900] rev 41133
rust-ancestors: duplicate loop that visits parents of revs/bases As the inline comment says, it can't be cleanly implemented in Rust. It's better to duplicate the code instead of inserting "if"s. The loop will be cleaned up by future commits.
Wed, 19 Dec 2018 21:42:06 +0900 rust-ancestors: adjust indent level to make next change easier to follow
Yuya Nishihara <yuya@tcha.org> [Wed, 19 Dec 2018 21:42:06 +0900] rev 41132
rust-ancestors: adjust indent level to make next change easier to follow
Sun, 06 Jan 2019 11:29:44 +0900 rust-cpython: remove invalid __package__ attribute
Yuya Nishihara <yuya@tcha.org> [Sun, 06 Jan 2019 11:29:44 +0900] rev 41131
rust-cpython: remove invalid __package__ attribute Since mercurial.rustext is a package, its __package__ should be, if set, "mercurial.rustext". AFAIK, we don't have to set this attribute manually as the rustext module will be imported by the system importer. https://stackoverflow.com/a/21233334/10435339
Mon, 07 Jan 2019 19:03:23 -0500 merge with stable
Augie Fackler <augie@google.com> [Mon, 07 Jan 2019 19:03:23 -0500] rev 41130
merge with stable
Mon, 07 Jan 2019 15:25:41 -0800 tests: use more portable flags in test-fix.t
Danny Hooper <hooper@google.com> [Mon, 07 Jan 2019 15:25:41 -0800] rev 41129
tests: use more portable flags in test-fix.t `head --lines N` is known to not exist on OSX. Differential Revision: https://phab.mercurial-scm.org/D5517
Mon, 07 Jan 2019 21:43:06 +0900 amend: add -D/--currentdate option
Yuya Nishihara <yuya@tcha.org> [Mon, 07 Jan 2019 21:43:06 +0900] rev 41128
amend: add -D/--currentdate option It bumps the date field even if there's no other change. The help text is copied from commands.graft(). Unlike graft, --date with --currentdate is disallowed, which I think is saner behavior.
Mon, 07 Jan 2019 21:39:35 +0900 amend: add boolean to ignore date-only change
Yuya Nishihara <yuya@tcha.org> [Mon, 07 Jan 2019 21:39:35 +0900] rev 41127
amend: add boolean to ignore date-only change I want to add -D/--currentdate option, which should behave slightly different from the update-timestamp option.
Mon, 07 Jan 2019 21:29:58 +0900 amend: refactor commit date handling
Yuya Nishihara <yuya@tcha.org> [Mon, 07 Jan 2019 21:29:58 +0900] rev 41126
amend: refactor commit date handling There's no need to parse a date tuple. Just do it for user option.
Mon, 07 Jan 2019 21:57:23 +0900 test-amend: remove uninteresting fields from log output to deduplicate tests
Yuya Nishihara <yuya@tcha.org> [Mon, 07 Jan 2019 21:57:23 +0900] rev 41125
test-amend: remove uninteresting fields from log output to deduplicate tests We aren't testing the behavior of obsolescence-based amend.
Wed, 26 Dec 2018 17:36:53 +0300 pull: use opts.get('bookmark') instead of opts['bookmark']
Pulkit Goyal <pulkit@yandex-team.ru> [Wed, 26 Dec 2018 17:36:53 +0300] rev 41124
pull: use opts.get('bookmark') instead of opts['bookmark'] This is done because at places in hgsubversion, we call the function directly. I expect there might be more instances in extensions out there which calls commands.push() directly. So let's not require explicitly passing of bookmark value. The use of opts['bookmark'] was introduced in bad05a6afdc89cc58a2af320698ab29bd8de62d4. Differential Revision: https://phab.mercurial-scm.org/D5484
Fri, 04 Jan 2019 20:27:17 +0530 amend: add config option to update time to current in hg amend (issue5828)
Taapas Agrawal <taapas2897@gmail.com> [Fri, 04 Jan 2019 20:27:17 +0530] rev 41123
amend: add config option to update time to current in hg amend (issue5828) The given config option i.e. `rewrite.update-timestamp` updates date to current when //True//. However when only date is to be updated to current with the working directory clean and no other attributes changing then it does not amend as stated in issue 5828. Further when `--date` flag is specified along with the new config option then `--date` is given priority over the config option. Differential Revision: https://phab.mercurial-scm.org/D5491
Sun, 06 Jan 2019 15:25:10 -0500 tests: correct version check in clientreactor test
Augie Fackler <raf@durin42.com> [Sun, 06 Jan 2019 15:25:10 -0500] rev 41122
tests: correct version check in clientreactor test Experimentally, `(3, 6, 3)` is less than `sys.version_info` on an actual Python 3.6.3 installation. Let's just check `< (3, 6, 4)` instead of `<= (3, 6, 3)` so we stop seeing this bogus failure. Differential Revision: https://phab.mercurial-scm.org/D5502
Sun, 06 Jan 2019 15:17:03 -0500 py3: buildbot spotted more passing tests
Augie Fackler <raf@durin42.com> [Sun, 06 Jan 2019 15:17:03 -0500] rev 41121
py3: buildbot spotted more passing tests Differential Revision: https://phab.mercurial-scm.org/D5501
Sun, 06 Jan 2019 15:15:35 -0500 tests: add lots of b prefix goo to test-fastannotate-revmap.py
Augie Fackler <raf@durin42.com> [Sun, 06 Jan 2019 15:15:35 -0500] rev 41120
tests: add lots of b prefix goo to test-fastannotate-revmap.py All the paths are now bytes, so now things work correctly. # skip-blame just bytes/str issues in this test Differential Revision: https://phab.mercurial-scm.org/D5500
Sun, 06 Jan 2019 15:14:53 -0500 fastannotate: add a missing b prefix
Augie Fackler <raf@durin42.com> [Sun, 06 Jan 2019 15:14:53 -0500] rev 41119
fastannotate: add a missing b prefix Spotted while debugging a test failure, but this wasn't the problem. # skip-blame b prefix Differential Revision: https://phab.mercurial-scm.org/D5499
Thu, 06 Dec 2018 20:04:35 +0100 rust-cpython: using the new bindings from Python
Georges Racinet <gracinet@anybox.fr> [Thu, 06 Dec 2018 20:04:35 +0100] rev 41118
rust-cpython: using the new bindings from Python The Python callers detect if we have cpython or direct-ffi bindings and fallback to the Python implementation if none is present. This intermediate state allows to compare the three possibilities. Differential Revision: https://phab.mercurial-scm.org/D5442
Thu, 13 Dec 2018 18:53:40 +0100 rust-cpython: binding for LazyAncestors
Georges Racinet <gracinet@anybox.fr> [Thu, 13 Dec 2018 18:53:40 +0100] rev 41117
rust-cpython: binding for LazyAncestors The `mercurial.rustext.ancestor` module will not in the foreseeable future be a drop-in replacement for the pure `mercurial.ancestor`, because the Rust variants take the index at instantiation whereas the Python ones take a parents function. From the Python side, using the index from `ancestor` would leak internal details out of `mercurial.revlog`, and that's unwanted. Therefore, given that classes defined in `rust-cpython` have the same names in both language, we keep the Rust naming convention (CamelCase). Eventually, though, the ancestor module can be placed under control of `mercurial.policy`, but it will still be up to `revlog` to be aware of that and play the role of a factory for instantiation. Differential Revision: https://phab.mercurial-scm.org/D5441
Fri, 28 Dec 2018 03:28:02 +0100 discovery: move common heads computation inside partialdiscovery object
Boris Feld <boris.feld@octobus.net> [Fri, 28 Dec 2018 03:28:02 +0100] rev 41116
discovery: move common heads computation inside partialdiscovery object This remove one of the private attribute access. In additions, head tracking and computation is a typical operation we can speed up using Rust.
Fri, 28 Dec 2018 03:14:34 +0100 discovery: introduce a partialdiscovery object
Boris Feld <boris.feld@octobus.net> [Fri, 28 Dec 2018 03:14:34 +0100] rev 41115
discovery: introduce a partialdiscovery object This object will ultimately gather the data about common, undecided and missing revs in a single place and deal with most graph related computations. The goal is both to clarify the algorithm and to help provides a simple and clear API that can be reimplemented in Rust. For now, we only moved the `common` set in the object. In this commit, some direct access to the "private" `disco._common` attribute persist. They have not been removed yet because we won't need to expose a full API identical to `incrementalmissingancestors` and it seems simpler to access the attribute directly until the replacement is in place.
Fri, 14 Dec 2018 12:01:15 +0100 discovery: move handling of sampling special case inside sampling function
Boris Feld <boris.feld@octobus.net> [Fri, 14 Dec 2018 12:01:15 +0100] rev 41114
discovery: move handling of sampling special case inside sampling function The handling of cases where the number of revisions to sample is smaller than the sample size can be moved with the sample function themselves. This simplifies main logic, preparing a coming refactoring.
Fri, 04 Jan 2019 17:49:59 +0100 discovery: minor fix to some conditionals
Boris Feld <boris.feld@octobus.net> [Fri, 04 Jan 2019 17:49:59 +0100] rev 41113
discovery: minor fix to some conditionals Since `size` is the upper limit of the sample, we should include it in the check. Otherwize the `more` variable will be zero and the sampling will be useless
Thu, 20 Dec 2018 10:16:24 +0100 delta: reuse _findsnapshot call from previous stage
Boris Feld <boris.feld@octobus.net> [Thu, 20 Dec 2018 10:16:24 +0100] rev 41112
delta: reuse _findsnapshot call from previous stage Two different stage of the sparse-revlog logic needs the _findsnapshot data. To avoid recomputing it twice, make it possible to reuse the first computation in the second step. example affected manifest write before: 0.067141s after: 0.064252s (-5%) (total gain since start of series: 95%)
Thu, 20 Dec 2018 10:15:20 +0100 delta: have a native implementation of _findsnapshot
Boris Feld <boris.feld@octobus.net> [Thu, 20 Dec 2018 10:15:20 +0100] rev 41111
delta: have a native implementation of _findsnapshot The function might traverse a lot of revision, a native implementation get significantly faster. example affected manifest write before: 0.114989 after: 0.067141 (-42%)
Sun, 23 Dec 2018 12:39:20 +0900 transaction: do not overwrite atomic-temp files on error
Yuya Nishihara <yuya@tcha.org> [Sun, 23 Dec 2018 12:39:20 +0900] rev 41110
transaction: do not overwrite atomic-temp files on error Even though the original files can be restored from the backup, it should be better to not write back a temporary file if we know it can be corrupted.
Thu, 03 Jan 2019 10:13:34 -0800 help: fix typo
Ludovic Chabant <ludovic@chabant.com> [Thu, 03 Jan 2019 10:13:34 -0800] rev 41109
help: fix typo
Tue, 18 Dec 2018 22:23:48 +0900 rust: use 'impl Trait' in method argument of AncestorsIterator
Yuya Nishihara <yuya@tcha.org> [Tue, 18 Dec 2018 22:23:48 +0900] rev 41108
rust: use 'impl Trait' in method argument of AncestorsIterator I just didn't know it's stabilized. Let's switch to new convenient syntax. Differential Revision: https://phab.mercurial-scm.org/D5451
Tue, 18 Dec 2018 22:12:16 +0900 rust: use .rev() for reverse range
Yuya Nishihara <yuya@tcha.org> [Tue, 18 Dec 2018 22:12:16 +0900] rev 41107
rust: use .rev() for reverse range Differential Revision: https://phab.mercurial-scm.org/D5450
Fri, 04 Jan 2019 00:00:44 +0530 histedit: add warning message on editing tagged commits (issue4017)
Navaneeth Suresh <navaneeths1998@gmail.com> [Fri, 04 Jan 2019 00:00:44 +0530] rev 41106
histedit: add warning message on editing tagged commits (issue4017) Differential Revision: https://phab.mercurial-scm.org/D5489
Wed, 02 Jan 2019 05:12:07 +0100 strip: extract bookmark movement into a separate function
Boris Feld <boris.feld@octobus.net> [Wed, 02 Jan 2019 05:12:07 +0100] rev 41105
strip: extract bookmark movement into a separate function We will need it for the soft-strip case.
Wed, 02 Jan 2019 05:07:03 +0100 strip: compute bookmark target only if we have bookmark to move
Boris Feld <boris.feld@octobus.net> [Wed, 02 Jan 2019 05:07:03 +0100] rev 41104
strip: compute bookmark target only if we have bookmark to move This is a small change that seems to make sense.
Wed, 02 Jan 2019 05:01:15 +0100 strip: extract code to create strip backup
Boris Feld <boris.feld@octobus.net> [Wed, 02 Jan 2019 05:01:15 +0100] rev 41103
strip: extract code to create strip backup We will reuse this for soft stripping.
Wed, 02 Jan 2019 04:57:47 +0100 strip: clarify comment around bundle create
Boris Feld <boris.feld@octobus.net> [Wed, 02 Jan 2019 04:57:47 +0100] rev 41102
strip: clarify comment around bundle create We may create two bundles, one for the changeset actually stripped, and one for the changeset affected by the strip we want to keep. (Changesets with a higher rev number than the striped ones). For soft stripping, we still need to the first one (used for "restoring" the changesets), but not the second one. We start with clarifying which bits of the code is used for what.
Wed, 02 Jan 2019 05:02:25 +0100 strip: move attributes shortcut assigned earlier
Boris Feld <boris.feld@octobus.net> [Wed, 02 Jan 2019 05:02:25 +0100] rev 41101
strip: move attributes shortcut assigned earlier This series will add support for "soft" stripping using the archived phase in addition to the usual heavy weight revlog stripping. First, we need to refactor the strip function to extract logic common to the "soft-strip" case. We are about to extract bits of the strip function into separate functions. Those blocks of code contain variables for frequently accessed attributes. We move those variables outside of the soon to be moved blocks.
Thu, 27 Dec 2018 17:16:40 +0530 log: fix line wrap on diffstat with -G/--graph (issue5800)
Navaneeth Suresh <navaneeths1998@gmail.com> [Thu, 27 Dec 2018 17:16:40 +0530] rev 41100
log: fix line wrap on diffstat with -G/--graph (issue5800) Differential Revision: https://phab.mercurial-scm.org/D5485
Wed, 02 Jan 2019 21:49:40 -0500 registrar: minor cleanup to the merge function
Matt Harbison <matt_harbison@yahoo.com> [Wed, 02 Jan 2019 21:49:40 -0500] rev 41099
registrar: minor cleanup to the merge function Pointed out by Yuya.
Wed, 02 Jan 2019 10:31:14 +0100 vfs: raise NotImplementedError in abstractvfs._auditvfs
Boris Feld <boris.feld@octobus.net> [Wed, 02 Jan 2019 10:31:14 +0100] rev 41098
vfs: raise NotImplementedError in abstractvfs._auditvfs This make sure that auditing is implemented.
Wed, 02 Jan 2019 10:29:36 +0100 vfs: handle _auditpath in proxyvfs
Boris Feld <boris.feld@octobus.net> [Wed, 02 Jan 2019 10:29:36 +0100] rev 41097
vfs: handle _auditpath in proxyvfs Just forward the call to the underlying vfs.
Wed, 02 Jan 2019 10:29:12 +0100 vfs: fix proxyvfs inheritance
Boris Feld <boris.feld@octobus.net> [Wed, 02 Jan 2019 10:29:12 +0100] rev 41096
vfs: fix proxyvfs inheritance The proxyvfs class is designed to overwrite some of the vfs logic. Yet, it did not use normal class inheritance. This is becoming an issue as `abstractvfs` method could take precedence over their `proxyvfs` version. We fix the inheritance chain to be as expected.
Wed, 26 Dec 2018 13:44:37 +0100 vfs: also audit rename
Boris Feld <boris.feld@octobus.net> [Wed, 26 Dec 2018 13:44:37 +0100] rev 41095
vfs: also audit rename Renaming through the vfs is not used in many places, and none of them seems to be a security risk. However, it is still worthwhile to run the auditing on rename file to perform developer-warning level checks.
Wed, 26 Dec 2018 13:44:23 +0100 vfs: add a `_auditpath` to abstract vfs
Boris Feld <boris.feld@octobus.net> [Wed, 26 Dec 2018 13:44:23 +0100] rev 41094
vfs: add a `_auditpath` to abstract vfs We are about to make `rename` audit path. Since rename lives in the `abstractvfs` layer, we need it to be aware of auditing to some extent. The default implementation is no-op because multiple existing vfs are not using auditing at all right now (eg: fncachevfs).
Sun, 02 Jul 2017 04:51:03 +0200 vfs: makes all audited path relative
Boris Feld <boris.feld@octobus.net> [Sun, 02 Jul 2017 04:51:03 +0200] rev 41093
vfs: makes all audited path relative Only auditing relative path helps the vfs warning logic.
Fri, 21 Dec 2018 13:17:58 +0100 debugupgraderepo: add a --no-backup mode
Boris Feld <boris.feld@octobus.net> [Fri, 21 Dec 2018 13:17:58 +0100] rev 41092
debugupgraderepo: add a --no-backup mode The process has been around for a while and is pretty safe now. Having an automated way to clean up the old data is useful when running many different conversion to compare delta algorithm.
Fri, 13 Jul 2018 03:05:30 +0200 upgrade: add '-' in optimization name
Boris Feld <boris.feld@octobus.net> [Fri, 13 Jul 2018 03:05:30 +0200] rev 41091
upgrade: add '-' in optimization name The older name `redeltaall` was hard to type and read. The newer form should be more user-friendly. We keep backward compatibility with the old form (at least for a while). Having to use different form depending on the version is very impractical and error prone.
Fri, 21 Dec 2018 05:27:30 +0100 revlog: add test case for _findsnapshots
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.
Fri, 21 Dec 2018 05:27:38 +0100 revlog: use the native implementation of issnapshot
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%)
Mon, 17 Dec 2018 10:57:13 +0100 revlog: add a native implementation of issnapshot
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
Mon, 17 Dec 2018 10:51:36 +0100 revlog: more efficient implementation for issnapshot
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%)
Sun, 30 Dec 2018 16:14:42 +0100 revlog: clarify the non sparse-revlog case in `issnapshot`
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.
Sun, 30 Dec 2018 22:46:54 -0500 exthelper: switch to using the registrar merging method
Matt Harbison <matt_harbison@yahoo.com> [Sun, 30 Dec 2018 22:46:54 -0500] rev 41085
exthelper: switch to using the registrar merging method
Sun, 30 Dec 2018 21:52:26 -0500 registrar: add a method to merge registrar instances
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.
Sat, 29 Dec 2018 01:51:02 -0500 phabricator: ensure that the return of urlopener.open() is closed
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.
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 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.
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 41081
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 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
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 41079
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 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.
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 41077
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 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.
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 41075
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 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.
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 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.
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 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.
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 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.
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 41070
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 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
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 41068
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 41067
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 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
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 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.
(0) -30000 -10000 -3000 -1000 -120 +120 +1000 +3000 +10000 tip