Yuya Nishihara <yuya@tcha.org> [Wed, 08 Oct 2014 20:51:01 +0900] rev 22783
ui: disable echo back of prompt input if ui is set to non-tty purposely
9ab18a912c44 is nice for test output, but it also affects command-server
channel. Command-server client shouldn't receive echo-back message, which
makes it harder to parse the output.
Siddharth Agarwal <sid0@fb.com> [Fri, 03 Oct 2014 18:48:09 -0700] rev 22782
dirstate: cache util.normcase while constructing the foldmap
This is a small win on OS X. hg perfdirstatefoldmap:
before: wall 0.399708 comb 0.410000 user 0.390000 sys 0.020000 (best of 25)
after: wall 0.386331 comb 0.390000 user 0.370000 sys 0.020000 (best of 25)
Siddharth Agarwal <sid0@fb.com> [Fri, 03 Oct 2014 18:47:28 -0700] rev 22781
normcase: for darwin, use fast ASCII lower
Constructing the foldmap is much faster on OS X now. For a large real-world
repo, hg perfdirstatefoldmap:
before: wall 0.805278 comb 0.800000 user 0.790000 sys 0.010000 (best of 13)
after: wall 0.399708 comb 0.410000 user 0.390000 sys 0.020000 (best of 25)
This is a nice boost to 'hg status', especially with the third-party hgwatchman
extension enabled (which eliminates stat calls). For the above repo, 'hg
status' goes from 1.17 seconds to 0.74.
Siddharth Agarwal <sid0@fb.com> [Fri, 03 Oct 2014 19:58:26 -0700] rev 22780
perf: add a way to measure the perf of constructing the foldmap
Constructing the foldmap is a necessary part of operations like 'hg status' on
OS X. This command allows us to measure the perf of constructing it.
Siddharth Agarwal <sid0@fb.com> [Fri, 03 Oct 2014 18:45:56 -0700] rev 22779
encoding.lower: use fast ASCII lower
This benefits, among other things, the case collision auditor.
On a Linux system with a large real-world repo where all filenames are ASCII,
hg perfcca:
before: wall 0.260157 comb 0.270000 user 0.230000 sys 0.040000 (best of 38)
after: wall 0.164616 comb 0.160000 user 0.160000 sys 0.000000 (best of 54)
Siddharth Agarwal <sid0@fb.com> [Fri, 03 Oct 2014 18:42:39 -0700] rev 22778
parsers: add a function to efficiently lowercase ASCII strings
We need a way to efficiently lowercase ASCII strings. For example, 'hg status'
needs to build up the fold map -- a map from a canonical case (for OS X,
lowercase) to the actual case of each file and directory in the dirstate.
The current way we do that is to try decoding to ASCII and then calling
lower() on the string, labeled 'orig' below:
str.decode('ascii')
return str.lower()
This is pretty inefficient, and it turns out we can do much better.
I also tested out a condition-based approach, labeled 'cond' below:
(c >= 'A' && c <= 'Z') ? (c + ('a' - 'A')) : c
'cond' turned out to be slower in all cases. A 256-byte lookup table with
invalid values for everything past 127 performed similarly, but this was less
verbose.
On OS X 10.9 with LLVM version 6.0 (clang-600.0.51), the asciilower function
was run against two corpuses.
Corpus 1 (list of files from real-world repo, > 100k files):
orig: wall 0.428567 comb 0.430000 user 0.430000 sys 0.000000 (best of 24)
cond: wall 0.077204 comb 0.070000 user 0.070000 sys 0.000000 (best of 100)
lookup: wall 0.060714 comb 0.060000 user 0.060000 sys 0.000000 (best of 100)
Corpus 2 (mozilla-central, 113k files):
orig: wall 0.238406 comb 0.240000 user 0.240000 sys 0.000000 (best of 42)
cond: wall 0.040779 comb 0.040000 user 0.040000 sys 0.000000 (best of 100)
lookup: wall 0.037623 comb 0.040000 user 0.040000 sys 0.000000 (best of 100)
On a Linux server-class machine with GCC 4.4.6 20120305 (Red Hat 4.4.6-4):
Corpus 1 (real-world repo, > 100k files):
orig: wall 0.260899 comb 0.260000 user 0.260000 sys 0.000000 (best of 38)
cond: wall 0.054818 comb 0.060000 user 0.060000 sys 0.000000 (best of 100)
lookup: wall 0.048489 comb 0.050000 user 0.050000 sys 0.000000 (best of 100)
Corpus 2 (mozilla-central, 113k files):
orig: wall 0.153082 comb 0.150000 user 0.150000 sys 0.000000 (best of 65)
cond: wall 0.031007 comb 0.040000 user 0.040000 sys 0.000000 (best of 100)
lookup: wall 0.028793 comb 0.030000 user 0.030000 sys 0.000000 (best of 100)
SSE instructions might help even more, but I didn't experiment with those.
Martin von Zweigbergk <martinvonz@gmail.com> [Tue, 30 Sep 2014 15:58:08 -0700] rev 22777
match: remove unnecessary setting of self._always
The 'always' class calls its parent constructor with an empty list of
patterns, which will result in a matcher that always matches. The
parent constructor will set self._always to True in such cases, so
there is no need to set it again.
Yuya Nishihara <yuya@tcha.org> [Fri, 03 Oct 2014 00:43:22 +0900] rev 22776
bookmarks: port to generic templater
Yuya Nishihara <yuya@tcha.org> [Fri, 03 Oct 2014 00:36:36 +0900] rev 22775
bookmarks: split ui.write() so that it can be easily ported to formatter api
Test output changes because color labels are applied separately.
Yuya Nishihara <yuya@tcha.org> [Fri, 03 Oct 2014 00:15:39 +0900] rev 22774
bookmarks: iterate bookmarks list even if it is known to be empty
This clarifies that "no bookmarks set" is displayed in addition to the list
of bookmarks. In JSON output, for example, [] should be written if empty,
and "no bookmarks set" message should be skipped.
David Soria Parra <davidsp@fb.com> [Mon, 06 Oct 2014 07:29:40 -0700] rev 22773
repoview: remove hiddencache verification
We have been running hiddencache verification since 3.1.1 and so
far not received a bug report concerning it. Therefore we remove
the verification code and make the hiddencache authoritive. That
way we get the intended speedup.
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Mon, 06 Oct 2014 08:18:03 -0400] rev 22772
color: reorganise and sectionify the help text
The color docstring was getting long. This splits it up into
bite-sized sections and rearranges the order of the paragraphs a
little to match these sections.
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Mon, 06 Oct 2014 08:16:40 -0400] rev 22771
color: update description of the extension
The color extension long ago ceased to work only for the status and
qseries commands.
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Mon, 06 Oct 2014 07:35:53 -0400] rev 22770
help: show all nested subsections of a section with `hg help foo.section`
Used to be that `hg help hgrc.paths` would show
"paths"
-------
Assigns symbolic names to repositories. The left side is the symbolic
name, and the right gives the directory or URL that is the location of the
repository. Default paths can be declared by setting the following
entries.
and stop there. Obviously the result seems better as shown in the
attached test.
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Mon, 06 Oct 2014 07:29:38 -0400] rev 22769
help: fix output of sections in `hg help foo.somesection`
There was a bug in c3c3dd31fe1c. The block that added definitions to
getsections should have been an elif, not an if. Otherwise section
titles get added twice, since the else clause would always get
executed for section titles.