Mercurial 6.5 (2023-07-06)#

Mercurial 6.5.3#

  • “hgweb: pass strings in WSGI environment correctly from wsgicgi”

  • “perf: introduce more cache invalidation option in perf::tags”

  • “perf: add a --clear-fnode-cache-rev argument to perf::tags”

  • “perf: add a –update-last flag to perf::tags”

  • “blackbox: add a option to duplicate output to stderr too”

  • “tags: avoid expensive access to repo.changelog in a loop”

  • “revlog: fix a bug where NULL_NODE failed to be resolved to NULL_REV”

  • “httppeer: fix static-http: scheme autodetection (issue6833)”

  • “tests: backed out changeset 8037ddacad47”

  • “stream-clone: fix a crash when a repo with an empty revlog is cloned”

  • “censor: accept censored revision during upgrade”

  • “revlog: avoid opening and closing the file for each cloned revision”

Mercurial 6.5.2#

  • hgweb: encode WSGI environment using the ISO-8859-1 codec

  • rhg: fix the bug where sparse config is interpreted as relglob instead of glob

  • gpg: fix an UnboundLocalError whenever using –force

  • transaction: fix repr() and make the default name bytes

  • setup: make the error “Unable to find a working hg binary” more informative

  • tests: avoid test environment affecting setup.py

  • run-tests: detect HGWITHRUSTEXT value

Mercurial 6.5.1#

  • A bunch of improvements to Python 3.12 compatibility

  • repoview: fix the filter created by extrafilter

  • Improve portability of the test suite

  • fncache: fix a bug that corrupts the fncache after transaction rollback

  • revlog: fix the naming scheme use by split temporary file

  • perf: fix perf::tags

Mercurial 6.5#

As usual, a lot of patches don’t make it to this list since they’re more internal.

New Features#

  • Improved Python 3.12 compatiblity

  • configitems: enable changegroup3 by default (unless using infinitepush)

  • extras: expose ‘retained_extras’ for extensions to extend

  • stabletailgraph: implement stable-tail sort

  • stabletailgraph: naive version of leap computation

  • bundle: introduce a “v3” spec

  • clone-bundles: add a basic first version of automatic bundle generation

  • clone-bundles: garbage collect older bundle when generating new ones

  • clone-bundles: only regenerate the clone bundle when cached ration is low

  • clone-bundles: also control automation based on absolute number of revisions

  • clone-bundles: add a configuration to control auto-generation on changes

  • clone-bundles: introduce a command to refresh bundle

  • clone-bundles: add a command to clear all bundles

  • clone-bundles: add an option to generate bundles in the background

  • clonebundles: add support for inline (streaming) clonebundles

  • clonebundles: adds a auto-generate.serve-inline option

  • match: add filepath: pattern to match an exact filepath relative to the root

  • hgweb: add “children” into the JSON template for a changeset

  • hgweb: add support to explicitly access hidden changesets

  • pull: add –remote-hidden option and pass it through peer creation

  • hidden: add support for –remote-hidden to HTTP peer

  • hidden: support passing –hidden with serve --stdio

  • hidden: add support to explicitly access hidden changesets with SSH peers

  • perf: introduce a perf::stream-locked-section command

  • perf: add a function to find a stream version generator

  • perf: add support for stream-v3 during benchmark

  • perf: add a perf::stream-generate command

  • perf: add a perf::stream-consume

  • cli: make debugnodemap capable of inspecting an arbitrary nodemap

  • rust: configure MSRV in Clippy

  • rhg: make rhg files work if ui.relative-files=true is specified

  • rhg: support rhg files with ui.relative-paths=false

  • rhg: support status --print0

  • tree-manifest: allow debugupgraderepo to run on tree manifest repo

  • library: enable runpy invocation on mercurial package

  • library: incorporate demandimport into runpy invocation

  • exchange: allow passing no includes/excludes to pull()

New Experimental Features#

  • stream-clone: add an experimental v3 version of the protocol

  • stream-clone: support streamv3 on the cli [hg bundle]

Bug Fixes#

  • mail: add a missing argument to properly override starttls

  • bundle: include required phases when saving a bundle (issue6794)

  • outgoing: fix common-heads computation from missingroots argument

  • strip: do not include internal changeset in the strip backup

  • bundle: abort if the user request bundling of internal changesets

  • bundle: prevent implicit bundling of internal changeset

  • encoding: avoid quadratic time complexity when json-encoding non-UTF8 strings

  • sha1dc: Make sure SHA1DC_BIGENDIAN is set on Darwin/PowerPC

  • zstd: hack include order to ensure that our zstd.h is found

  • dirstate: better error messages when dirstate is corrupted

  • stream-clone: avoid opening a revlog in case we do not need it

  • treemanifest: make updatecaches update the nodemaps for all directories

  • rust-hg-core: move from ouroboros to self_cell

  • rust-dependencies: switch from users to whoami

  • dirstate-v2: actually fix the dirstate-v2 upgrade race

  • dirstate: avoid leaking disk space in hg debugrebuilddirstate

  • clonebundles: add warning if auto-generate is enabled without formats

  • win32mbcs: unbyteify some strings for py3 support

  • rust-revlog: fix incorrect results with NULL_NODE prefixes

  • rust-revlog: fix RevlogEntry.data() for NULL_REVISION

Backwards Compatibility Changes#

  • infinitepush: aggressively deprecated infinite push

  • narrow: indicated the default of ‘Yes’ when confirming auto-remove-includes

Internal API Changes#

  • Store walk was reworked to fix small race conditions in stream-clone and greatly improve its API robustness and flexibility.

Miscellaneous#

  • Typechecking support was improved in a lot of places

  • Removed more useless compat code for now unsupported Python versions

  • Sped up zstd usage in Rust contexts

  • revlog: add an exception hint when processing LFS flags without the extension

  • ui: keep the progress bar around when writing if stdout is not a tty

  • transaction: use a “.bck” extension for all backup file