- May 27, 2015
-
-
Pierre-Yves David authored
Now that we have a bundle1 version of this test, we can move the main version to bundle2. This lets us handle the ouput change from using the bundle2 protocol earlier.
-
Pierre-Yves David authored
We want to keep both code paths tested. The test is a bit too extensive to simply introduce dual testing in it so we make a copy for each protocol version.
-
Pierre-Yves David authored
It is testing a bundle1 specific behavior. Bundle2 has its own way there. See inline comment for details.
-
Pierre-Yves David authored
This test makes extensive use of --debug so moving to bundle2 based exchange has a massive impact. We do it early to reduce the noise create by a future usage of bundle2 as the default protocol.
-
Pierre-Yves David authored
It is valuable to have both formats tested.
-
Pierre-Yves David authored
The proxy test does not care about what protocol is used, but the new protocol implies different traffic (and therefore different log output). We switch it to bundle2 early to minimise the noise of using bundle2 for exchange by default.
-
Pierre-Yves David authored
Using bundle2 has an effect on which hooks are run when. We turn it on for test-hooks early to reduce the noise of switching the default exchange to bundle2.
-
Pierre-Yves David authored
All bundle2 servers now support the 'listkeys' part(1), so we'll always be able to fetch bookmarks data at the same time as the changeset. This should be enough to avoid the one race condition that this bookmark prefetching is trying to work around. It even allows future server to make sure everything is generated from the same "transaction" if they become capable of such. The current code was already overwriting the prefetched value with the one in bundle2 anyway. Note that this is not preventing all race conditions in related to bookmark in 'hg pull' it makes nothing better and nothing worse. Reducing the number of listkeys calls will reduce the latency on pull. The pre-fetch is also moved into a discovery step because it seems to belong there. (1) Because all servers not speaking 'pushkey' parts are compatible with the 'HG2X' protocol only.
-
- May 28, 2015
-
-
Pierre-Yves David authored
It seems valuable to document this in-place to help the next poor soul looking at this code to understand what kind of beast he is currently facing.
-
Pierre-Yves David authored
Listing remote bookmarks results in network traffic and latency. This should be avoided when possible.
-
- May 30, 2015
-
-
Yuya Nishihara authored
If a "thing" is callable but raises TypeError for some reason, a callable object would be returned. Thereafter, unfriendly traceback would be displayed: Traceback (most recent call last): ... File "mercurial/hg.pyc", line 119, in _peerorrepo obj = _peerlookup(path).instance(ui, path, create) AttributeError: 'function' object has no attribute 'instance' Instead, we should show the reason why "thing(path)" didn't work: Traceback (most recent call last): ... File "hggit/__init__.py", line 89, in _local p = urlcls(path).localpath() TypeError: 'NoneType' object is not callable If a "thing" is not callable, it must be a module or an object that implements instance(). If that module didn't have instance(), the error message would be "<unloaded module 'foo'> object is not callable". It doesn't make perfect sense, but it isn't so bad as it can blame which module went wrong.
-
- Mar 30, 2015
-
-
Yuya Nishihara authored
Before this patch, there was no handy way to investigate the reason why extension couldn't be loaded. If ui.debug is set, tracebacks of both "hgext.foo" and "foo" are displayed because the first ImportError could occur at very deep dependency module.
-
- May 31, 2015
-
-
Yuya Nishihara authored
Sometimes a traceback message is paired with ui.debug(). This patch makes sure that these messages are displayed in the right order.
-
- May 27, 2015
-
-
Martin von Zweigbergk authored
For globs like 'foo/ba?', match._roots() will return 'foo'. Since visitdir(), excludes directories in the excluded roots, it would skip the entire foo directory. This is incorrect, since 'foo/ba?' doesn't mean that everything in foo/ should be exluded. Note that visitdir() is called only from the treemanifest class, so this only affects tree manifests. Fix by adding roots to the set of excluded roots only if there are no excluded patterns. Since 'glob' is the default pattern type for globs, we also need to update some -X patterns in the tests to be of 'path' type to take advantage of the visitdir tricks. For consistency, also update the -I patterns. It seems a little unfortunate that 'foo' in 'hg files -X foo' is considered a pattern because of the implied 'glob' type, but improving that is left for another day.
-
- May 29, 2015
-
-
Laurent Charignon authored
I forgot to include this change as a previous diff and the native code to compute the phases was never called. The AttributeError was silently caught and the pure implementation was used instead.
-
Matt Mackall authored
-
- May 27, 2015
-
-
Laurent Charignon authored
This patch is part of a series of patches to change the recording ui to reflect the operation currently running (commit, shelve, revert ...). This patch adds the default value of the operation argument for record's standard and curses interface to match what is displayed in the interface as of today.
-
- May 28, 2015
-
-
Laurent Charignon authored
This patch improves the documentation of the recordfilter function to explain that we need a translated string for the 'operation' argument.
-
- May 27, 2015
-
-
Pierre-Yves David authored
It is valuable to have both formats tested.
-
Pierre-Yves David authored
We want to make sure the behavior is similar in both cases.
-
Pierre-Yves David authored
Using bundle2 for exchange unlocks the usage of changegroup version 2. This version of the changegroup held more information (delta base) that result in a small increase in content size (20 bytes).
-
Pierre-Yves David authored
Using bundle2 for exchange unlock the usage of changegroup version 2. This version of the changegroup held more information (delta base) that result in a small increase in content size. It also lead to reordering of output because the exchange scheduling is a bit different.
-
Pierre-Yves David authored
Using bundle2 for exchange unlocks the usage of changegroup version 2. This version of the changegroup held more information (delta base) that result in a small increase in content size (20 bytes x 2 changes).
-
Pierre-Yves David authored
This lets us adapt to changes in obsmarkers exchange output earlier.
-
Pierre-Yves David authored
The bundle2 version of obsmarkers exchange is more informative. Switching to bundle2 by default will change the output of this tests. To reduce the noise when switching bundle2 to the default protocol, we migrate this tests early.
-
- May 29, 2015
-
-
Laurent Charignon authored
I left a test environment variable in a previous commit and it is doing nothing useful. This patch removes it.
-
Ryan McElroy authored
Today, the terms 'active' and 'current' are interchangeably used throughout the codebase in reference to the active bookmark (the bookmark that will be updated with the next commit). This leads to confusion among developers and users. This patch is part of a series to standardize the usage to 'active' throughout the mercurial codebase and user interface.
-
Ryan McElroy authored
Today, the terms 'active' and 'current' are interchangeably used throughout the codebase in reference to the active bookmark (the bookmark that will be updated with the next commit). This leads to confusion among developers and users. This patch is part of a series to standardize the usage to 'active' throughout the mercurial codebase and user interface.
-
- Apr 16, 2015
-
-
Ryan McElroy authored
Retain old label as well for backwards compatibility. Today, the terms 'active' and 'current' are interchangeably used throughout the codebase in reference to the active bookmark (the bookmark that will be updated with the next commit). This leads to confusion among developers and users. This patch is part of a series to standardize the usage to 'active' throughout the mercurial codebase and user interface.
-
- May 29, 2015
-
-
Anton Shestakov authored
The tested feature was added to multiple hgweb styles in c21d236ca897, but only paper was tested. Let's test everything now, including monoblue, which only got the feature some 6 years late in e50d8b21f4f4.
-
Anton Shestakov authored
The comment came together with the whole test file and the feature (descend empty dirs in hgweb) in c21d236ca897, but for some reason wasn't exactly accurate. Namely, there isn't e1 directory in the test at all, it obviously should say d1; and b1 didn't terminate at level 3, but does now.
-
- May 17, 2015
-
-
Yuya Nishihara authored
This can greatly speed up chained 'or' of integer revisions. 1) reduce nesting of chained 'or' operations 2) optimize to a list 3) fast path for integer revisions (this patch) revset #0: 0 + 1 + 2 + ... + 1000 1) wall 0.483341 comb 0.480000 user 0.480000 sys 0.000000 (best of 20) 2) wall 0.025393 comb 0.020000 user 0.020000 sys 0.000000 (best of 107) 3) wall 0.008371 comb 0.000000 user 0.000000 sys 0.000000 (best of 317) revset #1: sort(0 + 1 + 2 + ... + 1000) 1) wall 0.035240 comb 0.040000 user 0.040000 sys 0.000000 (best of 100) 2) wall 0.026432 comb 0.030000 user 0.030000 sys 0.000000 (best of 102) 3) wall 0.008418 comb 0.000000 user 0.000000 sys 0.000000 (best of 322) revset #2: first(0 + 1 + 2 + ... + 1000) 1) wall 0.028949 comb 0.030000 user 0.030000 sys 0.000000 (best of 100) 2) wall 0.025503 comb 0.030000 user 0.030000 sys 0.000000 (best of 106) 3) wall 0.008423 comb 0.010000 user 0.010000 sys 0.000000 (best of 319) But I admit that it is still slower than the spanset. revset #3: 0:1000 3) wall 0.000132 comb 0.000000 user 0.000000 sys 0.000000 (best of 19010)
-
Yuya Nishihara authored
As seen in issue4565 and issue4624, GUI wrappers and automated scripts are likely to generate a long query that just has numeric revisions joined by 'or'. One reason why is that they allows users to choose arbitrary revisions from a list. Because this use case isn't handled well by smartset, let's optimize it to a plain old list. Benchmarks: 1) reduce nesting of chained 'or' operations 2) optimize to a list (this patch) revset #0: 0 + 1 + 2 + ... + 1000 1) wall 0.483341 comb 0.480000 user 0.480000 sys 0.000000 (best of 20) 2) wall 0.025393 comb 0.020000 user 0.020000 sys 0.000000 (best of 107) revset #1: sort(0 + 1 + 2 + ... + 1000) 1) wall 0.035240 comb 0.040000 user 0.040000 sys 0.000000 (best of 100) 2) wall 0.026432 comb 0.030000 user 0.030000 sys 0.000000 (best of 102) revset #2: first(0 + 1 + 2 + ... + 1000) 1) wall 0.028949 comb 0.030000 user 0.030000 sys 0.000000 (best of 100) 2) wall 0.025503 comb 0.030000 user 0.030000 sys 0.000000 (best of 106)
-
- May 29, 2015
-
-
Yuya Nishihara authored
This is the same workaround introduced at e16456831516. Without this patch, "null or x" can't be optimized to _list(null x). Test case will be added by the next patch.
-
- May 24, 2015
-
-
Yuya Nishihara authored
This allows us to optimize chained 'or' operations to _list() expression. Unlike _intlist() or _hexlist(), it's difficult to remove duplicates by the caller of _list() because different symbols can point to the same revision. If the caller knows all symbols are unique, that probably means revisions or nodes are known, therefore, _intlist() or _hexlist() should be used instead. So, it makes sense to check duplicates by _list() function. '%ls' is no longer used in core, this won't cause performance regression.
-
Yuya Nishihara authored
_hexlist() should be efficient than _list().
-
- May 29, 2015
-
-
Pierre-Yves David authored
This is a useful information to have in general and we already have debug output related to listkeys. I'm planning to play around with massive amount of phases roots and bookmarks so having this data in debug will be very useful. This already got me to spot that one of the Logilab's review repo is exchanging 65KB of phases data during each exchanges.
-
Pierre-Yves David authored
It appears that we are never running any wireprotocol operation with a --debug flag. So we are adding some basic testing into 'test-ssh.t'
-
- May 27, 2015
-
-
Pierre-Yves David authored
We are doing some strange special casing of phase push when: - the source is a subrepo - the destination is publishing - some changeset are still draft on the destination In that case we do not push phases information (to publish the draft changesets) because it could break simple cycle of 'clone/pull/push' of subrepos. We have to detect this case earlier to have bundle2 respecting it. We change the test to check the behavior for both bundle1 and bundle2.
-
Pierre-Yves David authored
The old output is very verbose and unsuitable for general debug level. It is however very useful for debugging bundle2 generation or consumption issues. All this verbose ouput is hidden under a 'devel.bundle2.debug' flag.
-