Mercurial > hg
annotate mercurial/help/pager.txt @ 42237:9f45d3d526f9
hgtagsfnodescache: inherit fnode from parent when possible
If a changeset does not update the content of `.hgtags`, it means it will use
the same file-node (for `.hgtags`) as its parents. In this case we can
directly reuse the parent's file-node.
We use this property when updating the `hgtagsfnodescache` taking a faster path
if we already have a cached value for the parents of the node we are looking
at.
Doing so provides a large performance boost when looking at a lot of fnodes,
especially on repository with very large manifest:
timing for `tagsmod.fnoderevs(ui, repo, repo.changelog.revs())`
mercurial: (41907 revisions, 1923 files)
before: 6.9 seconds
after: 2.7 seconds (-54%)
pypy: (96266 revisions, 5198 files)
before: 80 seconds
after: 20 seconds (-75%)
mozilla-central: (463411 revisions, 272080 files)
before: 7166.4 seconds
after: 47.8 seconds (-99%, x150 speedup)
On a copy of mozilla-try with about 35K heads ans 1.7M changesets, this moves
the computation from many hours to a couple of minutes, making it more
interesting to do a full warm up of this cache before computing tags (from a
cold cache).
There seems to be other performance low hanging fruits, like avoiding the use of
changectx or a more revision centric logic. However, the new code is fast enough
for my needs right now.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Mon, 11 Mar 2019 01:10:20 +0100 |
parents | 85b978031a75 |
children |
rev | line source |
---|---|
32138
edbbd18a47ab
help: attempt to clarify that pager usage is not output length based
Matt Harbison <matt_harbison@yahoo.com>
parents:
32137
diff
changeset
|
1 Some Mercurial commands can produce a lot of output, and Mercurial will |
31061
900996da577a
pager: move most help to a new help topic and deprecate extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
2 attempt to use a pager to make those commands more pleasant. |
900996da577a
pager: move most help to a new help topic and deprecate extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
3 |
900996da577a
pager: move most help to a new help topic and deprecate extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
4 To set the pager that should be used, set the application variable:: |
900996da577a
pager: move most help to a new help topic and deprecate extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
5 |
900996da577a
pager: move most help to a new help topic and deprecate extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
6 [pager] |
900996da577a
pager: move most help to a new help topic and deprecate extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
7 pager = less -FRX |
900996da577a
pager: move most help to a new help topic and deprecate extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
8 |
32608
85b978031a75
help: clarify the choice of pager
Xavier Lepaul <xalep@google.com>
parents:
32138
diff
changeset
|
9 If no pager is set in the user or repository configuration, Mercurial uses the |
85b978031a75
help: clarify the choice of pager
Xavier Lepaul <xalep@google.com>
parents:
32138
diff
changeset
|
10 environment variable $PAGER. If $PAGER is not set, pager.pager from the default |
85b978031a75
help: clarify the choice of pager
Xavier Lepaul <xalep@google.com>
parents:
32138
diff
changeset
|
11 or system configuration is used. If none of these are set, a default pager will |
85b978031a75
help: clarify the choice of pager
Xavier Lepaul <xalep@google.com>
parents:
32138
diff
changeset
|
12 be used, typically `less` on Unix and `more` on Windows. |
31061
900996da577a
pager: move most help to a new help topic and deprecate extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
13 |
32137
c4eb23116a09
help: document color/pager pitfalls on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
32104
diff
changeset
|
14 .. container:: windows |
c4eb23116a09
help: document color/pager pitfalls on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
32104
diff
changeset
|
15 |
c4eb23116a09
help: document color/pager pitfalls on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
32104
diff
changeset
|
16 On Windows, `more` is not color aware, so using it effectively disables color. |
c4eb23116a09
help: document color/pager pitfalls on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
32104
diff
changeset
|
17 MSYS and Cygwin shells provide `less` as a pager, which can be configured to |
c4eb23116a09
help: document color/pager pitfalls on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
32104
diff
changeset
|
18 support ANSI color codes. See :hg:`help config.color.pagermode` to configure |
c4eb23116a09
help: document color/pager pitfalls on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
32104
diff
changeset
|
19 the color mode when invoking a pager. |
c4eb23116a09
help: document color/pager pitfalls on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
32104
diff
changeset
|
20 |
31061
900996da577a
pager: move most help to a new help topic and deprecate extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
21 You can disable the pager for certain commands by adding them to the |
900996da577a
pager: move most help to a new help topic and deprecate extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
22 pager.ignore list:: |
900996da577a
pager: move most help to a new help topic and deprecate extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
23 |
900996da577a
pager: move most help to a new help topic and deprecate extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
24 [pager] |
900996da577a
pager: move most help to a new help topic and deprecate extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
25 ignore = version, help, update |
900996da577a
pager: move most help to a new help topic and deprecate extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
26 |
900996da577a
pager: move most help to a new help topic and deprecate extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
27 To ignore global commands like :hg:`version` or :hg:`help`, you have |
900996da577a
pager: move most help to a new help topic and deprecate extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
28 to specify them in your user configuration file. |
900996da577a
pager: move most help to a new help topic and deprecate extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
29 |
900996da577a
pager: move most help to a new help topic and deprecate extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
30 To control whether the pager is used at all for an individual command, |
32084
091d6b9157da
help: apply bulk fixes for indentation and literal blocking issues
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32081
diff
changeset
|
31 you can use --pager=<value>: |
31061
900996da577a
pager: move most help to a new help topic and deprecate extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
32 |
900996da577a
pager: move most help to a new help topic and deprecate extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
33 - use as needed: `auto`. |
900996da577a
pager: move most help to a new help topic and deprecate extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
34 - require the pager: `yes` or `on`. |
900996da577a
pager: move most help to a new help topic and deprecate extension
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
35 - suppress the pager: `no` or `off` (any unrecognized value |
32084
091d6b9157da
help: apply bulk fixes for indentation and literal blocking issues
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
32081
diff
changeset
|
36 will also work). |
31062
88203f26ea57
pager: add a config knob to just globally turn off the pager
Augie Fackler <augie@google.com>
parents:
31061
diff
changeset
|
37 |
88203f26ea57
pager: add a config knob to just globally turn off the pager
Augie Fackler <augie@google.com>
parents:
31061
diff
changeset
|
38 To globally turn off all attempts to use a pager, set:: |
88203f26ea57
pager: add a config knob to just globally turn off the pager
Augie Fackler <augie@google.com>
parents:
31061
diff
changeset
|
39 |
32104
f06d23af6cdf
pager: rename 'pager.enable' to 'ui.paginate'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32084
diff
changeset
|
40 [ui] |
f06d23af6cdf
pager: rename 'pager.enable' to 'ui.paginate'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32084
diff
changeset
|
41 paginate = never |
31062
88203f26ea57
pager: add a config knob to just globally turn off the pager
Augie Fackler <augie@google.com>
parents:
31061
diff
changeset
|
42 |
88203f26ea57
pager: add a config knob to just globally turn off the pager
Augie Fackler <augie@google.com>
parents:
31061
diff
changeset
|
43 which will prevent the pager from running. |