relnotes/5.6
author Martin von Zweigbergk <martinvonz@google.com>
Tue, 08 Dec 2020 16:45:13 -0800
changeset 46108 bdc2bf68f19e
parent 45803 84eb4c833c41
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
45369
5178dd2233d0 rename: add support for --at-rev, which marks as copy and removes the source
Martin von Zweigbergk <martinvonz@google.com>
parents: 45240
diff changeset
     3
 * `hg mv -A` can now be used with `--at-rev`. It behaves just like
5178dd2233d0 rename: add support for --at-rev, which marks as copy and removes the source
Martin von Zweigbergk <martinvonz@google.com>
parents: 45240
diff changeset
     4
   `hg cp -A --at-rev`, i.e. it marks the destination as a copy of the
5178dd2233d0 rename: add support for --at-rev, which marks as copy and removes the source
Martin von Zweigbergk <martinvonz@google.com>
parents: 45240
diff changeset
     5
   source whether or not the source still exists (but the source must
5178dd2233d0 rename: add support for --at-rev, which marks as copy and removes the source
Martin von Zweigbergk <martinvonz@google.com>
parents: 45240
diff changeset
     6
   exist in the parent revision).
45169
3496b5f24371 relnotes: extend
Joerg Sonnenberger <joerg@bec.de>
parents: 45062
diff changeset
     7
45751
60d0634c43c2 relnotes: add diffcontains() to new features list
Yuya Nishihara <yuya@tcha.org>
parents: 45557
diff changeset
     8
 * New revset predicate `diffcontains(pattern)` for filtering revisions
60d0634c43c2 relnotes: add diffcontains() to new features list
Yuya Nishihara <yuya@tcha.org>
parents: 45557
diff changeset
     9
   in the same way as `hg grep --diff pattern`.
60d0634c43c2 relnotes: add diffcontains() to new features list
Yuya Nishihara <yuya@tcha.org>
parents: 45557
diff changeset
    10
45795
c4ab93849383 relnotes: mention improved memory use and underlaying API changes
Joerg Sonnenberger <joerg@bec.de>
parents: 45751
diff changeset
    11
 * The memory footprint per changeset and per file during pull/unbundle
c4ab93849383 relnotes: mention improved memory use and underlaying API changes
Joerg Sonnenberger <joerg@bec.de>
parents: 45751
diff changeset
    12
   operations has been significantly reduced.
c4ab93849383 relnotes: mention improved memory use and underlaying API changes
Joerg Sonnenberger <joerg@bec.de>
parents: 45751
diff changeset
    13
45189
045f5361bd12 relnotes: make spacing before new section consistent
Manuel Jacob <me@manueljacob.de>
parents: 45169
diff changeset
    14
44367
9dab3fa64325 copy: add experimental support for marking committed copies
Martin von Zweigbergk <martinvonz@google.com>
parents: 44365
diff changeset
    15
== New Experimental Features ==
44343
8561ad49915d revset: add a revset for parents in merge state
Martin von Zweigbergk <martinvonz@google.com>
parents: 44289
diff changeset
    16
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
    17
fc54f52779dd relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents: 45190
diff changeset
    18
fc54f52779dd relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents: 45190
diff changeset
    19
== 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
    20
fc54f52779dd relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents: 45190
diff changeset
    21
45189
045f5361bd12 relnotes: make spacing before new section consistent
Manuel Jacob <me@manueljacob.de>
parents: 45169
diff changeset
    22
42271
0ed293a3f00e releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
    23
== Backwards Compatibility Changes ==
0ed293a3f00e releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
    24
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
    25
44396
acbfa31cfaf2 debugmergestate: make templated
Martin von Zweigbergk <martinvonz@google.com>
parents: 44392
diff changeset
    26
42271
0ed293a3f00e releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
    27
== Internal API Changes ==
0ed293a3f00e releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
    28
45557
2c86b9587740 merge: make low-level update() private (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 45369
diff changeset
    29
 * `merge.update()` is now private (renamed to `_update()`). Hopefully
2c86b9587740 merge: make low-level update() private (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 45369
diff changeset
    30
   the higher-level functions available in the same module cover your
2c86b9587740 merge: make low-level update() private (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 45369
diff changeset
    31
   use cases.
2c86b9587740 merge: make low-level update() private (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 45369
diff changeset
    32
45795
c4ab93849383 relnotes: mention improved memory use and underlaying API changes
Joerg Sonnenberger <joerg@bec.de>
parents: 45751
diff changeset
    33
 * `phases.registernew` now takes a set of revisions instead of a list
c4ab93849383 relnotes: mention improved memory use and underlaying API changes
Joerg Sonnenberger <joerg@bec.de>
parents: 45751
diff changeset
    34
   of nodes. `phases.advanceboundary` takes an optional set of revisions
c4ab93849383 relnotes: mention improved memory use and underlaying API changes
Joerg Sonnenberger <joerg@bec.de>
parents: 45751
diff changeset
    35
   in addition to the list of nodes. The corresponeding members of the
c4ab93849383 relnotes: mention improved memory use and underlaying API changes
Joerg Sonnenberger <joerg@bec.de>
parents: 45751
diff changeset
    36
   `phasecache` class follow this change.
c4ab93849383 relnotes: mention improved memory use and underlaying API changes
Joerg Sonnenberger <joerg@bec.de>
parents: 45751
diff changeset
    37
c4ab93849383 relnotes: mention improved memory use and underlaying API changes
Joerg Sonnenberger <joerg@bec.de>
parents: 45751
diff changeset
    38
 * The `addgroup` member of `revlog` classes no longer keeps a list of
c4ab93849383 relnotes: mention improved memory use and underlaying API changes
Joerg Sonnenberger <joerg@bec.de>
parents: 45751
diff changeset
    39
   all found nodes. It now returns True iff a node was found in the group.
c4ab93849383 relnotes: mention improved memory use and underlaying API changes
Joerg Sonnenberger <joerg@bec.de>
parents: 45751
diff changeset
    40
   An optional callback for duplicated nodes can be used by callers to keep
c4ab93849383 relnotes: mention improved memory use and underlaying API changes
Joerg Sonnenberger <joerg@bec.de>
parents: 45751
diff changeset
    41
   track of all nodes themselve.
c4ab93849383 relnotes: mention improved memory use and underlaying API changes
Joerg Sonnenberger <joerg@bec.de>
parents: 45751
diff changeset
    42
c4ab93849383 relnotes: mention improved memory use and underlaying API changes
Joerg Sonnenberger <joerg@bec.de>
parents: 45751
diff changeset
    43
 * The `_chaininfocache` of `revlog` classes has been changed from a dict
c4ab93849383 relnotes: mention improved memory use and underlaying API changes
Joerg Sonnenberger <joerg@bec.de>
parents: 45751
diff changeset
    44
   to a LRU cache.