Mercurial 6.0 (2021-11-17)#
This release was delayed due to the ongoing efforts to improve robustness of the UX on Windows, especially on Python 3.
This was supposed to be the last release to support Python 2, but it was instead decided to wait until 6.2. 6.1 is the last release to support Python 2.
Mercurial 6.0.3#
Fix an infinite loop in edge cases of the pure Python dirstate-v2 packer
Fix a small race condition with deleted files in Rust-augmented status
Small improvement to Python 3.11 compatibility
Fixed some typos in help messages that caused missing sections
Centos -> Rockylinux packaging
Mercurial 6.0.2#
Fix
hg incomingandhg outgoingwith remote subrepos on WindowsFix Rust build on MacOS
Fix a (15 year old?) bug where some data loss could happen in a very tight race window (f38ae2d7390e + ccd9cb73125c)
Remove support for running
hg unamendon merge changesets at it was never actually implementedFix stream-clone requirements filtering which caused some stream-clones to be unusable from an older version of Mercurial
Rename dirstate-v2 configuration name from
exp-rc-dirstate-v2touse-dirstate-v2. This was overlooked in6.0, the old name will be kept as an alias for compatibility.Fix a bug where the branchmap could point to uncommitted data
Mercurial 6.0.1#
Improve documentation around Rust (see
hg help rust) and rust-related actionsImprove upgrade/downgrade edge cases for
dirstate-v2Make the test suite nicer to big-endian platforms
Make the test suite nicer to NetBSD
Fix a performance regression on fsmonitor (issue6612)
Add fixes for Python 3.10
Fix a deadlock when using
sparseandshare-safetogether
Mercurial 6.0#
New Features#
debugrebuildfncachenow has an option to rebuild only the index filesa new
bookmarks.modepath option have been introduced to control the bookmark update strategy during exchange with a peer. Seehg help configand look for sectionpathsfor details.the new
bookmarks.modepaths option supports the new modemirror. Seehg help configand look for sectionpathsfor details.more commands support detailed exit codes when config
ui.detailed-exit-codesis enabled
Default Format Change#
New Experimental Features#
‘’’Major feature’’’: version 2 of the dirstate is available (the first version is as old as Mercurial itself). It allows for much faster working copy inspection (status, diff, commit, update, etc.) and richer information (symlink and exec info on Windows, etc.). The format has been frozen with room for some future evolution and the current implementations (Python, Python + C, Python + Rust or pure Rust) should be compatible with any future change or optimization that the format allows. You can get more information [[https://www.mercurial-scm.org/repo/hg/file/tip/mercurial/helptext/internals/dirstate-v2.txt | in the internal documentation]]
Added a new
web.full-garbage-collection-rateto control performance. See de2e04fe4897a554b9ef433167f11ea4feb2e09c for more informationAdded a new
histedit.later-commits-firstoption to affect the ordering of commits inchisteditto match the order inhg log -G. It will affect the text-based version before graduating from experimental.
Bug Fixes#
hg fix --working-dirnow correctly works when in an uncommitted merge stateUnintentional duplicated calls to
hg fix’s internals were removed, making it potentially much fasterrhg catcan be called without a revisionrhg catcan be called with the.revisionrhg catis more robust than before with regards to edge cases. Some still remain like a tag or bookmark that is ambiguous with a nodeid prefix, only nodeids (prefixed or not) are supported as of now.rhg catis even fasterrhg(Rust fast-path forhg) now supports the full config list syntaxrhgnow parses some corner-cases for revsets correctlyFixed an
fsmonitoron Python 3 during exception handlingLots of Windows fixes
Lots of miscellaneous other fixes
Removed a CPython-specific compatibility hack to improve support for alternative Python implementations
Added a compatibility fix for Python 3.11
Backwards Compatibility Changes#
Internal API Changes#
The following functions have been removed:
dirstate.normaldirstate.normallookupdirstate.otherparentdirstate.adddirstate.addfiledirstate.removedirstate.dropdirstate.dropfiledirstate.__getitem__dirstatemap.nonnormalentriesdirstatemap.nonnormalsetdirstatemap.otherparentsetdirstatemap.non_normal_or_other_parent_pathsdirstateitem.dm_nonnormaldirstateitem.dm_otherparentdirstateitem.merged_removeddirstateitem.from_p2dirstateitem.mergeddirstateitem.new_mergeddirstateitem.new_addeddirstateitem.new_from_p2dirstateitem.new_possibly_dirtydirstateitem.new_normaldirstateitem.from_p2_removed
Miscellaneous:
wireprotov1peer’sbatchableis now a simple function and not a generator anymoreThe Rust extensions (and by extension the experimental
rhg status) only use a tree-based dirstate in-memory, even when using dirstate-v1. See bf8837e3d7cec40fe649c47163a3154dda03fa16 for more detailsThe Rust minimum supported version is now 1.48.0 in accordance with out policy of keeping up with Debian stable
The test harness plays nicer with the NixOS sandbox
The test harness plays nicer with NetBSD
Improved rpm packaging