view relnotes/6.7 @ 51626:865efc020c33 default tip

dirstate: remove the python-side whitelist of allowed matchers This whitelist is too permissive because it allows matchers that contain disallowed ones deep inside, for example through `intersectionmatcher`. It is also too restrictive because it doesn't pass through some of the matchers we support, such as `patternmatcher`. It's also unnecessary because unsupported matchers raise `FallbackError` and we fall back anyway. Making this change makes more of the tests use rust code path, and therefore subtly change behavior. For example, rust status in largefiles repos seems to have strange behavior.
author Arseniy Alekseyev <aalekseyev@janestreet.com>
date Fri, 26 Apr 2024 19:10:35 +0100
parents 028dc3f92dbd
children
line wrap: on
line source

= 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