Mercurial 6.4 (2023-03-23)#
Mercurial 6.4.5#
re2: fix reporting of availability in
hg debuginstall
ui: fix crash in
hg paths
when pulled-delta-reuse-policy is in usepath: display proper user facing value for pulled-delta-reuse-policy
Mercurial 6.4.4#
clonebundles: filter out invalid schemes instead of failing on them
doc: format argument for date uses strftime format string (issue6818)
test: make test-contrib-perf.t more robust
revlog: fix a bug in revlog splitting
bundles: clarify streaming v2 bundle usage
delta-find: fix pulled-delta-reuse-policy=forced behavior
dirstate: fall back to v1 if reading v2 failed
revlog: avoid possible collision between directory and temporary index
Mercurial 6.4.3#
chg: declare environ (issue6812)
chg: set CHGHG before connecting to command server
delta-find: never do anything fancy when general delta is off
delta-find: add a simple safeguard to prevent bad non-general-delta
debug-delta: add minimal documentation for
devel.bundle-delta
optionfix: highlight the required configuration and behavior of the fixer tools
rhg: don’t print copy source when –no-status is passed
rhg: correctly relativize copy source path
repo-upgrade: write new requirement before upgrading the dirstate
backup: fix issue when the backup end up in a different directory
Mercurial 6.4.2#
Exceptional bugfix release due to a corruption bug that happens when using clonebundles on repositories with large files.
revlog-split: make sure the self._indexfile attribute is reset (issue6811)
Mercurial 6.4.1#
rhg: fix a bug in path encoding
rhg: don’t crash on empty directory names in path_encode, just in case
commands: correct documentation of hg serve’s –ipv6 options
run-tests: remove obsolete coverage check and packaging import (issue6805)
chg: populate CHGHG if not set
match: sort patterns before compiling them into a regex
match: match explicit file using a set
rebase: do not cleanup the working copy when –dry-run is used (issue6802)
sslutil: set context security level for legacy tls testing (issue6760)
Mercurial 6.4#
New Features#
There is a new internal merge tool called
internal:union-other-first
. It works likeinternal: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 fullhg add
durationlocking: take the
wlock
for the fullhg remove
durationlocking: take the
wlock
for the fullhg forget
durationlocking: take the
wlock
for the fullhg addremove
durationlocking: 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 noopdirstate: 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 cachestatus: 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 lockdirstate: have
running_status
warn when exiting with a dirty dirstatenarrow: 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
rust: fix building on macOS (issue6801)
run-tests: fix a crash when using the coverage options
undo-files: also remove the undo.backupfiles
undo-files: cleanup backup when cleaning undos
undo-files: clean existing files up before writing new one
undo-files: cleanup legacy files when applicable
dirstate-v2: fix an incorrect handling of readdir errors
rust: update zstd dependency
rust: upgrade
rayon
dependencydirstate: fix the bug in [status] dealing with committed&ignored directories
dirstate: fix a potential traceback when in
copy
andrename
histedit: fix diff colors
cext: fix for PyLong refactoring in CPython 3.12
py3: fix for Python 3.12 emitting SyntaxWarning on invalid escape sequences
statprof: with Python 3.12, lineno is (more) often None
transaction: properly clean up backup file outside of .hg/store/
transaction: raise on backup restoration error
revlog: improve the robustness of the splitting process
debugdeltachain: stop summing the same chain over and over
url: don’t ignore timeout for https connections
py3: fix for Python 3.12 emitting SyntaxWarning on invalid escape sequences
tests: accept a test output change in [tests/test-serve.t]
rust: fix thread cap (for real this time)
dirstate: try refreshing the changelog when parent are unknown
hooks: invalidate the repo after the hooks
Backwards Compatibility Changes#
rust: upgrade supported Rust toolchain version
rust: move all crates in the main workspace to edition 2021
hg-core: upgrade
zstd
dependencyhg-core: upgrade
clap
dependencyhg-core: upgrade all remaining dependencies
hg-cpython: upgrade dependencies
rhg: upgrade
clap
dependencyrhg: 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 bundlebundle: 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 ofmicro_timer
rust: run
cargo clippy
makefile: add
cargo clippy
to tests if cargo is availableheptapod-ci: add
clippy
to the CIconvert: 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