Opened 13 months ago

Closed 13 months ago

Last modified 9 months ago

#17857 closed enhancement (fixed)

mercurial-6.4

Reported by: Douglas R. Reno Owned by: Douglas R. Reno
Priority: normal Milestone: 12.0
Component: BOOK Version: git
Severity: normal Keywords:
Cc:

Description

New minor version

Change History (7)

comment:1 by Douglas R. Reno, 13 months ago

Owner: changed from blfs-book to Douglas R. Reno
Status: newassigned

comment:2 by Douglas R. Reno, 13 months ago

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
    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 dependency

    dirstate: fix the bug in [status] dealing with committed&ignored directories

    dirstate: fix a potential traceback when in copy and rename
    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 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 

comment:3 by Douglas R. Reno, 13 months ago

The rust-based tests appear to be broken with this version because the hg-core crate does not compile due to syntax errors. I'm going to raise it on their bugzilla instance

In the meantime, since this only affects the tests, we'll fix it with a sed that removes the relevant lines so that the rest of the test suite can run normally.

comment:4 by Douglas R. Reno, 13 months ago

Note that the failures might be because they are now checking for code style and syntax issues using clippy.

comment:5 by Douglas R. Reno, 13 months ago

This change is likely the cause of it: "makefile: add cargo clippy to tests if cargo is available"

The tests will thus fail on any system which has rust installed right now. They've added Clippy to their CI system though so if they update rust, they will notice these problems.

comment:6 by Douglas R. Reno, 13 months ago

Resolution: fixed
Status: assignedclosed

comment:7 by Bruce Dubbs, 9 months ago

Milestone: 11.412.0

Milestone renamed

Note: See TracTickets for help on using tickets.