relnotes/next
author Joerg Sonnenberger <joerg@bec.de>
Wed, 13 Jan 2021 16:14:58 +0100
changeset 46780 6266d19556ad
parent 46779 49fd21f32695
child 46998 65d18001cfbf
permissions -rw-r--r--
node: introduce nodeconstants class In preparing for moving from SHA1 hashes to a modern hash function, place nullid and other constant magic vules in a class. Provide the active set of constants in the repository and push it down. Provide nullid directly in strategic places like the repository as it is accessed very often. This changeset introduces the API change, but not the mechanical replacement of the node.py attributes itself. Differential Revision: https://phab.mercurial-scm.org/D9750

== 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.

== 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 ==



== 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.


== 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.