Mercurial 5.8 (2021-05-01)#
This is an overview of the 5.8 release.
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
andexperimental.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. Seehg 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 byhg diff --change
,hg log -p
hg incoming -p
, andhg 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 bychangelogrevision.branchinfo
.Callbacks for
revlog.addgroup
and thechangelog._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 vianodeconstants
and in some casesnullid
attributes.