relnotes/5.1
author Manuel Jacob <me@manueljacob.de>
Mon, 11 Jul 2022 01:51:20 +0200
branchstable
changeset 49378 094a5fa3cf52
parent 42692 cba59b338976
permissions -rw-r--r--
procutil: make stream detection in make_line_buffered more correct and strict In make_line_buffered(), we don’t want to wrap the stream if we know that lines get flushed to the underlying raw stream already. Previously, the heuristic was too optimistic. It assumed that any stream which is not an instance of io.BufferedIOBase doesn’t need wrapping. However, there are buffered streams that aren’t instances of io.BufferedIOBase, like Mercurial’s own winstdout. The new logic is different in two ways: First, only for the check, if unwraps any combination of WriteAllWrapper and winstdout. Second, it skips wrapping the stream only if it is an instance of io.RawIOBase (or already wrapped). If it is an instance of io.BufferedIOBase, it gets wrapped. In any other case, the function raises an exception. This ensures that, if an unknown stream is passed or we add another wrapper in the future, we don’t wrap the stream if it’s already line buffered or not wrap the stream if it’s not line buffered. In fact, this was already helpful during development of this change. Without it, I possibly would have forgot that WriteAllWrapper needs to be ignored for the check, leading to unnecessary wrapping if stdout is unbuffered. The alternative would have been to always wrap unknown streams. However, I don’t think that anyone would benefit from being less strict. We can expect streams from the standard library to be subclassing either io.RawIOBase or io.BufferedIOBase, so running Mercurial in the standard way should not regress by this change. Py2exe might replace sys.stdout and sys.stderr, but that currently breaks Mercurial anyway and also these streams don’t claim to be interactive, so this function is not called for them.
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
0ed293a3f00e releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
     3
 * New config `commands.commit.post-status` shows status after successful
0ed293a3f00e releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
     4
 commit.
0ed293a3f00e releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
     5
42498
089f14dd7df3 relnotes: document template support for `hg root`
Martin von Zweigbergk <martinvonz@google.com>
parents: 42405
diff changeset
     6
 * `hg root` now has templating support, including support for showing
089f14dd7df3 relnotes: document template support for `hg root`
Martin von Zweigbergk <martinvonz@google.com>
parents: 42405
diff changeset
     7
   where a repo share's source is. See `hg help -v root` for details.
089f14dd7df3 relnotes: document template support for `hg root`
Martin von Zweigbergk <martinvonz@google.com>
parents: 42405
diff changeset
     8
42552
4cafbd3b50c6 relnotes: document the new --force-close-branch flag
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 42541
diff changeset
     9
 * New `--force-close-branch` flag for `hg commit` to forcibly close
4cafbd3b50c6 relnotes: document the new --force-close-branch flag
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 42541
diff changeset
    10
   branch from a non-head changeset.
4cafbd3b50c6 relnotes: document the new --force-close-branch flag
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 42541
diff changeset
    11
42578
9f73620a65fe relnotes: document new range-select mechanism in crecord
Kyle Lippincott <spectral@google.com>
parents: 42574
diff changeset
    12
 * The curses-based interface for commands like `hg commit -i` now supports
9f73620a65fe relnotes: document new range-select mechanism in crecord
Kyle Lippincott <spectral@google.com>
parents: 42574
diff changeset
    13
   a range-select mechanism. Select the first line using space like before,
9f73620a65fe relnotes: document new range-select mechanism in crecord
Kyle Lippincott <spectral@google.com>
parents: 42574
diff changeset
    14
   navigate to the last line, and press X (capital x) to set all items in
9f73620a65fe relnotes: document new range-select mechanism in crecord
Kyle Lippincott <spectral@google.com>
parents: 42574
diff changeset
    15
   the range at once. Lowercase x has been added as a synonym for space to
9f73620a65fe relnotes: document new range-select mechanism in crecord
Kyle Lippincott <spectral@google.com>
parents: 42574
diff changeset
    16
   help reinforce the mechanism, and pressing enter/return continues to be a
9f73620a65fe relnotes: document new range-select mechanism in crecord
Kyle Lippincott <spectral@google.com>
parents: 42574
diff changeset
    17
   synonym for "toggle the current line and move down to the next item in
9f73620a65fe relnotes: document new range-select mechanism in crecord
Kyle Lippincott <spectral@google.com>
parents: 42574
diff changeset
    18
   this section."
42309
604c086ddde6 log: add config for making `hg log -G` always topo-sorted
Martin von Zweigbergk <martinvonz@google.com>
parents: 42271
diff changeset
    19
604c086ddde6 log: add config for making `hg log -G` always topo-sorted
Martin von Zweigbergk <martinvonz@google.com>
parents: 42271
diff changeset
    20
== New Experimental Features ==
604c086ddde6 log: add config for making `hg log -G` always topo-sorted
Martin von Zweigbergk <martinvonz@google.com>
parents: 42271
diff changeset
    21
604c086ddde6 log: add config for making `hg log -G` always topo-sorted
Martin von Zweigbergk <martinvonz@google.com>
parents: 42271
diff changeset
    22
 * New config `experimental.log.topo` makes `hg log -G` use
604c086ddde6 log: add config for making `hg log -G` always topo-sorted
Martin von Zweigbergk <martinvonz@google.com>
parents: 42271
diff changeset
    23
   topological sorting. This is especially useful for aliases since it
604c086ddde6 log: add config for making `hg log -G` always topo-sorted
Martin von Zweigbergk <martinvonz@google.com>
parents: 42271
diff changeset
    24
   lets the alias accept an `-r` option while still using topological
604c086ddde6 log: add config for making `hg log -G` always topo-sorted
Martin von Zweigbergk <martinvonz@google.com>
parents: 42271
diff changeset
    25
   sorting with or without the `-r` (unlike if you use the `sort(...,
604c086ddde6 log: add config for making `hg log -G` always topo-sorted
Martin von Zweigbergk <martinvonz@google.com>
parents: 42271
diff changeset
    26
   topo)` revset).
604c086ddde6 log: add config for making `hg log -G` always topo-sorted
Martin von Zweigbergk <martinvonz@google.com>
parents: 42271
diff changeset
    27
604c086ddde6 log: add config for making `hg log -G` always topo-sorted
Martin von Zweigbergk <martinvonz@google.com>
parents: 42271
diff changeset
    28
42271
0ed293a3f00e releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
    29
== Bug Fixes  ==
0ed293a3f00e releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
    30
42405
0c72eddb4be5 templatekw: make {file_*} compare to both merge parents (issue4292)
Martin von Zweigbergk <martinvonz@google.com>
parents: 42372
diff changeset
    31
 * issue4292: "hg log and {files} {file_adds} {file_mods} {file_dels}
0c72eddb4be5 templatekw: make {file_*} compare to both merge parents (issue4292)
Martin von Zweigbergk <martinvonz@google.com>
parents: 42372
diff changeset
    32
   in template show wrong files on merged revision". See details in
0c72eddb4be5 templatekw: make {file_*} compare to both merge parents (issue4292)
Martin von Zweigbergk <martinvonz@google.com>
parents: 42372
diff changeset
    33
   "Backwards Compatibility Changes".
0c72eddb4be5 templatekw: make {file_*} compare to both merge parents (issue4292)
Martin von Zweigbergk <martinvonz@google.com>
parents: 42372
diff changeset
    34
42271
0ed293a3f00e releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
    35
0ed293a3f00e releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
    36
== Backwards Compatibility Changes ==
0ed293a3f00e releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
    37
42334
bcb1a2b6cd00 relnotes: mention removed support for mixed log graph lines
Martin von Zweigbergk <martinvonz@google.com>
parents: 42309
diff changeset
    38
 * Removed (experimental) support for log graph lines mixing
bcb1a2b6cd00 relnotes: mention removed support for mixed log graph lines
Martin von Zweigbergk <martinvonz@google.com>
parents: 42309
diff changeset
    39
   parent/grandparent styles. Setting
bcb1a2b6cd00 relnotes: mention removed support for mixed log graph lines
Martin von Zweigbergk <martinvonz@google.com>
parents: 42309
diff changeset
    40
   e.g. `experimental.graphstyle.parent = !` and
bcb1a2b6cd00 relnotes: mention removed support for mixed log graph lines
Martin von Zweigbergk <martinvonz@google.com>
parents: 42309
diff changeset
    41
   `experimental.graphstyle.grandparent = 3.` would use `!` for the
bcb1a2b6cd00 relnotes: mention removed support for mixed log graph lines
Martin von Zweigbergk <martinvonz@google.com>
parents: 42309
diff changeset
    42
   first three lines of the graph and then `.`. This is no longer
bcb1a2b6cd00 relnotes: mention removed support for mixed log graph lines
Martin von Zweigbergk <martinvonz@google.com>
parents: 42309
diff changeset
    43
   supported.
bcb1a2b6cd00 relnotes: mention removed support for mixed log graph lines
Martin von Zweigbergk <martinvonz@google.com>
parents: 42309
diff changeset
    44
42372
ba6ca4e80607 relnotes: document changed behavior of ui.origbackuppath pointing to file
Martin von Zweigbergk <martinvonz@google.com>
parents: 42343
diff changeset
    45
 * If `ui.origbackuppath` had been (incorrectly) configured to point
ba6ca4e80607 relnotes: document changed behavior of ui.origbackuppath pointing to file
Martin von Zweigbergk <martinvonz@google.com>
parents: 42343
diff changeset
    46
   to a file, we will now replace that file by a directory and put
ba6ca4e80607 relnotes: document changed behavior of ui.origbackuppath pointing to file
Martin von Zweigbergk <martinvonz@google.com>
parents: 42343
diff changeset
    47
   backups in that directory. This is similar to how we would
ba6ca4e80607 relnotes: document changed behavior of ui.origbackuppath pointing to file
Martin von Zweigbergk <martinvonz@google.com>
parents: 42343
diff changeset
    48
   previously replace files *in* the configured directory by
ba6ca4e80607 relnotes: document changed behavior of ui.origbackuppath pointing to file
Martin von Zweigbergk <martinvonz@google.com>
parents: 42343
diff changeset
    49
   subdirectories.
42271
0ed293a3f00e releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
    50
42405
0c72eddb4be5 templatekw: make {file_*} compare to both merge parents (issue4292)
Martin von Zweigbergk <martinvonz@google.com>
parents: 42372
diff changeset
    51
* Template keyword `{file_mods}`, `{file_adds}`, and `{file_dels}`
0c72eddb4be5 templatekw: make {file_*} compare to both merge parents (issue4292)
Martin von Zweigbergk <martinvonz@google.com>
parents: 42372
diff changeset
    52
   have changed behavior on merge commits. They used to be relative to
0c72eddb4be5 templatekw: make {file_*} compare to both merge parents (issue4292)
Martin von Zweigbergk <martinvonz@google.com>
parents: 42372
diff changeset
    53
   the first parent, but they now consider both parents. `{file_adds}`
0c72eddb4be5 templatekw: make {file_*} compare to both merge parents (issue4292)
Martin von Zweigbergk <martinvonz@google.com>
parents: 42372
diff changeset
    54
   shows files that exists in the commit but did not exist in either
0c72eddb4be5 templatekw: make {file_*} compare to both merge parents (issue4292)
Martin von Zweigbergk <martinvonz@google.com>
parents: 42372
diff changeset
    55
   parent. `{file_dels}` shows files that do not exist in the commit
0c72eddb4be5 templatekw: make {file_*} compare to both merge parents (issue4292)
Martin von Zweigbergk <martinvonz@google.com>
parents: 42372
diff changeset
    56
   but existed in either parent. `{file_mods}` show the remaining
0c72eddb4be5 templatekw: make {file_*} compare to both merge parents (issue4292)
Martin von Zweigbergk <martinvonz@google.com>
parents: 42372
diff changeset
    57
   files from `{files}` that were not in the other two
0c72eddb4be5 templatekw: make {file_*} compare to both merge parents (issue4292)
Martin von Zweigbergk <martinvonz@google.com>
parents: 42372
diff changeset
    58
   sets.
0c72eddb4be5 templatekw: make {file_*} compare to both merge parents (issue4292)
Martin von Zweigbergk <martinvonz@google.com>
parents: 42372
diff changeset
    59
0c72eddb4be5 templatekw: make {file_*} compare to both merge parents (issue4292)
Martin von Zweigbergk <martinvonz@google.com>
parents: 42372
diff changeset
    60
42271
0ed293a3f00e releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
    61
== Internal API Changes ==
0ed293a3f00e releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
    62
0ed293a3f00e releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
    63
 * Matchers are no longer iterable. Use `match.files()` instead.
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 42334
diff changeset
    64
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 42334
diff changeset
    65
 * `match.visitdir()` and `match.visitchildrenset()` now expect the
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 42334
diff changeset
    66
   empty string instead of '.' to indicate the root directory.
42343
d8e55c0c642c util: make util.dirs() and util.finddirs() include root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 42341
diff changeset
    67
d8e55c0c642c util: make util.dirs() and util.finddirs() include root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 42341
diff changeset
    68
 * `util.dirs()` and `util.finddirs()` now include an entry for the
d8e55c0c642c util: make util.dirs() and util.finddirs() include root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 42341
diff changeset
    69
   root directory (empty string).
42535
df5f674050b7 relnotes: added description about statemod._statecheck
Taapas Agrawal <taapas2897@gmail.com>
parents: 42498
diff changeset
    70
42541
3de4f17f4824 shelve: move shelve extension to core
Navaneeth Suresh <navaneeths1998@gmail.com>
parents: 42535
diff changeset
    71
 * shelve is no longer an extension now. it will be turned on by default.
3de4f17f4824 shelve: move shelve extension to core
Navaneeth Suresh <navaneeths1998@gmail.com>
parents: 42535
diff changeset
    72
42535
df5f674050b7 relnotes: added description about statemod._statecheck
Taapas Agrawal <taapas2897@gmail.com>
parents: 42498
diff changeset
    73
 * New API to manage unfinished operations: Earlier there were distinct APIs
df5f674050b7 relnotes: added description about statemod._statecheck
Taapas Agrawal <taapas2897@gmail.com>
parents: 42498
diff changeset
    74
   which dealt with unfinished states and separate lists maintaining them
df5f674050b7 relnotes: added description about statemod._statecheck
Taapas Agrawal <taapas2897@gmail.com>
parents: 42498
diff changeset
    75
   that are `cmdutil.afterresolvestates`, `cmdutil.unfinishedstates` and
df5f674050b7 relnotes: added description about statemod._statecheck
Taapas Agrawal <taapas2897@gmail.com>
parents: 42498
diff changeset
    76
   `cmdutil.STATES`. Now these have been unified to a single
df5f674050b7 relnotes: added description about statemod._statecheck
Taapas Agrawal <taapas2897@gmail.com>
parents: 42498
diff changeset
    77
   API which handles the various states and their utilities. This API
df5f674050b7 relnotes: added description about statemod._statecheck
Taapas Agrawal <taapas2897@gmail.com>
parents: 42498
diff changeset
    78
   has been added to `state.py`. Now instead of adding to these 3 lists
df5f674050b7 relnotes: added description about statemod._statecheck
Taapas Agrawal <taapas2897@gmail.com>
parents: 42498
diff changeset
    79
   independently a state for a new operation can be registered using
df5f674050b7 relnotes: added description about statemod._statecheck
Taapas Agrawal <taapas2897@gmail.com>
parents: 42498
diff changeset
    80
   `addunfinished()` in `state` module.
df5f674050b7 relnotes: added description about statemod._statecheck
Taapas Agrawal <taapas2897@gmail.com>
parents: 42498
diff changeset
    81
df5f674050b7 relnotes: added description about statemod._statecheck
Taapas Agrawal <taapas2897@gmail.com>
parents: 42498
diff changeset
    82
 * `cmdutil.checkunfinished()` now includes detection for merge too.
42574
d28d91f9f35a py3: don't run source transformer on hgext3rd (extensions)
Martin von Zweigbergk <martinvonz@google.com>
parents: 42552
diff changeset
    83
42579
b8d54f4625cb merge: disallow merge abort in case of an unfinished operation (issue6160)
Taapas Agrawal <taapas2897@gmail.com>
parents: 42578
diff changeset
    84
 * merge abort has been disallowed in case an operation of higher
b8d54f4625cb merge: disallow merge abort in case of an unfinished operation (issue6160)
Taapas Agrawal <taapas2897@gmail.com>
parents: 42578
diff changeset
    85
   precedence is in progress to avoid cases of partial abort of
b8d54f4625cb merge: disallow merge abort in case of an unfinished operation (issue6160)
Taapas Agrawal <taapas2897@gmail.com>
parents: 42578
diff changeset
    86
   operations.
b8d54f4625cb merge: disallow merge abort in case of an unfinished operation (issue6160)
Taapas Agrawal <taapas2897@gmail.com>
parents: 42578
diff changeset
    87
42574
d28d91f9f35a py3: don't run source transformer on hgext3rd (extensions)
Martin von Zweigbergk <martinvonz@google.com>
parents: 42552
diff changeset
    88
 * We used to automatically attempt to make extensions compatible with
d28d91f9f35a py3: don't run source transformer on hgext3rd (extensions)
Martin von Zweigbergk <martinvonz@google.com>
parents: 42552
diff changeset
    89
   Python 3 (by translating their source code while loading it). We no
d28d91f9f35a py3: don't run source transformer on hgext3rd (extensions)
Martin von Zweigbergk <martinvonz@google.com>
parents: 42552
diff changeset
    90
   longer do that.