view relnotes/5.8 @ 48461:eaad68294904

status: when extracting arguments from `opts`, use the same default values Sometimes other code, such as commit when using `commands.commit.post-status`, calls `commands.status()` without going through the normal dispatch mechanism that would typically fill in the args to be something besides None. As a "defense in depth" mechanism for a bug where Mercurial would crash if both `commands.commit.post-status` and `experimental.directaccess` were enabled, let's sanitize these values to be identical to the values they would have when the user invoked this method from the commandline. Differential Revision: https://phab.mercurial-scm.org/D11884
author Kyle Lippincott <spectral@google.com>
date Tue, 07 Dec 2021 15:53:55 -0800
parents 32b527417ba3
children
line wrap: on
line source

== New Features ==
 
 * `hg purge` is now a core command using `--confirm` by default.
 
 * The `rev-branch-cache` is now updated incrementally whenever changesets
   are added.

 * The new options `experimental.bundlecompthreads` and
   `experimental.bundlecompthreads.<engine>` can be used to instruct
   the compression engines for bundle operations to use multiple threads
   for compression. The default is single threaded operation. Currently
   only supported for zstd.

== Default Format Change ==

These changes affects newly created repositories (or new clone) done with
Mercurial 5.8.

  * The `ZSTD` compression will now be used by default for new repositories
    when available. This compression format was introduced in Mercurial 5.0,
    released in May 2019. See `hg help config.format.revlog-compression` for
    details.

  * Mercurial installation built with the Rust parts will now use the
    "persistent nodemap" feature by default. This feature was introduced in
    Mercurial 5.4 (May 2020). However Mercurial instalation built without the
    fast Rust implementation will refuse to interract with them by default.
    This restriction can be lifted through configuration.

    See `hg help config.format.use-persistent-nodemap` for details

== New Experimental Features ==

 * There's a new `diff.merge` config option to show the changes
    relative to an automerge for merge changesets. This makes it
    easier to detect and review manual changes performed in merge
    changesets. It is supported by `hg diff --change`, `hg log -p`
    `hg incoming -p`, and `hg outgoing -p` so far.


== Bug Fixes ==

 * gracefully recover from inconsistent persistent-nodemap data from disk.


== Backwards Compatibility Changes ==

 * In normal repositories, the first parent of a changeset is not null,
   unless both parents are null (like the first changeset). Some legacy
   repositories violate this condition. The revlog code will now
   silentely swap the parents if this condition is tested. This can
   change the output of `hg log` when explicitly asking for first or
   second parent. The changesets "nodeid" are not affected.


== Internal API Changes ==

 * `changelog.branchinfo` is deprecated and will be removed after 5.8.
   It is superseded by `changelogrevision.branchinfo`.

 * Callbacks for revlog.addgroup and the changelog._nodeduplicatecallback hook
   now get a revision number as argument instead of a node.

 * revlog.addrevision returns the revision number instead of the node.

 * `nodes.nullid` and related constants are being phased out as part of
   the deprecation of SHA1. Repository instances and related classes
   provide access via `nodeconstants` and in some cases `nullid` attributes.