Mon, 30 Apr 2018 17:28:59 -0700 hgweb: allow Content-Security-Policy header on 304 responses (issue5844) stable
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 30 Apr 2018 17:28:59 -0700] rev 37828
hgweb: allow Content-Security-Policy header on 304 responses (issue5844) A side-effect of 98baf8dea553 was that the Content-Security-Policy header was set on all HTTP responses by default. This header wasn't in our list of allowed headers for HTTP 304 responses. This would trigger a ProgrammingError when a 304 response was issued via hgwebdir. This commit adds Content-Security-Policy to the allow list of headers for 304 responses so we no longer encounter the error. Differential Revision: https://phab.mercurial-scm.org/D3436
Mon, 30 Apr 2018 17:22:20 -0700 hgweb: discard Content-Type header for 304 responses (issue5844) stable
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 30 Apr 2018 17:22:20 -0700] rev 37827
hgweb: discard Content-Type header for 304 responses (issue5844) A side-effect of 98baf8dea553 was that hgwebdir always sets a global default for the Content-Type header. HTTP 304 responses don't allow the Content-Type header. So a side-effect of this change was that HTTP 304 responses served via hgwebdir resulted in a ProgrammingError being raised. This commit teaches our 304 response issuing code to drop the Content-Type header. Differential Revision: https://phab.mercurial-scm.org/D3435
Mon, 30 Apr 2018 17:08:56 -0700 tests: add tests demonstrating ISE for HTTP 304 responses with hgwebdir stable
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 30 Apr 2018 17:08:56 -0700] rev 37826
tests: add tests demonstrating ISE for HTTP 304 responses with hgwebdir There are two separate failures here. One for the Content-Type header. Another for the Content-Security-Policy header. Differential Revision: https://phab.mercurial-scm.org/D3434
Fri, 27 Apr 2018 14:51:02 -0700 hgweb: guard against empty Content-Length header stable
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 27 Apr 2018 14:51:02 -0700] rev 37825
hgweb: guard against empty Content-Length header Discussion in issue 5860 seems to indicate this can occur. Differential Revision: https://phab.mercurial-scm.org/D3432
Thu, 26 Apr 2018 21:10:56 +0900 test-push-http: do not clear pid file stable
Yuya Nishihara <yuya@tcha.org> [Thu, 26 Apr 2018 21:10:56 +0900] rev 37824
test-push-http: do not clear pid file It's okay now, but we'll end up leaking daemon processes if we add some more.
Thu, 26 Apr 2018 21:24:13 +0900 debugcolor: fix crash by empty styles (issue5856) stable
Yuya Nishihara <yuya@tcha.org> [Thu, 26 Apr 2018 21:24:13 +0900] rev 37823
debugcolor: fix crash by empty styles (issue5856)
Wed, 25 Apr 2018 14:51:20 -0700 tests: explicitly define compression engines for tests stable
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 25 Apr 2018 14:51:20 -0700] rev 37822
tests: explicitly define compression engines for tests The zstd compression engine requires C extensions and isn't present in pure Python builds. The compression engine list leaks into the server capabilities string. Unless we're testing functionality specific to a compression format, the set of compression formats supported by a server doesn't matter much. So this commit explicitly defines the server's compression engines for some tests so behavior is consistent between pure and non-pure builds. Differential Revision: https://phab.mercurial-scm.org/D3431
Wed, 25 Apr 2018 13:18:51 -0400 tests: update no-zstd branch of test-treediscovery.t as in 330ada7e8ea5 stable
Augie Fackler <augie@google.com> [Wed, 25 Apr 2018 13:18:51 -0400] rev 37821
tests: update no-zstd branch of test-treediscovery.t as in 330ada7e8ea5 This side of the test got overlooked. We should probably consider having a way to run some of our tests through a "no-zstd" case just like we run some things through a "no-obsmarkers" case, but that's not an appropriate thing for stable. Differential Revision: https://phab.mercurial-scm.org/D3430
Wed, 25 Apr 2018 13:13:42 -0400 tests: glob away content-length changes relating to missing zstd bindings stable
Augie Fackler <augie@google.com> [Wed, 25 Apr 2018 13:13:42 -0400] rev 37820
tests: glob away content-length changes relating to missing zstd bindings This doesn't fix everything in these two tests around missing zstd: we still get some changes in the CBOR payload in ways that I think we probably shouldn't bother to glob around. Maybe we should just disable zstd support in some of these lower-level wireproto tests? Differential Revision: https://phab.mercurial-scm.org/D3429
Wed, 25 Apr 2018 09:24:07 -0700 revlog: make pure version of _partialmatch() support 40-byte hex nodeids stable
Martin von Zweigbergk <martinvonz@google.com> [Wed, 25 Apr 2018 09:24:07 -0700] rev 37819
revlog: make pure version of _partialmatch() support 40-byte hex nodeids Without this patch, test-histedit-arguments.t would fail when run with --pure. It turned out to be because the pure version of _partialmatch() does not support full 40-byte hex nodeids. When histedit's instructions include things like "pick tip", it resolves the "tip" revision early to a full nodeid (but plain hex nodeid prefixes are not resolved to full nodeids). Then the nodeid (full or not) is looked up using to a full nodeid later. This step is what fails in pure mode. It has been failing since my c4131138eadb (histedit: look up partial nodeid as partial nodeid, 2018-04-06). I haven't verified, but I suspect histedit instructions like "pick <full hex nodeid>" would have been failing before my commit too, though. The fix is trivial: change a "< 40" to "<= 40". Differential Revision: https://phab.mercurial-scm.org/D3428
Tue, 24 Apr 2018 13:55:25 -0700 hgweb: reuse body file object when hgwebdir calls hgweb (issue5851) stable
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 24 Apr 2018 13:55:25 -0700] rev 37818
hgweb: reuse body file object when hgwebdir calls hgweb (issue5851) An unintended side-effect of f0a851542a05 was that the request body file object (which uses a util.cappedreader) was constructed twice when hgwebdir called into hgweb. Since we attempt to read all remaining data from this file object when Content-Length is defined and since there were two instances of this object and the client supplied no additional data to read, this resulted in deadlock. The fix implemented in this commit is to reuse the request body file object when it is passed from hgwebdir to hgweb. A test demonstrating `hg clone` and `hg push` via hgwebdir has been added. Without this patch, the test hangs when doing `hg clone`. Surprisingly, this must mean that we have effectively no test coverage of the wire protocol when run via hgwebdir. Differential Revision: https://phab.mercurial-scm.org/D3427
Wed, 25 Apr 2018 00:26:49 +0530 remotenames: mark the extension as EXPERIMENTAL stable
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 25 Apr 2018 00:26:49 +0530] rev 37817
remotenames: mark the extension as EXPERIMENTAL I still don't feel confident about locking the behavior of all the things in the remotenames extension. Moreover the extension was introduced in this cycle only. Let's mark this extension EXPERIMENTAL for now so that we can change things especially the storage layer if required in next cycle. I will like to use cbor at storage layer too. Differential Revision: https://phab.mercurial-scm.org/D3426
Tue, 24 Apr 2018 22:47:14 -0400 tests: fix test-check-commit.t when all commits are public stable
Augie Fackler <augie@google.com> [Tue, 24 Apr 2018 22:47:14 -0400] rev 37816
tests: fix test-check-commit.t when all commits are public I'm 99% sure this is a portable use of /bin/[, and it seems to fix the issue I noticed on the buildbot on my machine.
Tue, 24 Apr 2018 21:29:00 +0900 import: fix crash on --exact check of empty commit (issue5702) stable
Yuya Nishihara <yuya@tcha.org> [Tue, 24 Apr 2018 21:29:00 +0900] rev 37815
import: fix crash on --exact check of empty commit (issue5702)
Tue, 24 Apr 2018 08:20:15 -0700 tests: mark test-check-interfaces.py as requiring a repo stable
Martin von Zweigbergk <martinvonz@google.com> [Tue, 24 Apr 2018 08:20:15 -0700] rev 37814
tests: mark test-check-interfaces.py as requiring a repo This was failing our 4.6rc1 build like this: mercurial.error.RepoError: repository /tmp/build-debs.zMTRhC/src-4.6rc1 not found Differential Revision: https://phab.mercurial-scm.org/D3425
Mon, 23 Apr 2018 19:23:18 +0100 sshpeer: reflect actual command activity one handshake stable
Boris Feld <boris.feld@octobus.net> [Mon, 23 Apr 2018 19:23:18 +0100] rev 37813
sshpeer: reflect actual command activity one handshake The output from devel-peer-request is expected to give data about request and roundtrip done to the server. Changeset a9cffd14aa04 changed some of that by grouping hello and between commands call. However, the old sequence of command was "emulated" in sshpeer. Update the sshpeer to reflect this grouping of commands and update the tests that use it.
Mon, 23 Apr 2018 23:24:53 -0400 tests: drop a useless glob in test-infinite-bundlestore.t stable
Matt Harbison <matt_harbison@yahoo.com> [Mon, 23 Apr 2018 23:24:53 -0400] rev 37812
tests: drop a useless glob in test-infinite-bundlestore.t With the previous breakage tamed, the lack of test output difference was causing the test runner to report "no result code from test" because of this glob.
Mon, 23 Apr 2018 23:22:52 -0400 infinitepush: ensure fileindex bookmarks use '/' separators (issue5840) stable
Matt Harbison <matt_harbison@yahoo.com> [Mon, 23 Apr 2018 23:22:52 -0400] rev 37811
infinitepush: ensure fileindex bookmarks use '/' separators (issue5840) After loading up with status messages, I noticed that the subsequent matcher was rejecting 'scratch\mybranch' on Windows. No bookmarks were reported back, and the tests subsequently failed. I did a search for 'match', and nothing else looks like it needs to be fixed up, but someone who understands this code should also take a look. I also tried setting `infinitepush.branchpattern=re:scratch\\.*` in library-infinitepush.sh without this change, but that didn't work. Still, should we ban '\' in these bookmarks to avoid confusion? I thought I saw code that sandwiches a pattern between 're:^' and '.*', so perhaps regex characters will need special care? I also noticed comments in externalbundlestore.{read,write} that it won't work on Windows because of opening an open file. But I don't see a test failure, so this may lack test coverage.
Sun, 22 Apr 2018 11:54:10 -0700 interfaceutil: module to stub out zope.interface stable
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 22 Apr 2018 11:54:10 -0700] rev 37810
interfaceutil: module to stub out zope.interface The startup time of `hg` increased during the 4.6 development cycle. A cause of that was importing more modules and doing more work at module import time. The import of zope.interface and the declaring of various interfaces is partially responsible for the startup time regression. Our current usage of zope.interface doesn't do much at run time: we are merely declaring interfaces and stating that certain types implement various interfaces. Core Mercurial is not (yet) using of any of zope.interface features that actually require that interface plumbing be defined. The only place we actually need the interface metadata is in test-check-interfaces.py. This commit establishes a new interfaceutil module. It exposes the subset of the zope.interface API that we currently use. By default, the APIs no-op. But if an environment variable is set, we export the real zope.interface APIs. Existing importers of zope.interface have been converted to use the new module. test-check-interfaces.py has been updated to define the environment variable so the real zope.interface is used. The net effect of this change is we stop importing 9 zope.interface.* modules and we no longer perform interface bookkeeping when registering interfaces. On my i7-6700K on Linux, a shell loop that runs `hg log -r .` 300 times on a repo with 1 commit shows a significant CPU time improvement (average of 4 runs): 4.5: 14.814s before: 19.028s after: 16.945s And with `run-tests.py -j10` (single run): 4.5: ~3100s (~51.7m) before: ~4450s (~74.2m) after: ~3980s (~66.3m) So this claws back about half of the regressions in 4.6. Differential Revision: https://phab.mercurial-scm.org/D3419
Mon, 23 Apr 2018 21:13:19 +0900 test-fix: normalize precision of mtime copied by 'cp -p' stable
Yuya Nishihara <yuya@tcha.org> [Mon, 23 Apr 2018 21:13:19 +0900] rev 37809
test-fix: normalize precision of mtime copied by 'cp -p' Appears that MSYS cp only copies mtime in seconds.
Fri, 20 Apr 2018 14:43:45 -0400 merge stable heads stable
Augie Fackler <augie@google.com> [Fri, 20 Apr 2018 14:43:45 -0400] rev 37808
merge stable heads
Fri, 20 Apr 2018 14:37:48 -0400 Added signature for changeset 1ec874717d8a stable
Augie Fackler <raf@durin42.com> [Fri, 20 Apr 2018 14:37:48 -0400] rev 37807
Added signature for changeset 1ec874717d8a
Fri, 20 Apr 2018 14:37:47 -0400 Added tag 4.6rc1 for changeset 1ec874717d8a stable
Augie Fackler <raf@durin42.com> [Fri, 20 Apr 2018 14:37:47 -0400] rev 37806
Added tag 4.6rc1 for changeset 1ec874717d8a
Fri, 20 Apr 2018 15:39:32 +0200 internals: correct capitalization of 'compression' stream level parameter stable
Kim Alvefur <zash@zash.se> [Fri, 20 Apr 2018 15:39:32 +0200] rev 37805
internals: correct capitalization of 'compression' stream level parameter
(0) -30000 -10000 -3000 -1000 -300 -100 -50 -24 +24 +50 +100 +300 +1000 +3000 +10000 tip