relnotes/6.4
author Pierre-Yves David <pierre-yves.david@octobus.net>
Mon, 06 Mar 2023 21:03:45 +0100
branchstable
changeset 50286 3d0b5760851c
parent 50272 8a65b43457ab
child 50326 f14864fffdca
permissions -rw-r--r--
undo-files: move the undo cleanup code in the transaction module Now that undo creation is gathered in the transaction module, let us move the code cleaning them up there too. This will be useful to better clean previous undo files up before creating new ones.

= Mercurial 6.4rc0 =

== New Features ==

 * There is a new internal merge tool called `internal:union-other-first`.
   It works like `internal:union` but add other side on top of local.
 * Pullbundles are enabled by default
 * delta-find: add a way to control the number of bases tested at the same time
 * changelog-v2: add a configuration to disable rank computation
 * debug: add an option to display statistic about a bundling operation
 * debug: add an option to display statistic about a unbundling operation
 * delta-find: add a delta-reuse policy that blindly accepts incoming deltas
 * debug: add debug-revlog-stats command
 * dirstate: add narrow support to `verify`
 * verify: also check dirstate
 * commit: add --draft option to use draft phase
 * amend: add a --draft option to set phase to draft
 * debug: add a config to abort update early
 * rhg: implement checkexec to support weird filesystems
 * debugshell: allow commands to be specified as a CLI argument
 * rhg-files: add support for narrow when specifying a revision
 * rust-narrow: enable narrow support for plain `rhg files`

== Bug Fixes ==

Aside from the following (unordered) commits which made it through a manual filter, there are a bunch of typing improvements and fixes, removal of deprecated code and general code cleanup.

 * lfs: improve an exception message for blob corruption detected on transfer
 * revlog: use the user facing filename as the display_id for filelogs
 * rust-status: query fs traversal metadata lazily
 * shelve: add Shelf.changed_files for resolving changed files in a plugin
 * demandimport: ensure lazyloaderex sets loader attributes (issue6725)
 * typing: fix a syntax error in mercurial/cext/bdiff.pyi
 * cffi: fix a bytes vs str issue on macOS when listing directories
 * changelog-v2: fix the docket `struct`
 * schemes: fix a broken check for drive letter conflicts
 * worker: avoid reading 1 byte at a time from the OS pipe
 * rust-narrow: fix loop that never loops
 * setup: Ensure target directory exists with building rust extension
 * dirstate: invalidate changes when parent-change fails
 * dirstate: warn about non-explicitly rolledback parent-change
 * dirstate: write dirstate on successful exit of changing_parents context
 * largefile: make sure we hold the lock when updating the second dirstate
 * dirstate: enforce holding the lock while doing any changes
 * run-tests: stop ignoring venv-installed packages
 * transaction: run abort callback in all cases
 * transaction: quietly rollback if no other changes than temporary files
 * debugrebuilddirstate: double check that no transaction is open
 * dirstate: do not write an empty dirstate just for backup
 * locking: take the `wlock` for the full `hg add` duration
 * locking: take the `wlock` for the full `hg remove` duration
 * locking: take the `wlock` for the full `hg forget` duration
 * locking: take the `wlock` for the full `hg addremove` duration
 * locking: grab the wlock before touching the dirstate in `perfdirstatewrite`
 * locking: hold the wlock for the full duration of the "keyword demo"
 * mq: properly take the wlock during the full qfold operation
 * dirstate: invalidate the dirstate change on transaction failure
 * status: fix post status writing
 * status: fix post status invalidation
 * dirstate: avoid transaction backup/restore if we do not hold the lock
 * rollback: explicitly skip dirstate rollback when applicable
 * dirstate-guard: remove the feature
 * dirstate: make `restorebackup` more robust when it is a noop
 * dirstate: generalize the dirstate's invalidation on transaction abort
 * dirstate: detect potential fishy transaction patterns while changing
 * mq: write the dirstate before stripping
 * dirstate: explicitly backup the datafile
 * localrepo: enforce a clean dirstate when the transaction open
 * localrepo: "blindly" do a dirstate backup at the end of the transaction
 * dirstate: remove the dedicated backup logic
 * rhg: fix a bug in path_encode
 * dirstate: invalidate on all exceptions
 * large-files: make sure we write newly initialized standin file early
 * dirstate: warn if dirty when starting an edition
 * dirstate: track that changes are pending in a transaction
 * dirstate: distinct transaction callback from largefile
 * automv: lock the repository before searching for renames
 * dirstate: only reload the dirstate when it may have changed
 * dirstate: cleanup the `_map` property cache
 * status: invalidate dirstate  on LockError
 * dirstate: check that dirstate is clean at the initial context opening
 * dirstate: have `running_status` write the dirstate when holding the lock
 * dirstate: have `running_status` warn when exiting with a dirty dirstate
 * narrow: widden the lock context in `tracking`
 * narrow: enforce that narrow spec is written within a transaction
 * transaction: no longer explicitly cache phaseroots
 * transaction: no longer explicitly cache bookmarks
 * transaction: use the standard transaction mechanism to backup branch
 * bundlerepo: handle changegroup induced phase movement in the associated method
 * bundlerepo: apply phase data stored in the bundle instead of assuming `draft`
 * config-item: declare undeclared path suboption
 * narrow: read pending file when applicable

== Backwards Compatibility Changes ==
 * rust: upgrade supported Rust toolchain version
 * rust: move all crates in the main workspace to edition 2021
 * hg-core: upgrade `zstd` dependency
 * hg-core: upgrade `clap` dependency
 * hg-core: upgrade all remaining dependencies
 * hg-cpython: upgrade dependencies
 * rhg: upgrade `clap` dependency
 * rhg: upgrade the remainder of the dependencies

== Internal API Changes ==

 * Many APIs around the dirstate have been made much stricter with regards to
   locking and transaction handling
 * Some dirstate APIs have been renamed/removed
 * In both cases, you should get loud complaints in your tests if you do
   something wrong.

== Miscellaneous ==

 * pullbundle support no longer requires setting a server-side option,
   providing a .hg/pullbundles.manifest according to the syntax specified in
   'hg help -e clonebundles' is enough.
 * debug-delta-find: add a --source option
 * delta-find: add debug information about reuse of cached data
 * delta-find: set the default candidate chunk size to 10
 * attr: vendor 22.1.0
 * configitems: add a default value for "merge-tools.xxx.regappend"
 * debugrevlog: display total stored information
 * emitrevision: if we need to compute a delta on the fly, try p1 or p2 first
 * emitrevision: consider ancestors revision to emit as available base
 * find-delta: pass the cache-delta usage policy alongside the cache-delta
 * delta-find: use a smarter object for snapshot caching
 * delta-find: use sets instead of list in the snapshot cache
 * delta-find: make sure we only use newer full snapshot as candidate
 * delta-find: use a single snapshot cache when applying a group to an object
 * bundleoperation: optionnaly record the `remote` that produced the bundle
 * bundle: when forcing acceptance of incoming delta also accept snapshot
 * bundle: emit full snapshot as is, without doing a redelta
 * pathutil: slightly faster path audit in the common case
 * merge: don't pay for pathconflicts if there are none
 * merge: short-circuit the _checkfs loop upon getting ENOENT
 * merge: disable the whole filesystem access loop if [_realfs] is false
 * merge: cache the fs checks made during [_checkunknownfiles]
 * rust: use `logging_timer` instead of `micro_timer`
 * rust: run `cargo clippy`
 * makefile: add `cargo clippy` to tests if cargo is available
 * heptapod-ci: add `clippy` to the CI
 * convert: use a priority queue for sorting commits, to make sorting faster
 * delta-find: adjust the default candidate group chunk size
 * delta-find: declare the "paths..*:pulled-delta-reuse-policy option