Wed, 16 Jan 2019 16:55:52 -0800 bdiff: drop duplicate definition of splitnewlines()
Martin von Zweigbergk <martinvonz@google.com> [Wed, 16 Jan 2019 16:55:52 -0800] rev 41269
bdiff: drop duplicate definition of splitnewlines() It was added in 29dd37a418aa (bdiff: write a native version of splitnewlines, 2018-01-25). Differential Revision: https://phab.mercurial-scm.org/D5618
Wed, 16 Jan 2019 21:54:16 -0500 tests: also skip remotefilelog *.py tests on Windows
Matt Harbison <matt_harbison@yahoo.com> [Wed, 16 Jan 2019 21:54:16 -0500] rev 41268
tests: also skip remotefilelog *.py tests on Windows Otherwise, the buildbot won't even be green on stable with the RC. This should have gone with 0800d9e6e216. Previous discussion in this thread: https://www.mercurial-scm.org/pipermail/mercurial-devel/2018-November/125421.html
Wed, 16 Jan 2019 23:44:08 +0530 py3: add 10 more passing tests caught by ratchet
Pulkit Goyal <pulkit@yandex-team.ru> [Wed, 16 Jan 2019 23:44:08 +0530] rev 41267
py3: add 10 more passing tests caught by ratchet Thanks to Augie who fixed these tests recently. Differential Revision: https://phab.mercurial-scm.org/D5616
Wed, 16 Jan 2019 10:56:39 -0500 remotefilelog: import Queue on Python 2, and queue on Python 3
Augie Fackler <augie@google.com> [Wed, 16 Jan 2019 10:56:39 -0500] rev 41266
remotefilelog: import Queue on Python 2, and queue on Python 3 Differential Revision: https://phab.mercurial-scm.org/D5599
Wed, 16 Jan 2019 11:57:20 -0500 py3: all fastannotate tests now pass
Augie Fackler <augie@google.com> [Wed, 16 Jan 2019 11:57:20 -0500] rev 41265
py3: all fastannotate tests now pass Differential Revision: https://phab.mercurial-scm.org/D5615
Wed, 16 Jan 2019 11:56:43 -0500 fastannotate: adapt to buffer() going a way in Python 3
Augie Fackler <augie@google.com> [Wed, 16 Jan 2019 11:56:43 -0500] rev 41264
fastannotate: adapt to buffer() going a way in Python 3 There's probably something more efficient I could do here, but I'm disinclined to spend much time on this at the moment. Differential Revision: https://phab.mercurial-scm.org/D5614
Wed, 16 Jan 2019 11:56:08 -0500 fastannotate: use pycompat.maplist instead of map
Augie Fackler <augie@google.com> [Wed, 16 Jan 2019 11:56:08 -0500] rev 41263
fastannotate: use pycompat.maplist instead of map Differential Revision: https://phab.mercurial-scm.org/D5613
Wed, 16 Jan 2019 11:55:49 -0500 fastannotate: slice strings to get single character
Augie Fackler <augie@google.com> [Wed, 16 Jan 2019 11:55:49 -0500] rev 41262
fastannotate: slice strings to get single character Behaves identically on Python 3 and Python 2. Differential Revision: https://phab.mercurial-scm.org/D5612
Wed, 16 Jan 2019 11:55:01 -0500 fastannotate: fix isinstance checks to be against bytes instead of str
Augie Fackler <augie@google.com> [Wed, 16 Jan 2019 11:55:01 -0500] rev 41261
fastannotate: fix isinstance checks to be against bytes instead of str Differential Revision: https://phab.mercurial-scm.org/D5611
Wed, 16 Jan 2019 11:33:43 -0500 absorb: add a pycompat.bytestr() to fix --edit-lines functionality on Python 3
Augie Fackler <augie@google.com> [Wed, 16 Jan 2019 11:33:43 -0500] rev 41260
absorb: add a pycompat.bytestr() to fix --edit-lines functionality on Python 3 Differential Revision: https://phab.mercurial-scm.org/D5610
Wed, 16 Jan 2019 11:03:04 -0500 remotefilelog: fix some bytes/str portability issues for Python 3
Augie Fackler <augie@google.com> [Wed, 16 Jan 2019 11:03:04 -0500] rev 41259
remotefilelog: fix some bytes/str portability issues for Python 3 A few remotefilelog tests still fail on Python 3, but it's a much better story now. Differential Revision: https://phab.mercurial-scm.org/D5609
Wed, 16 Jan 2019 11:02:20 -0500 shallowutil: fsdecode the bytes group name before passing to os
Augie Fackler <augie@google.com> [Wed, 16 Jan 2019 11:02:20 -0500] rev 41258
shallowutil: fsdecode the bytes group name before passing to os Differential Revision: https://phab.mercurial-scm.org/D5608
Wed, 16 Jan 2019 11:01:45 -0500 shallowutil: slice off a byte instead of subscripting
Augie Fackler <augie@google.com> [Wed, 16 Jan 2019 11:01:45 -0500] rev 41257
shallowutil: slice off a byte instead of subscripting This behaves identically on Python 2 and 3. Differential Revision: https://phab.mercurial-scm.org/D5607
Wed, 16 Jan 2019 11:01:16 -0500 remotefilelog: check against bytes type instead of buffer and coerce to bytes
Augie Fackler <augie@google.com> [Wed, 16 Jan 2019 11:01:16 -0500] rev 41256
remotefilelog: check against bytes type instead of buffer and coerce to bytes Fixes Python 3 compat here. Differential Revision: https://phab.mercurial-scm.org/D5606
Wed, 16 Jan 2019 11:00:10 -0500 remotefilelog: use list comprehension instead of filter for py3 portability
Augie Fackler <augie@google.com> [Wed, 16 Jan 2019 11:00:10 -0500] rev 41255
remotefilelog: use list comprehension instead of filter for py3 portability Differential Revision: https://phab.mercurial-scm.org/D5605
Wed, 16 Jan 2019 10:59:32 -0500 tests: fix up uses of xrange in remotefilelog tests for py3
Augie Fackler <augie@google.com> [Wed, 16 Jan 2019 10:59:32 -0500] rev 41254
tests: fix up uses of xrange in remotefilelog tests for py3 Differential Revision: https://phab.mercurial-scm.org/D5604
Wed, 16 Jan 2019 10:59:09 -0500 tests: add missing b prefixes in remotefilelog-getflogheads.py
Augie Fackler <augie@google.com> [Wed, 16 Jan 2019 10:59:09 -0500] rev 41253
tests: add missing b prefixes in remotefilelog-getflogheads.py # skip-blame just b prefixes Differential Revision: https://phab.mercurial-scm.org/D5603
Wed, 16 Jan 2019 10:58:31 -0500 tests: make python oneliner portable to python 3 in remotefilelog test
Augie Fackler <augie@google.com> [Wed, 16 Jan 2019 10:58:31 -0500] rev 41252
tests: make python oneliner portable to python 3 in remotefilelog test Differential Revision: https://phab.mercurial-scm.org/D5602
Wed, 16 Jan 2019 10:58:09 -0500 remotefilelog: implement __bool__ as well as __nonzero__ for py3
Augie Fackler <augie@google.com> [Wed, 16 Jan 2019 10:58:09 -0500] rev 41251
remotefilelog: implement __bool__ as well as __nonzero__ for py3 Differential Revision: https://phab.mercurial-scm.org/D5601
Wed, 16 Jan 2019 10:57:38 -0500 remotefilelog: fix logging in retry decorator
Augie Fackler <augie@google.com> [Wed, 16 Jan 2019 10:57:38 -0500] rev 41250
remotefilelog: fix logging in retry decorator This still fails with an error about no exception being available to re-raise, but so it goes. Differential Revision: https://phab.mercurial-scm.org/D5600
Wed, 16 Jan 2019 10:56:15 -0500 basepack: avoid 'rbe' mode in Python 3
Augie Fackler <augie@google.com> [Wed, 16 Jan 2019 10:56:15 -0500] rev 41249
basepack: avoid 'rbe' mode in Python 3 Differential Revision: https://phab.mercurial-scm.org/D5598
Wed, 16 Jan 2019 10:55:42 -0500 remotefilelog: do file IO in terms of bytes
Augie Fackler <augie@google.com> [Wed, 16 Jan 2019 10:55:42 -0500] rev 41248
remotefilelog: do file IO in terms of bytes Differential Revision: https://phab.mercurial-scm.org/D5597
Fri, 30 Nov 2018 14:35:57 +0100 rust-cpython: using MissingAncestors from Python code
Georges Racinet <georges.racinet@octobus.net> [Fri, 30 Nov 2018 14:35:57 +0100] rev 41247
rust-cpython: using MissingAncestors from Python code As precedently done with LazyAncestors on cpython.rs, we test for the presence of the 'rustext' module. incrementalmissingrevs() has two callers within the Mercurial core: `setdiscovery.partialdiscovery` and the `only()` revset. This move shows a significant discovery performance improvement in cases where the baseline is slow: using perfdiscovery on the PyPy repos, prepared with `contrib/discovery-helper <repo> 50 100`, we get averaged medians of 403ms with the Rust version vs 742ms without (about 45% better). But there are still indications that performance can be worse in cases the baseline is fast, possibly due to the conversion from Python to Rust and back becoming the bottleneck. We could measure this on mozilla-central in cases were the delta is just a few changesets. This requires confirmation, but if that's the reason, then an upcoming `partialdiscovery` fully in Rust should solve the problem. Differential Revision: https://phab.mercurial-scm.org/D5551
Mon, 14 Jan 2019 17:07:39 +0100 rust: MissingAncestors.basesheads()
Georges Racinet <georges.racinet@octobus.net> [Mon, 14 Jan 2019 17:07:39 +0100] rev 41246
rust: MissingAncestors.basesheads() This new API method on `MissingAncestors` leverages directly the Rust implementation for relative heads of a set, and also lowers the cost of returning the results to Python in the context of discovery. These interchange costs can probably be further reduced by implementing the `partialdiscovery` class in Rust, but that will be investigated in the 5.0 development cycle. Differential Revision: https://phab.mercurial-scm.org/D5584
Mon, 14 Jan 2019 18:52:01 +0100 discovery: using the new basesheads()
Georges Racinet <georges.racinet@octobus.net> [Mon, 14 Jan 2019 18:52:01 +0100] rev 41245
discovery: using the new basesheads() Our ultimate goal is to switch eventually to a Rust implementation, but this move actually seems to increase the performance in a pure Python build. What follows is a quick measurement done on PyPy on repos prepared with `contrib/discovery-helper.sh 50 100`. Before: ! wall 0.894384 comb 0.890000 user 0.890000 sys 0.000000 (best of 11) ! wall 0.971199 comb 0.970000 user 0.950000 sys 0.020000 (max of 11) ! wall 0.927993 comb 0.925455 user 0.919091 sys 0.006364 (avg of 11) ! wall 0.921619 comb 0.920000 user 0.910000 sys 0.010000 (median of 11) After: ! wall 0.614278 comb 0.610000 user 0.610000 sys 0.000000 (best of 14) ! wall 0.789459 comb 0.790000 user 0.770000 sys 0.020000 (max of 14) ! wall 0.722765 comb 0.720000 user 0.715714 sys 0.004286 (avg of 14) ! wall 0.734448 comb 0.720000 user 0.720000 sys 0.000000 (median of 14) Differential Revision: https://phab.mercurial-scm.org/D5583
Mon, 14 Jan 2019 18:36:09 +0100 ancestor: incrementalmissingancestors.basesheads()
Georges Racinet <georges.racinet@octobus.net> [Mon, 14 Jan 2019 18:36:09 +0100] rev 41244
ancestor: incrementalmissingancestors.basesheads() This new method will avoid the need to access the `bases` attribute directly in `setdiscovery`, and to prefilter `nullrev` before passing it to the `heads()` revset. Being a method, it can transparently be reimplemented in a Rust (or any native) version. Differential Revision: https://phab.mercurial-scm.org/D5582
Mon, 14 Jan 2019 17:46:14 +0100 rust-cpython: set conversion for MissingAncestors.bases()
Georges Racinet <georges.racinet@octobus.net> [Mon, 14 Jan 2019 17:46:14 +0100] rev 41243
rust-cpython: set conversion for MissingAncestors.bases() Also I hope that the separate `py_set()` helper will help transition to proper `PySet` support in `rust-cpython` Took the opportunity to replace explict for loop with iteration and collect(). Differential Revision: https://phab.mercurial-scm.org/D5581
Mon, 14 Jan 2019 10:07:48 +0100 rust: dagop.headrevs() Rust counterparts
Georges Racinet on ishtar.racinet.fr <georges@racinet.fr> [Mon, 14 Jan 2019 10:07:48 +0100] rev 41242
rust: dagop.headrevs() Rust counterparts This introduces two Rust implementations for `mercurial.dagop.headrevs`. The algorithm is identical to the Python version. Depending on the caller, one or the other could be the most practical, or the most performant, by minimizing the amount of memory copy and allocations. Differential Revision: https://phab.mercurial-scm.org/D5580
Mon, 14 Jan 2019 20:42:25 +0100 rust: factorized testing Graphs
Georges Racinet <georges.racinet@octobus.net> [Mon, 14 Jan 2019 20:42:25 +0100] rev 41241
rust: factorized testing Graphs it will useful to use these outside of `ancestors`, too. Differential Revision: https://phab.mercurial-scm.org/D5579
Sat, 12 Jan 2019 16:57:04 +0100 rust-cpython: moved generic conversion fn out of ancestors module
Georges Racinet <georges.racinet@octobus.net> [Sat, 12 Jan 2019 16:57:04 +0100] rev 41240
rust-cpython: moved generic conversion fn out of ancestors module This will allow to use it easily from other submodules Differential Revision: https://phab.mercurial-scm.org/D5578
(0) -30000 -10000 -3000 -1000 -300 -100 -50 -30 +30 +50 +100 +300 +1000 +3000 +10000 tip