* Mon Apr 07 2025 me@drinkybird.net
- Mercurial 7.0.1
This upgrade is long overdue and fixes a security vulnerability transitive
from `zstd` itself.
* vendor: upgrade to python-zstandard 0.23.0
* Tue Mar 25 2025 me@drinkybird.net
- Mercurial 7.0
+ Packaging Changes
The 7.0 release is the first to be compliant with `PEP 517`.
This required an overhaul of the Mercurial packaging: packagers should pay extra
attention to this release and report any issues they might encounter with the
new system.
In practice, this means that Mercurial's `setup.py` can no longer be called
directly.
Instead, one should build the Mercurial package using PyPA's `build` package
(https://github.com/pypa/build).
In the general case, this will take care of the build dependencies, but
packagers might want to explicitly manage them. Currently the build depends on:
- `wheel`
- `setuptools>=64`
- `setuptools_scm>=8.1.0`
- `docutils`
The `Makefile` no longer offers a `build` target.
We now use `BuildTools 2022` when building Windows packages.
+ Other Backwards Compatibility Changes
* sslutil: bump the default minimum TLS version of the client to 1.2 (BC) (085cc409847d)
* setup: require TLS 1.2 support from the Python interpreter (BC) (a820a7a1fce0)
+ New Features
* It is now possible to store inline clone bundle outside of .hg (48572371d478)
* Added a generic `storage.all-slow-path` option to control the default
behavior regarding degraded support for some repository format. (bbbb12632607)
* Added a `--to` flag to `hg graft` that allows graft in memory (68dc6cecca32)
* Added a `fix.extra-bin-paths` configuration for the `fix` extension (1330278b9029)
+ New Experimental Features
* add a --ignore-changes-from-ancestors option (688665425496)
* stream-clone: use dedicated threads to write the data on disk (7f848cfc4286, 58baa86c7a02, aee193b1c784)
* the experimental `git` extension now supports more commands
+ Bug Fixes
* subrepo: fix calling outgoing with multiple paths (85c095c1f8bc)
* stream clone: fix a race condition around volatile files (46574e588017, 3f0cf7bb3086)
* rhg: set the expected dirstate permissions (0o666 minus umask) (a48c688d3e80)
* rhg: fix matcher issue (136e74c2bf8f)
* rhg files correctly implements `--rev` (it instead provided `--revision`)
* clone-bundles: fix background spawning of automatic generation
* bundle-spec: properly format boolean parameter (issue6960)
* bundle2: fix a bug where _forwardchunks doesn't work with empty bundles
+ Rust
* the Rust code is now exposed to Python though PyO3 instead of `rust-cpython` (6673cec8605c)
* rhg: support `status --change`, including `--copies` (bde718849153)
* Rust implementation for the internal part of revlogs
* Rust implementation for `hg annotate` (6183949219b2)
* Rust implementation for `hg update` from a completely empty working copy
+ Miscellaneous
* help: modernize the help text for `hostsecurity.minimumprotocol` (b65085c6d6ff)
* run-tests: add a 4th `HGPORT` value (7f8d0c2c3692)
* rust-ignore: make `debugignorerhg` command show a full regex, with exact files (e2e49069eeb6)
* tests: fix `filtertraceback.py` to handle contiguous `File` lines (8431296a93e8)
* typing: moved `interface` logic from `zope` interfaces to `typing.Protocol` (a1c0f19e7cb4)
* format: add pattern filtering to debugformat (8dede0df9de9)
* run-tests: add a `--tail-report` argument to analyze run parallelism (a814534aaedd)
* Thu Mar 20 2025 mcepl@suse.com
- Clean up rpmlint issues
* Wed Mar 19 2025 me@drinkybird.net
- Mercurial 6.9.4
* hgweb: fix XSS vulnerability in hgweb (CVE-2025-2361, bsc#1239685)
* Wed Mar 05 2025 me@drinkybird.net
- Mercurial 6.9.3
out of schedule release to fix a regression introduced in 6.9.2
* fix processing of superfluous requirements specified for streamclone
in clone bundle manifest
* Fri Feb 28 2025 me@drinkybird.net
- Updated to use new build system via pyproject macros. This change
is required for the upcoming 7.0 release, which will remove support
for the old build method.
* Wed Feb 19 2025 me@drinkybird.net
- Mercurial 6.9.2
* narrow: stricter validation of narrowspec patterns
* narrow: stricter validation of narrowspec patterns in rhg
* rhg: fix a bug where only the first pattern in narrowspec was validated
* extensions: allow wrapping a function with a bytes name again
* upgrade: fix a reference to a missing attribute
* bundles: filter out unsupported requirements for non-packed1 format
* dirstate-race: add more output to highlight a "to-be-revealed" bug
* dirstate-race: simplify some output match to highligh an error
* dirstate-race: fix a missing synchronisation in the python code
* dirstatemap: stop setting identity after reading the data
* sshpeer: fix deadlock on short writes
* sshpeer: fix another occurrence of short write handling
* Fri Feb 07 2025 me@drinkybird.net
- Mercurial 6.9.1
* ci: disable caching of the wheels that get built to save space
* tests: use `--no-cache-dir` with `pip`
* run-tests: disable caching of the wheels when installing test Mercurial
* manifest: delay import of `typing.ByteString` for py 3.14 support (issue6940)
* contrib: propagate `pytype` failures outside of `check-pytype.sh`
* acl: fix confusing formatting in help text (issue6942)
* ui: fix escape sequences in in readline prompts (issue6930)
* ci: let branch job run for scheduled build too
* ci: automatically starts platform and py-version test for scheduled build
* help: fix command build with rust
* copyright: update to 2025
* ci: also let the nightly build run on tags
* usage: refactor usage.resources config parsing
* hg-core: fix usage.resources typo
* hg-core: fix usage.resources default logic
* Thu Jan 30 2025 dimstar@opensuse.org
- BuildRequire python-setuptools: Mandatory when building against
Python 3.13.
* Wed Nov 20 2024 develop7@develop7.info
- Mercurial 6.9
+ Backwards Compatibility Changes
* This release drops support for Python 3.6 and 3.7.
* Starting with this release and hopefully for the forseeable future,
we are now building wheels for most architectures.
/!\ Note that for Rust users installing via `pip` or `pipx`, you will
need to specify `--no-binary` to continue using Rust since we do not yet
package the Rust compilation in our wheels. We plan on fixing
this for 7.0.
* Python 3.13 changed how it handles docstrings (namely removing uniform
leading whitespace for every line), which forced us to align the
representation of our help text with this new behavior across
all versions. Due to this and a lack of time and expertise from
contributors, a lot of existing translations could be missing. The
effort of i18n in general has died down many years ago, but if this
matters to you, feel free to send your contributions.
+ New Features
* exchange: improve computation of relevant markers for large repos
* Add a Rust fast-path to speed up update (also for `clone`) from null
(up to 4x faster)
* Introduced a new rev-branch-cache version (v2) that is mmap-resistant
* The branchmap's performance was improved
* Improved the performance of the fix for issue6528
* clonebundles: allow manifest to specify sha256 digest of bundles
* merge: improve working-copy mtime race handling
* profiling: add a py-spy profiling backend
* revlog: use an explicit config option to enable mmap usage for index
* revlog: use mmap by default is pre-population is available
* mmap: populate the mapping by default
* mmap: populate mapping in a background thread
+ Experimental features
* merge: add a config to allow conflict-free merge of changes
on adjacent lines
+ Bug Fixes
* `config.server.validate` now also works on narrowed repositories
* convert: fix various leaked file descriptors
* stream: prefer keeping an open file handle to volatile file
instead of copy
* dummysmtpd: fix EOF handling on newer versions of OpenSSL
* cext: correct the argument handling of `b85encode()`
* branchmap-v3: make sure we write the cache after detecting pure-topo mode
* rust: apply clippy lints
* copies: make sure deleted copy info do not overwriting unrelated ones
* rebase: don't call rewriteutil.precheck() with to-be-skipped commits
* phabricator: correct the default value of `phabhunk.corpus`
* linelog: correct the default value of `annotateresult.lines`
* largefiles: avoid a potentially undefined variable in exception case
* httppeer: move a variable to avoid a bad reference before
assignment warning
* httppeer: avoid another bad reference before assignment warning
* tests: use packaging from setuptools instead of deprecated distutils
* manifest: type and fix unhexlify
* manifest: align some vfs option access on the fact we might
not have options
* scmutils: read the requires file before writing to avoid
unnecessary rewrite
* debugsparse: stop taking the store lock
* sparse: reliably avoid writing to store without a lock
* largefiles: sync up `largefilesdirstate` methods with `dirstate`
base class
* shelve: raise an error when loading a corrupt state file in
an impossible case
* monotone: replace %s interpolation with appropriate numeric specifiers
* shelve: consistently convert exception to bytes
via `stringutil.forcebytestr`
* remotefilelog: honor the `--format` arg of the `debugindex` command
* remotefilelog: adapt the `debugindex` command to past API changes
* run-tests: add color to the progress output
* archive: defer opening the output until a file is matched
* help: add :config-doc:`section.key` shorthand to insert documentation
* censor: document the censor.policy option (issue6909)
* rust-revlog: don't try to open the data file if the index is empty
* bundlerepo: fix mismatches with repository and revlog classes
* revlog: make `clearcaches()` signature consistent with ManifestRevlog
* unionrepo: fix mismatches with revlog classes
* keepalive: fix a signature mismatch for
a http.client.HTTPResponse subclass
* lfs: fix various signature mismatches for vfs subclasses
* store: fix a signature mismatch for a vfs subclass
* util: avoid a leaked file descriptor in `util.makelock()`
exceptional case
* statichttprepo: fix `httprangereader.read()` for py3
* util: make `mmapread()` work on Windows again
* mdiff: tweak calls into `bdiff.fixws` to match its type hints
* base85: avoid a spurious use-before-initialized warning in `pure` module
* install: static data moved from setup.py to pyproject.toml
* upgrade: disable using the parallel workers optimization on macOS
* doc: generate separate commands/topics/extension pages
* extdiff: don't run gui programs when in a cli-only environment
* clonebundles: stop shell quoting `HGCB_BUNDLE_BASENAME`
environment variable
* streamclone: disable the volatile file open handle optimization
on Windows
* pytype: add relative timestamp to the output if `ts` is available
* hgweb: skip logging ConnectionAbortedError
+ Internal API Changes
* manifest: deprecated readdelta and readfast
+ Miscellaneous
* http: reuse Python's implementation of read/readline/readinto
* http: use urllib's cookie handler
* rev-branch-cache: schedule a write of the "v2" format if we
read from "v1"
* rev-branch-cache: have debugupdatecache warm rbc too
* rev-branch-cache: reenable memory mapping of the revision data
* debugwireproto: redo logging to also work for https
* rust: use `.cargo/config.toml` instead of `.cargo/config`
* A whole bunch of typing improvements, which in turn found many bugs
* Test suite improvements
* Various packaging improvements