Ian Moody <moz-ian@perix.co.uk> [Fri, 08 Mar 2019 22:26:43 +0000] rev 41910
py3: use r'' for group name arguments to MatchObjects in phabricator.py
MatchObject group names are strings, not bytes. Using bytes in py3 leads to an
IndexError.
Differential Revision: https://phab.mercurial-scm.org/D6111
Ian Moody <moz-ian@perix.co.uk> [Sat, 09 Mar 2019 01:58:51 +0000] rev 41909
py3: use %d instead of %s when formatting an int into a byte string
Differential Revision: https://phab.mercurial-scm.org/D6110
Ian Moody <moz-ian@perix.co.uk> [Sat, 09 Mar 2019 01:53:53 +0000] rev 41908
py3: only pass unicode to json.dumps in writediffproperties
Differential Revision: https://phab.mercurial-scm.org/D6109
Ian Moody <moz-ian@perix.co.uk> [Sat, 09 Mar 2019 01:30:44 +0000] rev 41907
py3: fix a few "dict keys as str instead of bytes" issues in phabricator.py
Differential Revision: https://phab.mercurial-scm.org/D6108
Ian Moody <moz-ian@perix.co.uk> [Sat, 09 Mar 2019 01:00:25 +0000] rev 41906
py3: convert URL to str before passing it to request
Differential Revision: https://phab.mercurial-scm.org/D6106
Ian Moody <moz-ian@perix.co.uk> [Fri, 08 Mar 2019 23:45:12 +0000] rev 41905
py3: convert indexes into bytes when enumerating lists in urlencodenested
Otherwise it'll try to insert them them into a %s slot in a b'' later and fail.
Differential Revision: https://phab.mercurial-scm.org/D6105
Ian Moody <moz-ian@perix.co.uk> [Fri, 08 Mar 2019 23:48:49 +0000] rev 41904
py3: don't try and format a bare dict into a byte string in callconduit
Differential Revision: https://phab.mercurial-scm.org/D6104
Ian Moody <moz-ian@perix.co.uk> [Fri, 08 Mar 2019 17:57:59 +0000] rev 41903
py3: use fsencode for vcr recording paths and strings for custom_patches args
This fixes phabricator.py's vcrcommand under py3
Differential Revision: https://phab.mercurial-scm.org/D6102
Ian Moody <moz-ian@perix.co.uk> [Sat, 02 Mar 2019 18:48:23 +0000] rev 41902
phabricator: convert conduit response JSON unicode to bytes inside callconduit
Previously the byte conversion was happening piecemeal in callers, and in the
case of createdifferentialrevision not at all, leading to UnicodeEncodeErrors
when trying to phabsend a commit with a description containing characters not
representable in ascii. (issue6040)
Remove all the scattered encoding.unitolocal calls and perform it once, inside
callconduit, on the entire response dict recursively before returning it, in
keeping with the strategy of converting at the earliest opportunity. Convert all
keys used on returned object to bytes.
Modify the phabsend tests to test this by adding a € to the commit message of
alpha.
Differential Revision: https://phab.mercurial-scm.org/D6044
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 09 Feb 2019 23:01:30 +0100] rev 41901
transaction: include txnname in the hookargs dictionary
There is no reason to not include the txnname alongside the txnid in all case.
The python hooks already have them, so aligning the the shell hooks seems it
could be useful in the future.
(I don't have a strong opinion about this, we can also decide to never align the
python and shell hooks and this and I'll drop this patch).
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 08 Mar 2019 00:00:44 +0100] rev 41900
discovery-helper: reflect argument value in the name of the results
It is common to create multiple pairs of repositories using different argument
values. Recording the argument value in the results names has two main
advantages:
* It is easy to remember the value used to create a pair,
* It get simpler to create multiple pair at the same time from the same source.
Previously, running: `./discovery-helper.sh pypy 50 10` would create a
`pypy-left` and `pypy-right` repository. Now it will create `pypy-50h-10d-left`
and `pypy-50h-10d-right`.
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 07 Mar 2019 17:21:22 +0100] rev 41899
discovery-helper: echo the stripped revsets early
Having them printed early make it easy for a user to just grab the generated
revset and directly uses them
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 07 Mar 2019 17:15:15 +0100] rev 41898
contrib: move the `discovery-helper.sh` script in`perf-utils` directory
The script appeared before the directory. However the directory exists for this
kind of script. We move it there.
Matt Harbison <matt_harbison@yahoo.com> [Sat, 09 Mar 2019 12:55:24 -0500] rev 41897
tests: stabilize test-split.t for Windows
It looks like there will be additional problems beyond this trivial fix, but
this should make the bot green again.
Matt Harbison <matt_harbison@yahoo.com> [Thu, 07 Mar 2019 22:14:22 -0500] rev 41896
tests: stabilize test-share.t on Windows
PYTHON was not getting mangled for MSYS style paths, and remote was spitting out
remote: 'C' is not recognized as an internal or external command,
remote: operable program or batch file.
(once -q was removed). Additionally, this should fix a failure with py3 because
of spaces in the path.
Sushil khanchi <sushilkhanchi97@gmail.com> [Sun, 03 Mar 2019 19:46:59 +0530] rev 41895
split: add tests which demonstrate the issue5864
Differential Revision: https://phab.mercurial-scm.org/D6057
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 07 Mar 2019 01:28:24 +0100] rev 41894
discovery: clarify why the caching of children is valid
Yuya Nishihara pointed out that the code looks wrong without this clarification.
(And, unsurprisingly, Yuya is right)
Martin von Zweigbergk <martinvonz@google.com> [Wed, 06 Mar 2019 15:43:52 -0800] rev 41893
tests: clarify test setup test in test-uncommit.t
I assume the "hg uncommit b" is there to prove that the working copy
is dirty before we try "hg uncommit --allow-dirty-working-copy b". It
seems clearer to put that check just before we run the actual test.
Differential Revision: https://phab.mercurial-scm.org/D6078
Martin von Zweigbergk <martinvonz@google.com> [Wed, 06 Mar 2019 15:35:40 -0800] rev 41892
tests: fix a stale reference to experimental.uncommitondirtywdir
These tests no longer test the config option, they test the command
line flag.
Differential Revision: https://phab.mercurial-scm.org/D6077
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 28 Feb 2019 01:49:10 +0100] rev 41891
discovery: explicitly use `undecided` for the children mapping
Recent performance achievements makes the assumption that the `undecided` set
is used for sampling. That assumption is always true in practice. We stop
pretending that taking anything else would make sense and we directly use the
`undecided` set from the object. This provides a more honest API.
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 28 Feb 2019 01:48:20 +0100] rev 41890
discovery: cache the children mapping used during each discovery
During discovery, the `undecided` set keep shrinking. Therefore, the map
computed for an iteration N will be valid for iteration N+1. Instead of
computing the same data over and over we cache it the first time.
Our private pathological case speed up from about 7.5 seconds to about 6.3
seconds.
(starting from over 70s at the start of the full series)
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 28 Feb 2019 01:15:45 +0100] rev 41889
discovery: move children computation in its own method
This clarifies the main logic and starts to pave the way to some caching.
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 05 Mar 2019 15:39:54 +0100] rev 41888
discovery: simplify the building of the children mapping
Since we only care about the revisions inside the set we are sampling, we can
use simpler code (and probably sightly faster).
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 05 Mar 2019 15:52:14 +0100] rev 41887
discovery: simply walk the undecided revs when building the children mapping
The sampling only care about revisions in the undecided set, so building children
relationship within this set is sufficient.
The set of undecided changesets can be much smaller than the full span from its
smallest item to the tip of the repository. This restriction can significantly
speed up operations in some cases.
For example, on our private pathological case, this speeds things up from about
53 seconds to about 7.5 seconds.
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 28 Feb 2019 00:56:27 +0100] rev 41886
discovery: use a lower level but faster way to retrieve parents
We already know that no revision in the undecided set are filtered, so we can
skip multiple checks and directly access lower level data.
In a private pathological case, this improves the timing from about 70 seconds
to about 50 seconds. There are other actions to be taken to improve that case,
however this gives an idea of the general overhead.
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 28 Feb 2019 00:12:12 +0100] rev 41885
discovery: avoid computing identical sets of heads twice
The very same set of heads is computed in the previous statement, it seems more
efficient to just copy that result.
Georges Racinet <georges.racinet@octobus.net> [Wed, 27 Feb 2019 23:55:19 +0100] rev 41884
discovery: moved sampling functions inside discovery object
In this patch, we transform the sampling functions into
methods of the `partialdiscovery` class in the Python case.
This will provide multiple benefit. For example we can keep some cache from one
sampling to another. In addition this will help the Oxidation work as all graph
traversal related logic will be contained in a single object.
Georges Racinet <georges.racinet@octobus.net> [Wed, 27 Feb 2019 23:45:06 +0100] rev 41883
discovery: rename `srvheads` to `knownsrvheads`
The `srvheads` variable only contains the known set of remove heads. Renaming
the variable make it clearer.
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 06 Mar 2019 14:43:02 +0100] rev 41882
verify: small refactoring and documentation in `_verifymanifest`
Small changes to make this area of code clearer.
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 06 Mar 2019 12:39:44 +0100] rev 41881
verify: document the `_verifymanifest` method
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 06 Mar 2019 12:21:58 +0100] rev 41880
verify: document `_verifychangelog`
We document the method input, output and checks.
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 06 Mar 2019 14:15:19 +0100] rev 41879
verify: rename the `checklog` to `_checkrevlog`
The method is for internal use only. In addition we make the method name
explicitly contains `revlog` to make it clearer it is checking higher level
revlog properties.