Thu, 08 Jun 2017 20:28:13 -0700 repoview: remove special casing of "requirements"
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 08 Jun 2017 20:28:13 -0700] rev 32739
repoview: remove special casing of "requirements" At the time this code was introduced (3a6ddacb7198), the inline comment was true. This changed in e3a928bd1cd4. The proxy is no longer needed.
Wed, 07 Jun 2017 19:32:16 +0100 bookmarks: move variable initialization earlier
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 07 Jun 2017 19:32:16 +0100] rev 32738
bookmarks: move variable initialization earlier Since we no longer set '_clean = False' during the initialization loop, we can move the attribute assignment earlier in the function for clarity. (no speed improvement expected or measured ;-) )
Wed, 07 Jun 2017 19:13:09 +0100 bookmarks: directly use base dict 'setitem'
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 07 Jun 2017 19:13:09 +0100] rev 32737
bookmarks: directly use base dict 'setitem' The bmstore '__setitem__' method is setting an extra flag that is not needed during initialization. Skipping the method will allow further cleanup and yield some speedup as a side effect. Before: ! wall 0.009120 comb 0.010000 user 0.010000 sys 0.000000 (best of 312) After: ! wall 0.007874 comb 0.010000 user 0.010000 sys 0.000000 (best of 360)
Wed, 07 Jun 2017 19:22:39 +0100 bookmarks: rely on exception for malformed lines
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 07 Jun 2017 19:22:39 +0100] rev 32736
bookmarks: rely on exception for malformed lines Since we already have an exception context open, for other thing, we can simplify the code a bit and rely on exception handling for invalid lines. Speed is not the main motivation for this changes. However as I'm in the middle of benchmarking things we can see a small positive impact. Before: ! wall 0.009358 comb 0.000000 user 0.000000 sys 0.000000 (best of 303) After: ! wall 0.009173 comb 0.010000 user 0.010000 sys 0.000000 (best of 310)
Wed, 07 Jun 2017 22:26:43 +0100 bookmarks: explicitly convert to 'node' during initialization
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 07 Jun 2017 22:26:43 +0100] rev 32735
bookmarks: explicitly convert to 'node' during initialization We know the content of the file is supposed to be full hex. So we can do the translation ourselves and directly check if the node is known. As nice side effect we now have proper error handling for invalid node value. Before: ! wall 0.021580 comb 0.020000 user 0.020000 sys 0.000000 (best of 134) After: ! wall 0.009342 comb 0.010000 user 0.010000 sys 0.000000 (best of 302)
Wed, 07 Jun 2017 19:21:02 +0100 bookmarks: prefetch 'lookup' outside of the loop
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 07 Jun 2017 19:21:02 +0100] rev 32734
bookmarks: prefetch 'lookup' outside of the loop Skipping the attribute lookup up raise a significant speedup. Example on a repository with about 4000 bookmarks. Before: ! wall 0.026027 comb 0.020000 user 0.020000 sys 0.000000 (best of 112) After: ! wall 0.021580 comb 0.020000 user 0.020000 sys 0.000000 (best of 134) (This is also in its own changeset to clarify the perf win from another coming changesets)
Wed, 07 Jun 2017 18:22:11 +0100 perf: add a perfbookmarks command
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 07 Jun 2017 18:22:11 +0100] rev 32733
perf: add a perfbookmarks command A new command dedicated to benchmark of bookmark initialization.
Tue, 23 May 2017 02:27:41 +0200 perfphases: add a flag to also include file access time
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 23 May 2017 02:27:41 +0200] rev 32732
perfphases: add a flag to also include file access time The flag purges all phases data so we'll have to read the file from disk again.
Wed, 07 Jun 2017 17:31:30 +0100 perf: have a generic "clearstorecache" function
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 07 Jun 2017 17:31:30 +0100] rev 32731
perf: have a generic "clearstorecache" function There are multiple places where we will want to purge some store cache. So we promote the existing _clearobsstore function to a something reusable.
Thu, 08 Jun 2017 23:23:37 -0700 localrepo: move filtername to __init__
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 08 Jun 2017 23:23:37 -0700] rev 32730
localrepo: move filtername to __init__ This is obviously an instance attribute, not a type attribute. The modern Python style is to use __init__ for defining these. This exposes statichttprepo as inheriting from localrepository without calling its __init__. As a result, its __init__ defines a lot of variables that methods on localrepository's methods need. But factoring the common bits into a separate class is for another day.
Thu, 08 Jun 2017 21:54:30 -0700 obsolete: move obsstore creation logic from localrepo
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 08 Jun 2017 21:54:30 -0700] rev 32729
obsolete: move obsstore creation logic from localrepo This code has more to do with obsolete.py than localrepo.py. Let's move it there.
Thu, 08 Jun 2017 22:18:17 -0700 match: allow pats to be None
Martin von Zweigbergk <martinvonz@google.com> [Thu, 08 Jun 2017 22:18:17 -0700] rev 32728
match: allow pats to be None match.match already interprets "!bool(patterns)" as matching everything (but includes and excludes still apply). We might as well allow None, which lets us simplify some callers a bit. I originally wrote this patch while trying to change match.match(patterns=[]) to mean to match no patterns. This patch is one step towards that goal. I'm not sure it'll be worth the effort to go all the way there, but I think this patch still makes sense on its own.
Tue, 06 Jun 2017 11:16:38 -0400 tests: add a test for installing hg with pip in a virtualenv
Augie Fackler <augie@google.com> [Tue, 06 Jun 2017 11:16:38 -0400] rev 32727
tests: add a test for installing hg with pip in a virtualenv Since we're doing so much clever junk in our setup.py, let's have a test that exercises it. Thanks to Matt Harbison for testing this on Windows and verifying that installenv/*/hg would work as a way to work around bin being called Scripts on Windows.
Tue, 06 Jun 2017 11:16:10 -0400 hghave: add check for virtualenv
Augie Fackler <augie@google.com> [Tue, 06 Jun 2017 11:16:10 -0400] rev 32726
hghave: add check for virtualenv
Tue, 06 Jun 2017 11:02:30 -0400 setup: introduce dummy copies of setuptools flags
Augie Fackler <augie@google.com> [Tue, 06 Jun 2017 11:02:30 -0400] rev 32725
setup: introduce dummy copies of setuptools flags Since we're filtering out some egg gunk, we need to emulate these flags which disable eggs so that pip still works.
Tue, 06 Jun 2017 10:09:48 -0400 extensions: catch uisetup and extsetup failures and don't let them break hg
Augie Fackler <augie@google.com> [Tue, 06 Jun 2017 10:09:48 -0400] rev 32724
extensions: catch uisetup and extsetup failures and don't let them break hg Otherwise users of the patience diff extension will be unable to run anything at all in hg 4.3 until they figure out what's broken.
Tue, 06 Jun 2017 10:03:16 -0400 tests: add test demonstrating how broken third-party extensions can get
Augie Fackler <augie@google.com> [Tue, 06 Jun 2017 10:03:16 -0400] rev 32723
tests: add test demonstrating how broken third-party extensions can get I intend to fix this, but will do the fix as a separate change to make the behavior change obvious. This was inspired by some users having the patience diff extension, which broke when we moved bdiff.so so thoroughly the users can't even run 'hg debuginstall'.
Thu, 08 Jun 2017 10:44:53 -0400 extensions: move wrapfilecache function from fsmonitor
Augie Fackler <augie@google.com> [Thu, 08 Jun 2017 10:44:53 -0400] rev 32722
extensions: move wrapfilecache function from fsmonitor It makes more sense to put this in core, so other extensions can trivially get access to it without having to rely on importing fsmonitor.
Wed, 26 Apr 2017 16:05:22 +0200 chmod: create a new file when flags are set on a hardlinked file
Koen Van Hoof <koen.van_hoof@nokia.com> [Wed, 26 Apr 2017 16:05:22 +0200] rev 32721
chmod: create a new file when flags are set on a hardlinked file For performance reasons we have several repositories where the files in the working directory of 1 repo are hardlinks to the files of the other repo When an update in one repo results in a chmod of a such a file, the hardlink has to be deleted and replaced by a regular file to make sure that the change does not happen in the other repo
Wed, 07 Jun 2017 21:17:24 -0700 run-tests: make --restart work with output dir
Siddharth Agarwal <sid0@fb.com> [Wed, 07 Jun 2017 21:17:24 -0700] rev 32720
run-tests: make --restart work with output dir
Wed, 07 Jun 2017 21:17:06 -0700 run-tests: output coverage to output dir
Siddharth Agarwal <sid0@fb.com> [Wed, 07 Jun 2017 21:17:06 -0700] rev 32719
run-tests: output coverage to output dir There do not appear to be any tests for this, and I've never used either of these options before, but this works.
Wed, 07 Jun 2017 20:46:43 -0700 run-tests: write JSON reports to output dir
Siddharth Agarwal <sid0@fb.com> [Wed, 07 Jun 2017 20:46:43 -0700] rev 32718
run-tests: write JSON reports to output dir
Wed, 07 Jun 2017 20:32:11 -0700 run-tests: write test times to output dir
Siddharth Agarwal <sid0@fb.com> [Wed, 07 Jun 2017 20:32:11 -0700] rev 32717
run-tests: write test times to output dir
Wed, 07 Jun 2017 20:30:08 -0700 run-tests: allow specifying an output dir to write .errs to
Siddharth Agarwal <sid0@fb.com> [Wed, 07 Jun 2017 20:30:08 -0700] rev 32716
run-tests: allow specifying an output dir to write .errs to I'm trying to use run-tests.py on a read-only file system. This series allows that to happen.
Wed, 07 Jun 2017 15:47:06 -0700 run-tests: add information about skipped tests to XUnit output
Siddharth Agarwal <sid0@fb.com> [Wed, 07 Jun 2017 15:47:06 -0700] rev 32715
run-tests: add information about skipped tests to XUnit output The XUnit spec supports skipped tests.
Wed, 07 Jun 2017 15:47:06 -0700 run-tests: wrap failures in an XUnit 'failure' element
Siddharth Agarwal <sid0@fb.com> [Wed, 07 Jun 2017 15:47:06 -0700] rev 32714
run-tests: wrap failures in an XUnit 'failure' element This is closer to what most XUnit consumers can understand.
Wed, 07 Jun 2017 10:44:11 +0100 discovery: log discovery result in non-trivial cases
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 07 Jun 2017 10:44:11 +0100] rev 32713
discovery: log discovery result in non-trivial cases We log the discovery summary, the number of roundtrips and the elapsed time. This is useful to understand where slow push might come from when lloking at the blackbox.
Wed, 07 Jun 2017 10:29:39 +0100 discovery: include timing in the debug output
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 07 Jun 2017 10:29:39 +0100] rev 32712
discovery: include timing in the debug output Having such date easily available is useful. It also prepare the inclusion of some discovery related data in blackbox.
Sun, 28 May 2017 21:33:33 -0400 tests: remove sys.executable from "required tools"
Augie Fackler <raf@durin42.com> [Sun, 28 May 2017 21:33:33 -0400] rev 32711
tests: remove sys.executable from "required tools" In practice this doesn't appear to have been true for some time - we reference Python using the $PYTHON variable in all the tests now (which we have to for PyPy and Python 3), and I've been using ~/.../python.exe to test with tip of the cpython 3.6 release branch while working on manifest tests in Python 3 and everything seems to be just fine. The only real observable difference from this change is that I stop getting a warning about python.exe not being a thing on $PATH, which seems like an improvement.
Mon, 05 Jun 2017 16:24:01 +0100 perfbranchmap: add an option to purge the revbranch cache
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 05 Jun 2017 16:24:01 +0100] rev 32710
perfbranchmap: add an option to purge the revbranch cache The perf extension needs to be able to reflect this reality too. (eg: 4s vs 60s on a Million-ish revisions repository).
Mon, 29 May 2017 05:53:58 +0200 push: add a way to allow concurrent pushes on unrelated heads
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 29 May 2017 05:53:58 +0200] rev 32709
push: add a way to allow concurrent pushes on unrelated heads Client has a mechanism for the server to check that nothing changed server side since the client prepared a push. That check is wide and any head changed on the server will lead to an aborted push. We introduce a way for the client to send a less strict checking. That logic will check that no heads impacted by the push have been affected. If other unrelated heads (including named branches heads) have been affected, the push will proceed. This is very helpful for repositories with high developers traffic on different heads, a common setup. That behavior is currently controlled by an experimental option. The config should live in the "server" section but bike-shedding of the name will happen in the next changesets. Servers advertise this capability through a new bundle2 capability 'checkeads', using the value 'related'. The 'test-push-race.t' is updated to check that new capabilities on the documented cases.
Mon, 29 May 2017 05:52:13 +0200 headsummary: expose the 'discardedheads' set in the headssummary
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 29 May 2017 05:52:13 +0200] rev 32708
headsummary: expose the 'discardedheads' set in the headssummary That information will be useful to detect push race on related part of the history. See next changeset for details.
(0) -30000 -10000 -3000 -1000 -300 -100 -50 -32 +32 +50 +100 +300 +1000 +3000 +10000 tip