Mercurial 5.9 (2021-08-16)#
New Features#
- hg confignow has a- --sourceoption to show where each configuration value comes from.
- Introduced a command (debug-repair-issue6528) to repair repositories affected by issue6528 where certain files would show up as modified even if they were clean due to an issue in the copy-tracing code. 
New Experimental Features#
- A - changelogv2format has been introduced. It is not ready for use yet, but will be used later to address some of the weaknesses of the current revlog format.
- Initial experiment and support for - dirstatev2, a new dirstate format that addresses some of the weaknesses of the current dirstate format. Python + C and Rust support are being implemented, but the Rust solution is the one currently getting the attention for performance.
- Initial support for - rhg status.- rhgis the Rust wrapper executable for hg that shortcuts some commands for faster execution speed.
Bug Fixes#
- Fixed committing empty files with - narrow
- Allow overriding - pip’s pep517 compliance to build C or Rust extensions
- Fixed regression on outgoing email when not specifying revisions 
- Fixed a regression causing bookmarks to disappear when using Rust persistent nodemap 
- Fixed a regression (in 5.9.1) introduced in 5.9 when cloning repos with deep filenames 
- Fixed detection of directories becoming symlinks, but only when using the Rust extensions. 
- Fixed ignore and include not composing in the Rust status 
- hg commit --interactivenow handles deselecting edits of a rename
- Fixed a case where - hg evolvegives different results when interrupted
- Fixed a memory leak in phases computation 
- histeditand- shelvedon’t swallow errors when updating the working copy anymore
- Improve error message when detecting content-divergence with a hidden common predecessor 
- No longer re-order parents in filelog, see issue6533 
- Fix revisions affected by issue6533 on the fly during exchange 
- Many Windows fixes for stability and py3 compatibility improvements 
- Many other miscellaneous fixes 
Backwards Compatibility Changes#
Internal API Changes#
The Dirstate API have been updated as the previous function leaked some internal details and did not distinguish between two important cases: “We are changing parent and need to adjust the dirstate” and “some command is changing which file is tracked”. To clarify the situation:
- the following functions have been deprecated, 
- dirstate.add,
- dirstate.normal,
- dirstate.normallookup,
- dirstate.merge,
- dirstate.otherparent,
- dirstate.remove,
- dirstate.drop,
- dirstateitem.__getitem__,
- these new functions are added for the “adjusting parents” use-case: 
- dirstate.update_file,
- dirstate.update_file_p1,
- these new function are added for the “adjusting wc file” use-case”: 
- dirstate.set_tracked,
- dirstate.set_untracked,
- dirstate.set_clean,
- dirstate.set_possibly_dirty,
See inline documentation of the new functions for details.
- Additionally, the following have been deprecated: 
- urlutil.getpathfunction
- localrepository.updatecaches’- fullargument
- The following have been removed: 
- revlog.revlogiohas been removed