relnotes/next
author Martin von Zweigbergk <martinvonz@google.com>
Tue, 08 Dec 2020 16:45:13 -0800
changeset 46108 bdc2bf68f19e
parent 46107 aa4dbc14f735
child 46139 3ca5ca380a34
permissions -rw-r--r--
mergetools: add new conflict marker format with diffs in I use 3-way conflict markers. Often when I resolve them, I manually compare one the base with one side and apply the differences to the other side. That can be hard when the conflict marker is large. This patch introduces a new type of conflict marker, which I'm hoping will make it easier to resolve conflicts. The new format uses `<<<<<<<` and `>>>>>>>` to open and close the markers, just like our existing 2-way and 3-way conflict markers. Instead of having 2 or 3 snapshots (left+right or left+base+right), it has a sequence of diffs. A diff looks like this: ``` ------- base +++++++ left a -b +c d ``` A diff that adds one side ("diff from nothing") has a `=======` header instead and does not have have `+` prefixed on its lines. A regular 3-way merge can be viewed as adding one side plus a diff between the base and the other side. It thus has two ways of being represented, depending on which side is being diffed: ``` <<<<<<< ======= left contents on left ------- base +++++++ right contents on -left +right >>>>>>> ``` or ``` <<<<<<< ------- base +++++++ left contents on -right +left ======= right contents on right >>>>>>> ``` I've made it so the new merge tool tries to pick a version that has the most common lines (no difference in the example above). I've called the new tool "mergediff" to stick to the convention of starting with "merge" if the tool tries a regular 3-way merge. The idea came from my pet VCS (placeholder name `jj`), which has support for octopus merges and other ways of ending up with merges of more than 3 versions. I wanted to be able to represent such conflicts in the working copy and therefore thought of this format (although I have not yet implemented it in my VCS). I then attended a meeting with Larry McVoy, who said BitKeeper has an option (`bk smerge -g`) for showing a similar format, which reminded me to actually attempt this in Mercurial. Differential Revision: https://phab.mercurial-scm.org/D9551
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
42271
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
45867
774b1c0f2507 relnotes: document new [command-templates] section
Martin von Zweigbergk <martinvonz@google.com>
parents: 45865
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: 45865
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: 45865
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: 45865
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: 45865
diff changeset
     7
   `ui.graphnodetemplate` to `command-templates.graphnode`,
774b1c0f2507 relnotes: document new [command-templates] section
Martin von Zweigbergk <martinvonz@google.com>
parents: 45865
diff changeset
     8
   `ui.mergemarkertemplate` to `command-templates.mergemarker`,
774b1c0f2507 relnotes: document new [command-templates] section
Martin von Zweigbergk <martinvonz@google.com>
parents: 45865
diff changeset
     9
   `ui.pre-merge-tool-output-template` to
774b1c0f2507 relnotes: document new [command-templates] section
Martin von Zweigbergk <martinvonz@google.com>
parents: 45865
diff changeset
    10
   `command-templates.pre-merge-tool-output`.
774b1c0f2507 relnotes: document new [command-templates] section
Martin von Zweigbergk <martinvonz@google.com>
parents: 45865
diff changeset
    11
774b1c0f2507 relnotes: document new [command-templates] section
Martin von Zweigbergk <martinvonz@google.com>
parents: 45865
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: 45865
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: 45865
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: 45865
diff changeset
    15
   can be overridden per command with
774b1c0f2507 relnotes: document new [command-templates] section
Martin von Zweigbergk <martinvonz@google.com>
parents: 45865
diff changeset
    16
   `command-templates.oneline-summary.<command>`, where `<command>`
774b1c0f2507 relnotes: document new [command-templates] section
Martin von Zweigbergk <martinvonz@google.com>
parents: 45865
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: 45865
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: 45557
diff changeset
    19
45865
d7a508a75d72 strip: move into core
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents: 45823
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: 45823
diff changeset
    21
   debugstrip`. The extension remains for compatibility.
d7a508a75d72 strip: move into core
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents: 45823
diff changeset
    22
46087
64292addbe67 diff: add --from and --to flags as clearer alternative to -r -r
Martin von Zweigbergk <martinvonz@google.com>
parents: 45998
diff changeset
    23
 * `hg diff` now supports `--from <rev>` and `--to <rev>` arguments as
46107
aa4dbc14f735 diff: deprecate -r option
Martin von Zweigbergk <martinvonz@google.com>
parents: 46096
diff changeset
    24
   clearer alternatives to `-r <revs>`. `-r <revs>` has been
aa4dbc14f735 diff: deprecate -r option
Martin von Zweigbergk <martinvonz@google.com>
parents: 46096
diff changeset
    25
   deprecated.
46087
64292addbe67 diff: add --from and --to flags as clearer alternative to -r -r
Martin von Zweigbergk <martinvonz@google.com>
parents: 45998
diff changeset
    26
45998
cb623dedb17c relnotes: document better memory use for unbundle
Joerg Sonnenberger <joerg@bec.de>
parents: 45867
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: 45867
diff changeset
    28
   operations has been further reduced.
cb623dedb17c relnotes: document better memory use for unbundle
Joerg Sonnenberger <joerg@bec.de>
parents: 45867
diff changeset
    29
46108
bdc2bf68f19e mergetools: add new conflict marker format with diffs in
Martin von Zweigbergk <martinvonz@google.com>
parents: 46107
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: 46107
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: 46107
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: 46107
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: 46107
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: 46107
diff changeset
    35
   shows one snapshot and a diff. This may be useful when at least one
bdc2bf68f19e mergetools: add new conflict marker format with diffs in
Martin von Zweigbergk <martinvonz@google.com>
parents: 46107
diff changeset
    36
   side of the conflict is similar to the base.
46096
4d5e2fd53707 singlehead: introduce option to restrict to public changes
Joerg Sonnenberger <joerg@bec.de>
parents: 46087
diff changeset
    37
44367
9dab3fa64325 copy: add experimental support for marking committed copies
Martin von Zweigbergk <martinvonz@google.com>
parents: 44365
diff changeset
    38
== New Experimental Features ==
44343
8561ad49915d revset: add a revset for parents in merge state
Martin von Zweigbergk <martinvonz@google.com>
parents: 44289
diff changeset
    39
46096
4d5e2fd53707 singlehead: introduce option to restrict to public changes
Joerg Sonnenberger <joerg@bec.de>
parents: 46087
diff changeset
    40
* `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: 46087
diff changeset
    41
  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: 46087
diff changeset
    42
  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: 46087
diff changeset
    43
  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
    44
fc54f52779dd relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents: 45190
diff changeset
    45
fc54f52779dd relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents: 45190
diff changeset
    46
== 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
    47
fc54f52779dd relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents: 45190
diff changeset
    48
45189
045f5361bd12 relnotes: make spacing before new section consistent
Manuel Jacob <me@manueljacob.de>
parents: 45169
diff changeset
    49
42271
0ed293a3f00e releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
    50
== Backwards Compatibility Changes ==
0ed293a3f00e releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
    51
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
44396
acbfa31cfaf2 debugmergestate: make templated
Martin von Zweigbergk <martinvonz@google.com>
parents: 44392
diff changeset
    53
42271
0ed293a3f00e releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
    54
== Internal API Changes ==
0ed293a3f00e releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
    55
45557
2c86b9587740 merge: make low-level update() private (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 45369
diff changeset
    56