= Mercurial 6.7.3 = * setup: display return code information about failed `hg` call * bundle-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 = 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 = 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 = 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 output * censor: add a command flag to skip the head checks * censor: accept multiple revision in a single call * usage: add a `usage.repository-role` config * branchmap: 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 cases * rust: 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 it * cext: 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` (see `hg 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 of `setbranch` 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