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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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