Augie Fackler <augie@google.com> [Sun, 14 Oct 2018 08:55:30 -0400] rev 40305
tests: use regex instead of Python versions for archive hash changes
It turns out this behavior changed between versions of Python 3. Let's
just always accept either size or sha1, and move on.
Differential Revision: https://phab.mercurial-scm.org/D5104
Augie Fackler <augie@google.com> [Sun, 14 Oct 2018 05:29:00 -0400] rev 40304
notify: a ton of encoding dancing to deal with the email module
Almost fixes test-keyword.t on Python 3, but leaves us with some
extremely confusing failures at the end of the test that seem related
to the command server?
Differential Revision: https://phab.mercurial-scm.org/D5100
Augie Fackler <augie@google.com> [Sun, 14 Oct 2018 11:06:21 -0400] rev 40303
tests: add missing b prefix in test-context-metadata.t
# skip-blame just a b prefix
Differential Revision: https://phab.mercurial-scm.org/D5109
Augie Fackler <augie@google.com> [Sun, 14 Oct 2018 11:05:41 -0400] rev 40302
context: raise runtime errors with sysstrs
We should probably *not* use RuntimeError for this, but let's deal
with that later, rather than as part of the Python 3 effort.
Differential Revision: https://phab.mercurial-scm.org/D5108
Georges Racinet <gracinet@anybox.fr> [Mon, 15 Oct 2018 11:16:12 +0200] rev 40301
rust: rustfmt config for hg-direct-ffi
For now, we're duplicating it, but it would be probably a good idea
to use a single one for the whole workspace (would have implications on the
other crates as well)
Georges Racinet <gracinet@anybox.fr> [Mon, 08 Oct 2018 19:11:41 +0200] rev 40300
rust: rustlazyancestors.__contains__
This changeset provides a Rust implementation of
the iteration performed by lazyancestor.__contains__
It has the advantage over the Python iteration to use
the 'seen' set encapsuled into the dedicated iterator (self._containsiter),
rather than storing emitted items in another set (self._containsseen),
and hence should reduce the memory footprint.
Also, there's no need to convert intermediate emitted revisions back into
Python integers.
At this point, it would be tempting to implement the whole lazyancestor object
in Rust, but that would lead to more C wrapping code (two objects) for
little expected benefits.
Matt Harbison <matt_harbison@yahoo.com> [Sun, 14 Oct 2018 01:39:22 -0400] rev 40299
help: fix a missing quote character in ui.tweakdefaults
Georges Racinet <gracinet@anybox.fr> [Thu, 27 Sep 2018 16:55:44 +0200] rev 40298
rust: hooking into Python code
We introduce a new class called 'rustlazyancestors'
in the ancestors module, which is used only if
parsers.rustlazyancestors does exist.
The implementation of __contains__ stays unchanged,
but is now backed by the Rust iterator. It would
probably be a good candidate for further development,
though, as it is mostly looping, and duplicates the
'seen' set.
The Rust code could be further optimized, however it already
gives rise to performance improvements:
median timing from hg perfancestors:
- on pypy:
before: 0.077566s
after: 0.016676s -79%
- on mozilla central:
before: 0.190037s
after: 0.082225s -58%
- on a private repository (about one million revisions):
before: 0.567085s
after: 0.108816s -80%
- on another private repository (about 400 000 revisions):
before: 1.440918s
after: 0.290116s -80%
median timing for hg perfbranchmap base
- on pypy:
before: 1.383413s
after: 0.507993s -63%
- on mozilla central:
before: 2.821940s
after: 1.258902s -55%
- on a private repository (about one million revisions):
before: 77.065076s
after: 16.158475s -80%
- on another private repository (about 401 000 revisions):
before: 7.835503s
after: 3.545331s -54%
Mark Thomas <mbthomas@fb.com> [Sun, 14 Oct 2018 14:10:38 +0000] rev 40297
py3: fix test-propertycache.py
Differential Revision: https://phab.mercurial-scm.org/D5101
Mark Thomas <mbthomas@fb.com> [Sun, 14 Oct 2018 14:02:32 +0000] rev 40296
py3: fix test-dirstate-race.t
Differential Revision: https://phab.mercurial-scm.org/D5106
Rodrigo Damazio <rdamazio@google.com> [Fri, 12 Oct 2018 18:49:11 +0200] rev 40295
help: adding a proper declaration for shortlist/basic commands (API)
We previously used the '^' prefix to indicate that a command
should be shown on the short list (shown for just "hg"), but
that's a horrible hack, so I'm removing it.
Differential Revision: https://phab.mercurial-scm.org/D5069
Rodrigo Damazio <rdamazio@google.com> [Fri, 12 Oct 2018 18:06:32 +0200] rev 40294
help: assigning topic categories
Differential Revision: https://phab.mercurial-scm.org/D5068
rdamazio@google.com [Sat, 13 Oct 2018 02:17:41 -0700] rev 40293
help: assigning categories to existing commands
I'm separating this into its own commit so people can bikeshed over the actual
categorization (vs the support for categories). These categories are based on
the help implementation we've been using internally at Google, and have had
zero complaints.
Differential Revision: https://phab.mercurial-scm.org/D5067
Rodrigo Damazio <rdamazio@google.com> [Fri, 12 Oct 2018 17:57:36 +0200] rev 40292
help: splitting the topics by category
Differential Revision: https://phab.mercurial-scm.org/D5066
rdamazio@google.com [Sat, 13 Oct 2018 05:03:50 -0700] rev 40291
help: adding support for command categories
Differential Revision: https://phab.mercurial-scm.org/D5065
Yuya Nishihara <yuya@tcha.org> [Sun, 14 Oct 2018 13:35:47 +0200] rev 40290
notify: just use email.errors
email.Errors is a proxy object to email.errors on Python 2.
Yuya Nishihara <yuya@tcha.org> [Sat, 06 Oct 2018 21:13:59 +0900] rev 40289
rust-chg: add struct holding information needed to spawn server process
The Locator will handle the initialization of the connection. It will spawn
server processes as needed.
Yuya Nishihara <yuya@tcha.org> [Sun, 07 Oct 2018 11:32:42 +0900] rev 40288
rust-chg: install logger if $CHGDEBUG is set
This is modeled after the example logger and debugmsg() of chg/util.c.
https://docs.rs/log/0.4.5/log/#implementing-a-logger
Yuya Nishihara <yuya@tcha.org> [Sat, 06 Oct 2018 20:07:11 +0900] rev 40287
rust-chg: depend on log and tokio_timer
I'll start porting the daemon management functions from chg of C, which
will be difficult to debug without some logging facility. AFAIK, the log
crate is easy-to-use and widely used.
tokio_timer provides sleep() helper to be used while spawning a server
process.
Yuya Nishihara <yuya@tcha.org> [Sun, 07 Oct 2018 20:55:51 +0900] rev 40286
rust-chg: suppress panic while writing chg error to stderr
Otherwise "chg >/dev/full 2>&1" would exit with 101. Spotted by test-basic.t.
Augie Fackler <augie@google.com> [Sun, 14 Oct 2018 04:37:25 -0400] rev 40285
logcmdutil: add a helpful assertion to catch mistyped templates early
This would have made a defect in test-notify.t much easier to figure out.
Differential Revision: https://phab.mercurial-scm.org/D5097
Augie Fackler <augie@google.com> [Sun, 14 Oct 2018 05:28:01 -0400] rev 40284
notify: adapt to new location of email module's errors
Differential Revision: https://phab.mercurial-scm.org/D5099
Augie Fackler <augie@google.com> [Sun, 14 Oct 2018 04:33:47 -0400] rev 40283
notify: add some b prefixes
# skip-blame just b prefixes
Differential Revision: https://phab.mercurial-scm.org/D5098
Mark Thomas <mbthomas@fb.com> [Sun, 14 Oct 2018 09:24:36 +0000] rev 40282
py3: fix test-diff-color.t
Differential Revision: https://phab.mercurial-scm.org/D5095
Mark Thomas <mbthomas@fb.com> [Sun, 14 Oct 2018 09:07:43 +0000] rev 40281
py3: fix test-revlog.t
The mpatchError has a trailing comma on Python 2 but not on Python 3, so
use a glob to handle both Python 2 and Python 3.
Differential Revision: https://phab.mercurial-scm.org/D5093
Augie Fackler <augie@google.com> [Sun, 14 Oct 2018 04:11:35 -0400] rev 40280
fuzz: try *even harder* to prevent Python from looking up usernames
Differential Revision: https://phab.mercurial-scm.org/D5092
Connor Sheehan <sheehan@mozilla.com> [Sun, 14 Oct 2018 03:42:43 -0400] rev 40279
wireproto: fix incorrect function name in docstring
The docstring for `iwireprotocolcommandcacher` references
an `onoutputfinished` method. The actual name of the function
is `onfinished`.
Differential Revision: https://phab.mercurial-scm.org/D5090
Mark Thomas <mbthomas@fb.com> [Sat, 13 Oct 2018 15:32:52 +0000] rev 40278
py3: fix test-status.t
Differential Revision: https://phab.mercurial-scm.org/D5089
Yuya Nishihara <yuya@tcha.org> [Sun, 14 Oct 2018 07:25:01 +0200] rev 40277
formatter: make debug output prettier
"(glob)" won't be needed since pprintgen() can print dict items in stable
order.
Yuya Nishihara <yuya@tcha.org> [Sun, 14 Oct 2018 07:23:02 +0200] rev 40276
stringutil: allow to specify initial indent level of pprint()
I want to pprint() an inner object, which starts with level=1 indent.