Mercurial 6.7 (2024-03-15)#
Mercurial 6.7.4#
Exceptional release following a critical regression causing possible data loss in certain conditions:
inline-changelog: fix a critical bug in write_pending that delete data (3cf9e52f5e27)
inline-changelog: fix pending transaction visibility when splitting (1721d983dd6d)
Other changes in this release:
exchange: fix locking to actually be scoped
chistedit: change action for the correct item
rust-status: sort the failed matches when printing them
hooks: add a prewlock and a prelock hooks
bookmark: fix remote bookmark deletion when the push is raced
Mercurial 6.7.3#
⚠️ This release contains a bug causing possible data loss, use 6.7.4 instead.
setup: display return code information about failed
hg
callbundle-spec: properly identify changegroup-less bundle
bundle-spec: properly parse boolean configuration as boolean
matchers: fix the bug in rust PatternMatcher that made it cut off early
match: fix the “visitdir” method on “rootfilesin” matchers
match: fix the rust-side bug in visit_children_set for rootfilesin matchers
match: strengthen visit_children_set invariant, Recursive means “all files”
wireprotoserver: ensure that output stream gets flushed on exception
re2: make errors quiet
dirstate-v2: add check of parent/child nodes being related when writing
dirstate-v2: check that root nodes are at the root before writing
rust-cpython: don’t swallow the dirstate error message
rust: blanket implementation of Graph for Graph references
Various fixes to
admin::verify
Mercurial 6.7.2#
⚠️ This release contains a bug causing possible data loss, use 6.7.4 instead.
Exceptional release following a large performance regression when cloning.
We are setting up automated benchmarks to reduce the likelihood of regressions of the sort from happening in the future.
phases: avoid a potentially costly dictionary interation in some case
phases: update the phase set as we go during retract boundary
bundle2: make the “hgtagsfnodes” part advisory
Mercurial 6.7.1#
⚠️ This release contains a bug causing possible data loss, use 6.7.4 instead.
Exceptional release following a crash found in delta code that can be triggered with complex repository shapes.
delta-search: fix crash caused by unbound variable
sshpeer: fix path when handling invalid url exception
subrepo: fix normalizing paths with scheme
Mercurial 6.7#
⚠️ This release contains a bug causing possible data loss, use 6.7.4 instead.
As usual, a lot of patches don’t make it to this list.
New Features#
JSON templates can now use structured diffstat data
Support rhg status –rev –rev
The index for REVLOGv1 now has a Rust implementation
Improved
hg censor
’s outputcensor: add a command flag to skip the head checks
censor: accept multiple revision in a single call
usage: add a
usage.repository-role
configbranchmap: use mmap for faster revbranchcache loading
crecord: enable search hotkeys (issue6834)
hg-core: separate timestamp and extra methods
annotate: limit output to range of lines
unbundle: faster computation of changed heads
Large improvements of some of the phases code (23950e39281f)
rust-filepatterns: export glob_to_re function
New Experimental Features#
Introduce
hg admin::chainsaw-update
for automation and advanced users
Bug Fixes#
templatekw: fix inconsistency of diffstat with diff.merge
The endless stream of Python 3 cleanups continues
Improved setup.py robustness
Improved test suite robustness
add: don’t attempt to add back removed files unless explicitly listed
statprof: handle
lineno == None
in more casesrust: fix cargo doc for hg-cpython
rust-python-index: don’t panic on a corrupted index when calling from Python
debugindexstats: handle the lack of Rust support better
matchers: use correct method for finding index in vector
narrow: strip trailing
/
from manifest dir before matching itcext: fix potential memory leaks of list items appended with PyList_Append
doc: document that labels must have a dot in them to have an effect
debugformat: fix formatting for compression level
obsutil: sort metadata before comparing in geteffectflag()
crecord: drop calls to
curses.endwin()
rust-index: don’t use mutable borrow for head-diff computation
rust-index: don’t use mutable borrow to computed filtered heads
Backwards Compatibility Changes#
Users of the Rust extensions and/or rhg
should be aware that the new Rust
index can result in a performance degradation for push/pull on repositories
not* using
persistent-nodemap
(seehg help config.format.use-persistent-nodemap
).
If this is something that matters to you, please reach out to us as this is not an insurmountable obstacle. This is a choice base on the assumption that there are few people in this situation and our time should be spent on more pressing matters.
Internal API Changes#
62913:498017baa34b “cleanup: remove some code scheduled to be removed after 5.9”
62914:88ef80210d67 “cleanup: drop
dirstate.is_changing_parent
deprecated since 6.5”62915:591845f89ada “cleanup: drop
path.pushloc
deprecated since 6.5”62916:d8f65fc72e7b “cleanup: drop deprecated config attribute on the revlog class”
62917:5c9c41273367 “cleanup: turn
pathsuboption
deprecation warning into an error”62918:7b837fabc990 “cleanup: turn
wrappedfunction
deprecation warning into an error”62919:eda075d7b2ac “cleanup: turn
wrapfunction
deprecation warning into an error”62920:c845479fc64d “cleanup: drop the
bytes
compatibility for attribute related function”63464:dcaa2df1f688 “changelog: never inline changelog”
63465:a93e52f0b6ff “changelog: disallow delayed write on inline changesets”
63825:79cd29d598af “dirstate: make the
transaction
argument ofsetbranch
mandatory”
Miscellaneous#
perf: support –template on perf::phases
perf: add a –as-push option to perf::unbundle
debug: add a debug::unbundle command that simulate the unbundle from a push
Lots of refactorings to prepare for performance improvements and remove tech debt