Mercurial > public > mercurial-scm > hg-stable
annotate relnotes/next @ 46254:c4b792fa109e
branchmap: avoid ancestor computations in absence of non-continous branches
The branchhead computation is one of the more heavy operations for
bigger repositories as it has to scan all changesets and potentially
involves the expensive computation of the ancestor sets. Redo the
computation to handle the common cases directly and use tighter
conditions for when the ancestor scan is necessary. Most importantly,
avoid it completely if the non-continous branches are processed in one
update as seen in the initial computation after a clone.
For the Mercurial repository, it gives a small 2-3% performance boost.
For the NetBSD test repository, it cuts the time in half.
Differential Revision: https://phab.mercurial-scm.org/D9631
author | Joerg Sonnenberger <joerg@bec.de> |
---|---|
date | Fri, 18 Dec 2020 14:45:28 +0100 |
parents | bc884e31b8c8 |
children | 38d76908c011 bb3a5c0df06b |
rev | line source |
---|---|
42298
0ed293a3f00e
releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
1 == New Features == |
0ed293a3f00e
releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
2 |
45882
774b1c0f2507
relnotes: document new [command-templates] section
Martin von Zweigbergk <martinvonz@google.com>
parents:
45880
diff
changeset
|
3 * There is a new config section for templates used by hg commands. It |
774b1c0f2507
relnotes: document new [command-templates] section
Martin von Zweigbergk <martinvonz@google.com>
parents:
45880
diff
changeset
|
4 is called `[command-templates]`. Some existing config options have |
774b1c0f2507
relnotes: document new [command-templates] section
Martin von Zweigbergk <martinvonz@google.com>
parents:
45880
diff
changeset
|
5 been deprecated in favor of config options in the new |
774b1c0f2507
relnotes: document new [command-templates] section
Martin von Zweigbergk <martinvonz@google.com>
parents:
45880
diff
changeset
|
6 section. These are: `ui.logtemplate` to `command-templates.log`, |
774b1c0f2507
relnotes: document new [command-templates] section
Martin von Zweigbergk <martinvonz@google.com>
parents:
45880
diff
changeset
|
7 `ui.graphnodetemplate` to `command-templates.graphnode`, |
774b1c0f2507
relnotes: document new [command-templates] section
Martin von Zweigbergk <martinvonz@google.com>
parents:
45880
diff
changeset
|
8 `ui.mergemarkertemplate` to `command-templates.mergemarker`, |
774b1c0f2507
relnotes: document new [command-templates] section
Martin von Zweigbergk <martinvonz@google.com>
parents:
45880
diff
changeset
|
9 `ui.pre-merge-tool-output-template` to |
774b1c0f2507
relnotes: document new [command-templates] section
Martin von Zweigbergk <martinvonz@google.com>
parents:
45880
diff
changeset
|
10 `command-templates.pre-merge-tool-output`. |
774b1c0f2507
relnotes: document new [command-templates] section
Martin von Zweigbergk <martinvonz@google.com>
parents:
45880
diff
changeset
|
11 |
774b1c0f2507
relnotes: document new [command-templates] section
Martin von Zweigbergk <martinvonz@google.com>
parents:
45880
diff
changeset
|
12 * There is a new set of config options for the template used for the |
774b1c0f2507
relnotes: document new [command-templates] section
Martin von Zweigbergk <martinvonz@google.com>
parents:
45880
diff
changeset
|
13 one-line commit summary displayed by various commands, such as `hg |
774b1c0f2507
relnotes: document new [command-templates] section
Martin von Zweigbergk <martinvonz@google.com>
parents:
45880
diff
changeset
|
14 rebase`. The main one is `command-templates.oneline-summary`. That |
774b1c0f2507
relnotes: document new [command-templates] section
Martin von Zweigbergk <martinvonz@google.com>
parents:
45880
diff
changeset
|
15 can be overridden per command with |
774b1c0f2507
relnotes: document new [command-templates] section
Martin von Zweigbergk <martinvonz@google.com>
parents:
45880
diff
changeset
|
16 `command-templates.oneline-summary.<command>`, where `<command>` |
774b1c0f2507
relnotes: document new [command-templates] section
Martin von Zweigbergk <martinvonz@google.com>
parents:
45880
diff
changeset
|
17 can be e.g. `rebase`. As part of this effort, the default format |
774b1c0f2507
relnotes: document new [command-templates] section
Martin von Zweigbergk <martinvonz@google.com>
parents:
45880
diff
changeset
|
18 from `hg rebase` was reorganized a bit. |
45751
60d0634c43c2
relnotes: add diffcontains() to new features list
Yuya Nishihara <yuya@tcha.org>
parents:
45563
diff
changeset
|
19 |
45880
d7a508a75d72
strip: move into core
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
45842
diff
changeset
|
20 * `hg strip`, from the strip extension, is now a core command, `hg |
d7a508a75d72
strip: move into core
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
45842
diff
changeset
|
21 debugstrip`. The extension remains for compatibility. |
d7a508a75d72
strip: move into core
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
45842
diff
changeset
|
22 |
46164
a27aa754d6ba
relnotes: document that `hg extdiff` also got -r replaced by --from/--to
Martin von Zweigbergk <martinvonz@google.com>
parents:
46143
diff
changeset
|
23 * `hg diff` and `hg extdiff` now support `--from <rev>` and `--to <rev>` |
a27aa754d6ba
relnotes: document that `hg extdiff` also got -r replaced by --from/--to
Martin von Zweigbergk <martinvonz@google.com>
parents:
46143
diff
changeset
|
24 arguments as clearer alternatives to `-r <revs>`. `-r <revs>` has been |
46108
aa4dbc14f735
diff: deprecate -r option
Martin von Zweigbergk <martinvonz@google.com>
parents:
46097
diff
changeset
|
25 deprecated. |
46088
64292addbe67
diff: add --from and --to flags as clearer alternative to -r -r
Martin von Zweigbergk <martinvonz@google.com>
parents:
46013
diff
changeset
|
26 |
46013
cb623dedb17c
relnotes: document better memory use for unbundle
Joerg Sonnenberger <joerg@bec.de>
parents:
45882
diff
changeset
|
27 * The memory footprint per changeset during pull/unbundle |
cb623dedb17c
relnotes: document better memory use for unbundle
Joerg Sonnenberger <joerg@bec.de>
parents:
45882
diff
changeset
|
28 operations has been further reduced. |
cb623dedb17c
relnotes: document better memory use for unbundle
Joerg Sonnenberger <joerg@bec.de>
parents:
45882
diff
changeset
|
29 |
46109
bdc2bf68f19e
mergetools: add new conflict marker format with diffs in
Martin von Zweigbergk <martinvonz@google.com>
parents:
46108
diff
changeset
|
30 * There is a new internal merge tool called `internal:mergediff` (can |
bdc2bf68f19e
mergetools: add new conflict marker format with diffs in
Martin von Zweigbergk <martinvonz@google.com>
parents:
46108
diff
changeset
|
31 be set as the value for the `merge` config in the `[ui]` |
bdc2bf68f19e
mergetools: add new conflict marker format with diffs in
Martin von Zweigbergk <martinvonz@google.com>
parents:
46108
diff
changeset
|
32 section). It resolves merges the same was as `internal:merge` and |
bdc2bf68f19e
mergetools: add new conflict marker format with diffs in
Martin von Zweigbergk <martinvonz@google.com>
parents:
46108
diff
changeset
|
33 `internal:merge3`, but it shows conflicts differently. Instead of |
bdc2bf68f19e
mergetools: add new conflict marker format with diffs in
Martin von Zweigbergk <martinvonz@google.com>
parents:
46108
diff
changeset
|
34 showing 2 or 3 snapshots of the conflicting pieces of code, it |
bdc2bf68f19e
mergetools: add new conflict marker format with diffs in
Martin von Zweigbergk <martinvonz@google.com>
parents:
46108
diff
changeset
|
35 shows one snapshot and a diff. This may be useful when at least one |
46140
3ca5ca380a34
filemerge: add support for the new "mergediff" marker style to premerge
Martin von Zweigbergk <martinvonz@google.com>
parents:
46109
diff
changeset
|
36 side of the conflict is similar to the base. The new marker style |
3ca5ca380a34
filemerge: add support for the new "mergediff" marker style to premerge
Martin von Zweigbergk <martinvonz@google.com>
parents:
46109
diff
changeset
|
37 is also supported by "premerge" as |
3ca5ca380a34
filemerge: add support for the new "mergediff" marker style to premerge
Martin von Zweigbergk <martinvonz@google.com>
parents:
46109
diff
changeset
|
38 `merge-tools.<tool>.premerge=keep-mergediff`. |
46097
4d5e2fd53707
singlehead: introduce option to restrict to public changes
Joerg Sonnenberger <joerg@bec.de>
parents:
46088
diff
changeset
|
39 |
46143
634cea2c247f
relnotes: document automatically setting `HGPLAIN=1` for external hooks
Matt Harbison <matt_harbison@yahoo.com>
parents:
46140
diff
changeset
|
40 * External hooks are now called with `HGPLAIN=1` preset. |
634cea2c247f
relnotes: document automatically setting `HGPLAIN=1` for external hooks
Matt Harbison <matt_harbison@yahoo.com>
parents:
46140
diff
changeset
|
41 |
46254
c4b792fa109e
branchmap: avoid ancestor computations in absence of non-continous branches
Joerg Sonnenberger <joerg@bec.de>
parents:
46237
diff
changeset
|
42 * The `branchmap` cache is updated more intelligently and can be |
c4b792fa109e
branchmap: avoid ancestor computations in absence of non-continous branches
Joerg Sonnenberger <joerg@bec.de>
parents:
46237
diff
changeset
|
43 significantly faster for repositories with many branches and changesets. |
c4b792fa109e
branchmap: avoid ancestor computations in absence of non-continous branches
Joerg Sonnenberger <joerg@bec.de>
parents:
46237
diff
changeset
|
44 |
c4b792fa109e
branchmap: avoid ancestor computations in absence of non-continous branches
Joerg Sonnenberger <joerg@bec.de>
parents:
46237
diff
changeset
|
45 |
44401
9dab3fa64325
copy: add experimental support for marking committed copies
Martin von Zweigbergk <martinvonz@google.com>
parents:
44399
diff
changeset
|
46 == New Experimental Features == |
44377
8561ad49915d
revset: add a revset for parents in merge state
Martin von Zweigbergk <martinvonz@google.com>
parents:
44335
diff
changeset
|
47 |
46097
4d5e2fd53707
singlehead: introduce option to restrict to public changes
Joerg Sonnenberger <joerg@bec.de>
parents:
46088
diff
changeset
|
48 * `experimental.single-head-per-branch:public-changes-only` can be used |
4d5e2fd53707
singlehead: introduce option to restrict to public changes
Joerg Sonnenberger <joerg@bec.de>
parents:
46088
diff
changeset
|
49 restrict the single head check to public revision. This is useful for |
4d5e2fd53707
singlehead: introduce option to restrict to public changes
Joerg Sonnenberger <joerg@bec.de>
parents:
46088
diff
changeset
|
50 overlay repository that have both a publishing and non-publishing view |
4d5e2fd53707
singlehead: introduce option to restrict to public changes
Joerg Sonnenberger <joerg@bec.de>
parents:
46088
diff
changeset
|
51 of the same storage. |
45191
fc54f52779dd
relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents:
45190
diff
changeset
|
52 |
fc54f52779dd
relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents:
45190
diff
changeset
|
53 |
fc54f52779dd
relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents:
45190
diff
changeset
|
54 == Bug Fixes == |
fc54f52779dd
relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents:
45190
diff
changeset
|
55 |
fc54f52779dd
relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents:
45190
diff
changeset
|
56 |
45189
045f5361bd12
relnotes: make spacing before new section consistent
Manuel Jacob <me@manueljacob.de>
parents:
45169
diff
changeset
|
57 |
42298
0ed293a3f00e
releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
58 == Backwards Compatibility Changes == |
0ed293a3f00e
releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
59 |
46237
bc884e31b8c8
debuglock: rename flag names to better clarity
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46164
diff
changeset
|
60 * `--force-lock` and `--force-wlock` options on `hg debuglock` command are |
bc884e31b8c8
debuglock: rename flag names to better clarity
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46164
diff
changeset
|
61 renamed to `--force-free-lock` and `--force-free-wlock` respectively. |
45191
fc54f52779dd
relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents:
45190
diff
changeset
|
62 |
44427
acbfa31cfaf2
debugmergestate: make templated
Martin von Zweigbergk <martinvonz@google.com>
parents:
44423
diff
changeset
|
63 |
42298
0ed293a3f00e
releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
64 == Internal API Changes == |
0ed293a3f00e
releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
65 |
45563
2c86b9587740
merge: make low-level update() private (API)
Martin von Zweigbergk <martinvonz@google.com>
parents:
45389
diff
changeset
|
66 |