Tue, 30 Jun 2015 22:28:40 -0700 amend: move createmarkers evaluation earlier
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 30 Jun 2015 22:28:40 -0700] rev 25709
amend: move createmarkers evaluation earlier The value is used at multiple points in the function. Retrieving the value in the middle of the transaction scope gives the false impression that it has a single user. We move it at the start of the function to clarify this.
Tue, 30 Jun 2015 19:19:17 -0400 wireproto: correctly escape batched args and responses (issue4739)
Augie Fackler <augie@google.com> [Tue, 30 Jun 2015 19:19:17 -0400] rev 25708
wireproto: correctly escape batched args and responses (issue4739) This issue appears to be as old as wireproto batching itself: I can reproduce the failure as far back as 08ef6b5f3715 trivially by rebasing the test changes in this patch, which was back in the 1.9 era. I didn't test before that change, because prior to that the testfile has a different name and I'm lazy. Note that the test thought it was checking this case, but it actually wasn't: it put a literal ; in the arg and response for its greet command, but the mangle/unmangle step defined in the test meant that instead of "Fo, =;o" going over the wire, "Gp-!><p" went instead, which doesn't contain any special characters (those being [.=;]) and thus not exercising the escaping. The test has been updated to use pre-unmangled special characters, so the request is now "Fo+<:o", which mangles to "Gp,=;p". I have confirmed that the test fails without the adjustment to the escaping rules in wireproto.py. No existing clients of RPC batching were depending on the old behavior in any way. The only *actual* users of batchable RPCs in core were: 1) largefiles, wherein it batches up many statlfile calls. It sends hexlified hashes over the wire and gets a 0, 1, or 2 back as a response. No risk of special characters. 2) setdiscovery, which was using heads() and known(), both of which communicate via hexlified nodes. Again, no risk of special characters. Since the escaping functionality has been completely broken since it was introduced, we know that it has no users. As such, we can change the escaping mechanism without having to worry about backwards compatibility issues. For the curious, this was detected by chance: it happens that the lz4-compressed text of a test file for remotefilelog compressed to something containing a ;, which then caused the failure when I moved remotefilelog to using batching for file content fetching.
Wed, 01 Jul 2015 17:51:57 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Wed, 01 Jul 2015 17:51:57 -0500] rev 25707
merge with stable
Sun, 28 Jun 2015 22:57:33 +0900 revset: port extra() to support keyword arguments
Yuya Nishihara <yuya@tcha.org> [Sun, 28 Jun 2015 22:57:33 +0900] rev 25706
revset: port extra() to support keyword arguments This is an example to show how keyword arguments are processed.
Sat, 27 Jun 2015 17:25:01 +0900 revset: add function to build dict of positional and keyword arguments
Yuya Nishihara <yuya@tcha.org> [Sat, 27 Jun 2015 17:25:01 +0900] rev 25705
revset: add function to build dict of positional and keyword arguments Keyword arguments will be convenient for functions that will take more than one optional or boolean flags. For example, file(pattern[, subrepos=false]) subrepo([[pattern], status]) Because I don't think all functions should accept key=value syntax, getkwargs() does not support variadic functions such as 'ancestor(*changeset)'. The core logic is placed in the parser module because keyword arguments will be more useful in the templater, where functions take more options. Test cases will be added by the next patch.
Sat, 27 Jun 2015 17:05:28 +0900 revset: add parsing rule for key=value pair
Yuya Nishihara <yuya@tcha.org> [Sat, 27 Jun 2015 17:05:28 +0900] rev 25704
revset: add parsing rule for key=value pair It will be used as an keyword argument. Note that our "=" operator is left-associative. In general, the assignment operator is right-associative, but we don't care because it isn't allowed to chain "=" operations.
Sun, 28 Jun 2015 12:46:34 -0700 import-checker: establish modern import convention
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 28 Jun 2015 12:46:34 -0700] rev 25703
import-checker: establish modern import convention We introduce a new convention for declaring imports and enforce it via the import checker script. The new convention is only active when absolute imports are used, which is currently nowhere. Keying off "from __future__ import absolute_import" to engage the new import convention seems like the easiest solution. It is also beneficial for Mercurial to use this mode because it means less work and ambiguity for the importer and potentially better performance due to fewer stat() system calls because the importer won't look for modules in relative paths unless explicitly asked. Once all files are converted to use absolute import, we can refactor this code to again only have a single import convention and we can require use of absolute import in the style checker. The rules for the new convention are documented in the docstring of the added function. Tests have been added to test-module-imports.t. Some tests are sensitive to newlines and source column position, which makes docstring testing difficult and/or impossible.
(0) -10000 -3000 -1000 -300 -100 -30 -10 -7 +7 +10 +30 +100 +300 +1000 +3000 +10000 tip