| Index | index by Group | index by Distribution | index by Vendor | index by creation date | index by Name | Mirrors | Help | Search |
| Name: mercurial-rust | Distribution: openSUSE Tumbleweed |
| Version: 7.2.1 | Vendor: openSUSE |
| Release: 1.1 | Build date: Thu Apr 2 01:17:29 2026 |
| Group: Development/Tools/Version Control | Build host: reproducible |
| Size: 12939797 | Source RPM: mercurial-7.2.1-1.1.src.rpm |
| Packager: http://bugs.opensuse.org | |
| Url: https://www.mercurial-scm.org/ | |
| Summary: Rust extensions for Mercurial | |
Mercurial is a fast, lightweight source control management system designed for efficient handling of very large distributed projects. This package contains Rust-based features for Mercurial: - hg-core (and hg-pyo3): implementation of some functionality of mercurial in Rust, e.g. ancestry computations in revision graphs, status or pull discovery. - rhg: a pure Rust implementation of Mercurial, with a fallback mechanism for unsupported invocations. It reuses the logic `hg-core` but completely forgoes interaction with Python. These features are varying degrees of experimental and come with caveats. See 'hg help rust' (accessible without this package) or the documentation files in this package for more information. Installing this package will enable the Rust extensions for hg immediately. rhg is its own separate program.
GPL-2.0-or-later
* Wed Apr 01 2026 Sean Baggaley <me@drinkybird.net>
- Mercurial 7.2.1
A normal bugfix release, fashionably late.
* A bunch of fixes and improvements to the test runner and CI stability
* Fixed a corruption and crash in branchmap v3 (8471e18f1619)
* Backed out making parallel streaming bundle processing the default (64053b131c0b)
* Fixed dirstate backup files being forgotten about (f80ad355012d)
* has-meta-flag: ignore censored revision when importing older bundles (1afb8f260d18)
* Fixed a crash in quickaccess logic when it races with commit (5104190c6e4d)
* Improved support for Python 3.15's alpha
* Wed Feb 25 2026 Matej Cepl <mcepl@cepl.eu>
- Don't use %{suse_version} > 1600, when you mean Tumbleweed. It
should be >= 1699 (jsc#PED-15793).
* Thu Jan 29 2026 Sean Baggaley <me@drinkybird.net>
- Mercurial 7.2
This is the first release to support Python 3.14 and likely the last to
support Python 3.9.
This release is exceptionally full of changes, and as always a lot of minor
changes have been omitted from these release notes.
+ New Features
* Support for Python 3.14
* Added a `closesbranch()` template keyword
* Added support for support `--remote-hidden` in `hg incoming`
* `hg clone` now supports `--no-stream` to force opt-out of a streamclone
* `hg strip` will optionally accept empty revision sets without bailing out
(`--permit-empty-revset`). This is unconditionally enabled for `hg debugstrip`
* Support for ZSTD is improved by falling back to the system package if the
vendored module is not available. This change mostly affects pure python
installs and helps distributions to use their integrated version by default.
The appropriate package has been added as a Python optional dependency
to help people who need it.
* Added a new `usage.resources.bandwidth` config to tune how aggressive
Mercurial is with its bandwidth usage.
+ Feature moved out of experimental
* `dirstate-v2` format (8c912a652c54)
A better format for storing the working copy information, provides a significant
performance boost to `hg status` performance (and other commands that need that
information like `commit`, `purge`, etc).
The use of `dirstate-v2` can only be recommended when using the Rust
extensions, as the Python version is quite slow at most operations (likely
slower than dirstate-v1).*
See `hg help config.format.use-dirstate-v2` for details.
* `diff.merge` configuration (a1c2e0753d1a)
When set, running `hg diff` on a merge will show the difference compared to the
default merge result instead of the diff against a parent. This is quite useful
to spot changes introduced by a merge and how conflicts were resolved.
See `hg help config.diff.merge` for details.
* `tracked-hint` format (bdd10cd37f6a)
A small format variant that keeps a small file that helps external automation to
detect changes to the set of tracked files.
See `hg help config.revlog.reuse-external-delta-compression` for details.
* Parallel stream clone processing (2cc0954cef52)
The parallel processing of incoming stream bundles is now enabled by default.
See `hg help config.worker.parallel-stream-bundle-processing` for details.
+ Performance improvements for existing features
* `hg purge` (aka `hg clean`) now better leverages the Rust implementation of
"status" when available. This provides performance improvement similar to the
one provided by the rust status.
* The computation of deltas when storing a revision (during `commit`, `clone`,
`push`, `pull`, `unbundle`, ...) was significantly sped up in Mercurial 7.2.
This was achieved by a mix of reducing the amount of useless work done,
improving the algorithms used, and smarter cache usage. All flavors of
Mercurial (using the Rust extensions or not) should see a performance
improvement, but using the Rust extensions will show a more dramatic
improvement (some benchmark move from almost 4 hours to 2 minutes).
(Here is small set of the involved changesets: 916d5b1db75f, a2cbf3d71a94,
2e8ba3356d7e, 4eb879393c45, 855cfc1c7c42, 2cbc32498a83)
* The performance of caches related to tags has been improved when using the
Rust extensions (f93ba6645f8e, eed40a296a18)
* The performance of `commit` has been improved by removing useless computation
* The performance of the Rust index (specifically the nodemap) with large
revlogs has been improved
* Warming a cold filenode tag cache is up to 12% faster
+ New Experimental Features and Formats
+ Narrow-Store's Shapes
We are introducing the concept of "shapes" to improve the experience using
`narrow`. Since using `narrow` implies using a more centralized workflow of
version control, clients being dependent on the server for all practical
matters of exchanging changes, we want to make this hybrid
centralized/distributed world more practical.
The feature is still experimental and actively worked on, but Mercurial 7.2
ships some already usable parts:
* A new server-side configuration (`.hg/store/server-shapes`) to define shapes,
which are normalized and minimal descriptions of views into a slice of a
repository store based on file names
* A new `admin::narrow-server` command to get and list important information
about these shapes
* A new `admin::narrow-client` command to inspect the client state within this
workflow
* `hg bundle` is now able to generate streaming narrow clonebundles from shapes:
* Support for *non-streaming* narrow clonebundles is not implemented yet
* Each such bundle's bundlespec contains the fingerprint of the shape it was
generated with
* A client `hg` can generate the same fingerprint from the narrow patterns
passed to `clone` (`--include`, `--exclude`)
* This makes the client `hg` filter out bundles that do not have the
expected fingerprint
* Old clients will not receive fingerprinted bundles when listing
clonebundles, so backwards compatibility is conserved
* This process is quite manual still, but is expected to improve in the
coming versions
For more detailed information, see `hg help shapes`.
+ File Index
The File Index is a new repository format that supersedes the `fncache` format.
It tracks all file paths ever used within a repository throughout its entire
history (excluding the working copy) and is useful for many common commands.
The File Index is designed for efficient querying and updating and our
benchmarks show significant performance improvements compared to when using the
`fncache`. This is an internal format change that doesn't affect the
availability of any feature.
The introduction of the File Index will also open the door for other
datastructures and algorithms to make use of its internal mapping of unique
file to unique token, further unlocking a ton of performance down the line. You
can learn more about its design by running `hg help internals.file-index`.
While basic support for the file index is implemented in Python, its use is
only recommended when using the Rust extensions for performance reasons.
+ Revlog delta info
The `delta-info-revlog` format variant is a small adjustment to the `revlog-v1`
format to better keep track of some information to help speed up some operations
and improve the internal storage. This is an internal format change that doesn't
affect the availability of any feature.
The new information stored mostly focuses on:
- Does a file revision contain file rename metadata?
- Is a stored delta a "standard delta" or a "snapshot" (of any level)?
- Is the stored delta "small" and which parent is best to find such a "small"
delta?
Having this information around has various benefits:
- We no longer need to manually inspect rename metadata in any case, speeding up
various operations. This especially helps the copy tracing used by `hg status`
and `hg merge` where such checks would add up to ⅓ of the total time.
- We no longer need to worry about `issue6528` on delta-info repositories
(especially during exchanges given that `changegroup-v4` is used)
- Having more information about delta quality and "best parent" helps to
generate better bundles faster when the stored delta cannot be directly
reused.
- Having more precise snapshot information allows for more advanced heuristics
when creating the delta tree used for storage. In particular, it unlocks
skipping over redundant deltas in the parents' chain, using delta folding
heuristics. That last part requires the Rust extensions to be enabled.
Consider giving the format a try on large repositories if you experience slow
`push`/`pull`.
Some of these features are controlled by the following experimental features:
- `storage.revlog.record-delta-quality`
- `storage.delta-fold-estimate`
+ Changegroup v4
A new changegroup format was introduced to carry the new information from
delta-info. The format also includes some extra features that help performance
overall:
- explicitly transfer the full revision size to avoid situations where the
client has to recompute at unbundle time
- explicitly carry the "has metadata" information for filelogs to avoid the need
to detect `issue6528` at unbundle time
- explicitly carry snapshot and quality information regarding exchanged delta to
help the client to take more informed decisions when applying incoming deltas
- explicitly carry the source delta base information to help the client find a
suitable base quicker when receiving a recomputed delta
- allow the exchange of deltas in their compressed form. This reduces the
overall efficiently of compressing the bundle stream, but avoids costs
associated with decompressing and recompressing the deltas on the server *and*
the client. This also helps to identify deltas that won't benefit from being
compressed to speedup their application.
This format is not used by default unless the `delta-info-revlog` format variant
is in use. It can be enabled using the `experimental.changegroup4`
configuration.
The various new features and behaviors associated with it can be controlled
using various configuration options:
- `storage.revlog.exchange-compressed-delta`
- `storage.revlog.reuse-external-delta-compression`
- `storage.revlog.reuse-external-suspicious-delta-parent`
+ Branchmap v3
The V3 version of the branchmap is a small evolution from the V2 format that has
been used. The main difference is that the topological heads are no longer
explicitly listed in the cache. This significantly reduces the size the
branchmap that has to be read and written to disk and allows for various
optimizations when a repository update only affects topological heads on a
branch.
In particular, this new branchmap format drastically reduces the cost of
named-branch-related computations for large repositories that don't use the
feature.
Further performance improvements are expected with further code changes in later
versions (without affecting the format).
That feature is not enabled by default yet, don't hesitate to give it a try on
any repositories with many heads or branches you might have at hand.
+ Rust Fast Path
`rhg` now supports the `purge` (aka `clean`) command, for even better
performance that combines with the on this command gains previously mentioned.
+ Bug Fixes
* The `profiling.output-dir` now supports expansion of tilde and shell variables
* The `lfs` extension now expands and resolves the blob cache path to an
absolute path
* The availability of the given compression engine is now checked before
applying a clonebundle
* Extensions can now alter the contents of the repo's default config when using
stream clone
* Support for changing the process name on Linux and MacOS has been restored
(useful for `chg` users)
* Using `RUST_LOG` when profiling with `py-spy` will not display the logs of
`py-spy` itself anymore
* `hgweb` now validates that plain filesystem paths exist in `--web-conf` file
instead of raising 500
* subrepo: fix an error handler in `hgsubrepo.matchfileset()`
* largefiles: fix a MergeAction bytes vs str issue for marking a file removed
* Local access to repositories with `pull`/`incoming` and `push` now honors
`server.view` (note that `hg clone` in link-mode still does *not* honour
`server.view`, `hg clone --pull` does)
* repo-cache: fix using --chg with the rust extension (issue10048)
* update: fix crash in rust update-from-clean on certain byte sequences
* tracing: avoid writing traces to stdout, write to stderr instead
* verify: fix fncache consistency checks (fixes #10045)
* encoding: skip over "environ" re-encoding it the codec is bad
+ Internal API Changes
The large and ongoing Python typing effort has once again made significant
progress. To that end, there was a large import-cycle-breaking series that
implied refactoring, new files which may make this merge more difficult for
extension maintainers. We're sorry about that, but typing the Python code is
helping us make the codebase a lot clearer and is now catching a lot of bugs
during development, including within common third-party extensions like
`tortoise-hg`.
Raw changes are listed here to help with migrating.
- 54d9dc0c2209 "cleanup: drop compatibility for `islocal(<repo-obj>)`"
- f2aa1bb35860 "deprecations: remove support for `HGWITHRUSTEXT` env var and
its usages"
- f026848bebe4 "deprecations: remove `manifest.readfast`"
- e915f96ea1d5 "deprecations: remove `manifest.readdelta`"
- ee0a7fa4cdd5 "revlog: enforce the "writable parameter""
- 592438265fb3 "cleanup: drop the simplestorerepo extension"
- 4963494bbd3f "bundle2: deprecate `bundle2.getrepocaps()` for hg 7.3"
- a49c8fe2c986 "branchmap: drop the `repo.branchheads` method"
+ Miscellaneous
* Add a `commands.commit.report-head-changes` config option, to remove the need
for what can be an expensive computation in cases where it's not needed.
* contrib: update apache-server Dockerfile to debian:trixie
* Added `--py-installer` option to `run-tests.py` to control how Mercurial is
installed before tests
* Added an `--offline` option to `run-tests.py`
* Documented installation through `uv` for Rust extensions (see `hg help rust`)
Following the significant work made in 7.1 in this area, further changes have
been made to the way developers can create a local copy of Mercurial for
testing. Here are the unedited changes to make it easier to follow for those
affected:
- e2d10987bf26 "make-local: change the venv name"
- e53ba925c7eb "make-local: add a symbolic link hg-local"
- 2d69d5a333a6 "make-local: OFFLINE option"
* Tue Nov 18 2025 Sean Baggaley <me@drinkybird.net>
- Mercurial 7.1.2
A scheduled minor release, with few user-facing changes. It is the last release
of the 7.1 cycle, baring any critical release.
* dispatch: reference the Heptapod bug tracker in stacktrace output
* dirstate: read the dirstate data file once instead of doing it 6 times
* rust-revlog: fix adjustment of the LRU size to take the factor in account
* doc: support docutils >= 0.22
* Use old license format in pyproject.toml to help with packaging compatibility
* Improved macOS CI
* Improved test harness robustness
- Remove docutils-022.patch as it's been applied upstream
* Wed Sep 24 2025 Daniel Garcia <daniel.garcia@suse.com>
- Add docutils-022.patch to support docutils >= 0.22
* Fri Sep 12 2025 Sean Baggaley <sean@csnxs.uk>
- Mercurial 7.1.1
A scheduled minor release containing only one series that is relevant for
these notes.
The series fixes the way we detect non-critical repository corruption due to
issue6528 because, unfortunately, the fix for issue6528 was itself buggy.
This means that if your repo had the on-the-fly rewrite option on
(which is the default), too many file revisions will have been marked
as having metadata, potentially costing you a bit of performance
because Mercurial will look for metadata that isn't there.
* *Your repository will behave completely fine by not doing anything**, and we
even have work well underway that changes how we flag file revisions
with metadata, removing the root of this problem entirely.
If you want to fix this however, as with the original issue, this problem is
contagious across the wire so you need to first upgrade to 7.1.1 to get the
correct on-the-fly rewrite, and then run the `hg debug-repair-issue6528` command
to repair your clone. Consult the help of this command for more options.
* issue6528: fix the detection of metadata from delta
* issue6528: avoid creating an intermediate bytes object
* issue6528: don't process snapshot as patches
* issue6528: fix fast path detection of file with metadata
* issue6528: don't report the revision as affect if it just has me
* issue6528: factor out the parent checking
* issue6528: stop trusting repository parent order claiming metadata ex
* issue6528: add --paranoid flag to various call
* issue6528: simplify code flow in _is_revision_affected_fast_inner
* issue6528: directly use delta_has_meta in _is_revision_affected_fast_inner
* Wed Sep 10 2025 Sean Baggaley <me@drinkybird.net>
- Restored the ability to run tests at package build time. 'osc build --with tests' works now.
Locale related tests also work now by temporarily pointing it to the location of the locale
files in the build environment.
Tests are still disabled by default, because they take a very long time to run, and are quiet
when running, so OBS often times out the build.
The Rust tests also run clippy which causes errors with the current version.
* Sat Sep 06 2025 Sean Baggaley <me@drinkybird.net>
- Package the Mercurial Rust features under the subpackage mercurial-rust.
This includes the Rust extensions for hg, and the standalone pure-Rust implementation, rhg.
These features are currently experimental and have caveats,
consult 'hg help rust' and the subpackage documentation before use.
* Mon Aug 04 2025 Sean Baggaley <me@drinkybird.net>
- Mercurial 7.1
+ New Features
* share: add a `--share-source` argument to `hg root`
* fastexport: make it possible to ignore `.gitmodules` in the source repository
+ Many Rust-related changes
* rust-revset: support resolving `wdir()`
* rhg: allow `--repo` as abbreviation for `--repository`
* rhg: support basic aliases
* rhg: support -0 flag in `rhg files`
* rust-annotate: support `-Tjson`
* rust-annotate: support `--rev wdir()`
* rust-annotate: allow `--follow`
* rhg: document known rough edges for the sake of users and packagers
+ Better profiling options, Rust tracebacks and tracing framework
* profiling: support writing profiles to a directory
* tracing: add a way of calling the Rust tracing framework from Python
* rust-errors: add support for a runtime-configured backtrace
* dispatch: enable Rust traceback processing when using `--tracing`
+ Improvement to debug commands
* debugcommands: bring over functionality from debugshell extension
* debugindexdot: add flags for more control over graph
+ Other noteworthy performance work
* `rhg annotate` is up to 61 times faster in certain pathological cases
* Improved performance of the low-level Rust storage primitive
* Removed a lot of syscalls when listing things from storage with high-level APIs
* merge: save one status in certain cases
* merge: improve detection of subrepos in Rust fast path
* Improved the delta encoding algorithm by avoiding computation, using better heuristics and folding deltas
* hgtags-fnode-cache: fast path full warm when no tag exists
+ Developer tooling
* setup-dev-tools: add a first version of script that install dev tools
* setup-dev-tools: add make target to format the working copy using `fix`
* setup-dev-tools: add make target to format the current stack using `fix`
+ New Experimental Features
Following last version's "update from null", this is a Rust version of the update logic when all tracked files are clean and we are not merging. It is on by default if you have Rust enabled: if you encounter any problems use `rust.update-from-clean=no` to disable it, and please let us know what the problem is.
* rust: add an "update from clean" fast-path
New flags are being added to the revlog and transmitted over the network to help with copytracing and delta encoding.
* revlog: introduce a `FLAG_FILELOG_META` revlog flag and requirements
* changegroup: use `REVIDX_HASMETA` in changegroup '04'
* revlog: add a delta-info-flag requirements
* changegroup: transmit snapshot level information in cg4
* delta-search: add a option to ignore suspicious delta
A temporary store encoding that should only exist for one version of Mercurial, until we get a better solution to a very specific problem that you probably don't have.
* store: add a first version of a "plain" encoding
* rust: add support for plain encoding
+ Bug Fixes
* diff: fix function name context detection (issue6965)
* merge: filter ambiguous files and/or wait for fs tick in `applyupdates`
* rust: handle censored revisions according to the config
* changelog: also disable sparse-revlog when disabling generaldelta
* rust-repo: unconditionally load the dirstate before loading the changelog
* revlog: fix a bytes vs str crash when emitting a deprecation warning
* rust-annotate: prefix abort messages with "abort:"
* debugshell: return an exit code 1 on exception
* dirstate: properly purge the cwd cache between commands
* commandserver: always restore working directory (issue6992)
* dispatch: always chdir back in _getlocal
* dispatch: `chdir` back to original `cwd` in `_dispatch`
* ui: avoid a str interpolation into bytes crash in `fixconfig()`
* contrib-hgk: use plain ascii `(C)` instead of latin1 symbol"
+ Backwards Compatibility Changes
* fastexport: add support for Git subrepositories (BC)
* pycompat: drop support for Python 3.8 (BC)
* annotate: use exit code 255 for missing files
* contrib: delete debugshell extension
* rust: update minimum Rust supported version to 1.85.1 for the 7.1 cycle
+ Internal API Changes
* revlog: add "writable" parameter to revlog
* revlog: enforce that filelog get the `writable` parameter passed
+ Miscellaneous
As with every release for a while, there were a ton of patches helping with adding typing information to our Python code, and catching bugs while doing so. The Pytype CI job itself was upgraded to be more helpful.
We've migrated our Rust<->Python bridge from using the deprecated `rust-cpython` to the new standard `PyO3`.
* rust: remove `hg-cpython`
* rust: move from `log` to `tracing`-based logging
We've upgraded our CI to be much easier to update, more up-to-date and use smaller images
* ci: switch the "checks" job to a "v3.0" images
Other mentions
* debugnodemap: print a message when no action was specified
* pyproject: SPDX license expression and license-files (PEP 639)
* apache-server: update the setup from Wheezy to Buster
* apache-server: update the README, add Anubis, add notes about ProxyPass
* rust-pyo3: raise proper Exceptions in more cases
* rust-dependencies: upgrade `which` dependency
* rust: move README from rst to md
* contrib: add support for rhel10
* Tue Jul 15 2025 Sean Baggaley <me@drinkybird.net>
- Mercurial 7.0.3
* convert: correctly convert sub-hour timezones from Git source
* fastexport: fix error message when UTC offset is not a multiple of minutes
* hgdemandimport: exclude _contextvars (newly imported from threading)
* procutil: actually silence backgrounded process stdio on Windows when asked
* bundlespec: fix error in help text
* branch: pass correct set of files to memctx() in case of merge (issue6972)
* branch: recreate changeset of top of new parents if they were replaced
* fix: stop adding unexpected extra requirements to stream clones
* crecord: handle bad regexes in search
* config: move the --shared and --non-shared flag out of experimental
* Test harness improvements
* More modern Python fixes
- Remove an unused rpmlint filter
- Use %make_build for building docs and chg instead of make directly
* Wed May 07 2025 Sean Baggaley <me@drinkybird.net>
- Mercurial 7.0.2
* rust: document a `pipx` install
* keepalive: don't reuse a connection to the proxy for a different host
* httppeer: don't put an int in headers
* dirstate: fix panic when validating dirstate on write
* reject_new_heads: handle None being passed as node
* rust-revlog: detect and fix nodemap lagging behind its revlog
* General improvements to the CI
* Mon Apr 07 2025 Sean Baggaley <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 Sean Baggaley <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 Matej Cepl <mcepl@suse.com>
- Clean up rpmlint issues
* Wed Mar 19 2025 Sean Baggaley <me@drinkybird.net>
- Mercurial 6.9.4
* hgweb: fix XSS vulnerability in hgweb (CVE-2025-2361, bsc#1239685)
* Wed Mar 05 2025 Sean Baggaley <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 Sean Baggaley <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 Sean Baggaley <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 Sean Baggaley <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 Dominique Leuenberger <dimstar@opensuse.org>
- BuildRequire python-setuptools: Mandatory when building against
Python 3.13.
* Wed Nov 20 2024 Andrei Dziahel <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
* Tue Nov 19 2024 Dirk Müller <dmueller@suse.com>
- fix runtime requires
* Tue Oct 29 2024 Andrei Dziahel <develop7@develop7.info>
- Mercurial 6.8.2
This is the last version that supports Python 3.6 and 3.7.
* Compatibility for Python 3.12 and 3.13
* evolution: stop wrongly flagging unrelated part of a split as divergent
* histedit: create state and acquire locks earlier
* copytracing: fix a bug in an edge
case in metadata.compute_all_files_changes
* rhg: ignore readonly FS error when saving dirstate
* merge: sort filemap only if requested by the caller
* windows: implement `util.cachestat` to fix numerous dirstate problems
* subrepo: propagate non-default path on outgoing
* import: fix erroneous comparison of str with bytes
* largefiles: fix check that ensures that --all-largefiles is only
used locally
* profiling: improve 3.12 error message for calling lsprof twice
* profiling: use "stat" profiler to profile individual request
* module-policy: ignore empty module policy
* relnotes: skip the test if the source repository is not readable
* wireprototypes: fix exception handling code with a bad pytype suppression
* Many more type fixes and improvements
* Improvements to the test suite
* Thu Sep 12 2024 Lukas Müller <expeehaa@outlook.com>
- Use existing python RPM macros instead of custom ones.
- Remove mercurial-docutils-compat.diff.
- Remove checks for obsolete SUSE version.
* Tue Aug 06 2024 Andrei Dziahel <develop7@develop7.info>
- Mercurial 6.8.1
* Python 3.12: fix an issue between `threading` and `demandimport`
* rhg: expand user and environment variable in paths to ignore in config
and includes
* `win32mbcs` extension: fix an encoding issue
* Tue Jul 09 2024 Andrei Dziahel <develop7@develop7.info>
- Mercurial 6.8
Regularly scheduled major release.
+ New Features or performance improvements
* Phases have been reworked to improve their general performance
* revset: stop serializing node when using "%ln"
* phases: convert remote phase root to node while reading them
* phases: use revision number in new_heads
* phases: use revision number in analyze_remote_phases
* phases: stop using `repo.set` in `remotephasessummary`
* phases: move RemotePhasesSummary to revision number
* phases: use revision number in `_pushdiscoveryphase`
* phases: introduce a performant efficient way to access
revision in a set
* phases: rework the logic of _pushdiscoveryphase to bound complexity
* The Rust working copy code is being used by more places now:
* matchers: support patternmatcher in rust
* dirstate: remove the python-side whitelist of allowed matchers
* stream-clone: disable gc for `_entries_walk` duration
* stream-clone: disable gc for the initial section for the v3 format
* postincoming: avoid computing branchhead if no report will be posted
* stream-clone: disable gc for the entry listing section for the v2 format
* perf: allow profiling of more than one run
* perf: run the gc before each run
* perf: start recording total time after warming
* perf: clear vfs audit_cache before each run
* outgoing: rework the handling of the `missingroots` case to be faster
* outgoing: add a simple fastpath when there is no common
* tags-cache: skip the filternode step if we are not going to use it
* tags-cache: directly operate on rev-num warming hgtagsfnodescache
* tags-cache: directly perform a monimal walk for hgtagsfnodescache warming
+ New Experimental Features
* Introduce a new experimental branch cache "v3":
* branchcache: add more test for the logic around
obsolescence and branch heads
* branchcache: skip entries that are topological
heads in the on disk file
* branchcache: add a "pure topological head" fast path
* branchcache: allow to detect "pure topological case" for branchmap
+ Bug Fixes
* rust: use `cpython` 0.7.2 crate to add support for Python 3.12
* perf-stream-locked-section: actually use v1 generation when requested
* perf-stream-locked-section: fix the call to the v3 generator
* perf-stream-locked-section: advertise the right version key in the help
* stream: in v3, skip the "size" fast path if the entries have some
unknown size
* stream-clone: stop getting the file size of all file in v3
* streamclone: stop listing files for entries that have no volatile files
* perf-stream-consume: use the source repository config when applying
* bundle: do no check the changegroup version if no changegroup is included
* perf: create the temporary target next to the source in stream-consume
* bundlespec: fix the "streamv2" and "streamv3-exp" variant
* push: rework the computation of fallbackheads to be correct
* profiler: flush after writing the profiler output
* base-revsets: use an author that actually exercises a lot of changesets
* hgrc: search XDG_CONFIG_HOME on mac
* clonebundles: add missing newline to legacy response
* narrow: add a test for linkrev computation done during widen
* Multiple fixes to guard against mmap issues
* portability: fix build on Solaris-derived systemd
+ Miscellaneous
* obsolete: quote the feature name
* Mon Jun 17 2024 Lukas Müller <expeehaa@outlook.com>
- Build with Python 3.11 on Leap 15.6.
* Wed Jun 12 2024 Andrei Dziahel <develop7@develop7.info>
- Mercurial 6.7.4
Exceptional release following a critical regression causing possible data loss
in certain conditions:
* inline-changelog: fix a critical bug in write_pending that delete data
(3cf9e52f5e27)
* inline-changelog: fix pending transaction visibility when splitting
(1721d983dd6d)
Other changes in this release:
* exchange: fix locking to actually be scoped
* chistedit: change action for the correct item
* rust-status: sort the failed matches when printing them
* hooks: add a prewlock and a prelock hooks
* bookmark: fix remote bookmark deletion when the push is raced
* Tue May 07 2024 Andrei Dziahel <develop7@develop7.info>
- Mercurial 6.7.3
* setup: display return code information about failed `hg` call
* bundle-spec: properly identify changegroup-less bundle
* bundle-spec: properly parse boolean configuration as boolean
* matchers: fix the bug in rust PatternMatcher that made it cut off early
* match: fix the "visitdir" method on "rootfilesin" matchers
* match: fix the rust-side bug in visit_children_set for rootfilesin matchers
* match: strengthen visit_children_set invariant, Recursive means "all files"
* wireprotoserver: ensure that output stream gets flushed on exception
* re2: make errors quiet
* dirstate-v2: add check of parent/child nodes being related when writing
* dirstate-v2: check that root nodes are at the root before writing
* rust-cpython: don't swallow the dirstate error message
* rust: blanket implementation of Graph for Graph references
* Various fixes to `admin::verify`
* Thu Apr 04 2024 Martin Sirringhaus <martin.sirringhaus@suse.com>
- Mercurial 6.7.2
Exceptional release following a large performance regression when
cloning.
* phases: avoid a potentially costly dictionary interation in some case
* phases: update the phase set as we go during retract boundary
* bundle2: make the "hgtagsfnodes" part advisory
* Thu Mar 21 2024 Andrei Dziahel <develop7@develop7.info>
- Mercurial 6.7.1
Exceptional release following a crash found in delta code that
can be triggered with complex repository shapes.
* delta-search: fix crash caused by unbound variable
* sshpeer: fix path when handling invalid url exception
* subrepo: fix normalizing paths with scheme
* Mon Mar 18 2024 pgajdos@suse.com
- remove dependency on /usr/bin/python3 using
%python3_fix_shebang macro, [bsc#1212476]
* Fri Mar 15 2024 Andrei Dziahel <develop7@develop7.info>
- Mercurial 6.7
+ New Features
* JSON templates can now use structured diffstat data
* Support rhg status --rev --rev
* The index for REVLOGv1 now has a Rust implementation
* Improved `hg censor`'s output
* censor: add a command flag to skip the head checks
* censor: accept multiple revision in a single call
* usage: add a `usage.repository-role` config
* branchmap: use mmap for faster revbranchcache loading
* crecord: enable search hotkeys (issue6834)
* hg-core: separate timestamp and extra methods
* annotate: limit output to range of lines
* unbundle: faster computation of changed heads
* Large improvements of some of the phases code (23950e39281f)
* rust-filepatterns: export glob_to_re function
+ New Experimental Features
* Introduce `hg admin::chainsaw-update` for automation and *advanced* users
+ Bug Fixes
* templatekw: fix inconsistency of diffstat with diff.merge
* The endless stream of Python 3 cleanups continues
* Improved setup.py robustness
* Improved test suite robustness
* add: don't attempt to add back removed files unless explicitly listed
* statprof: handle `lineno == None` in more cases
* rust: fix cargo doc for hg-cpython
* rust-python-index: don't panic on a corrupted index when calling
from Python
* debugindexstats: handle the lack of Rust support better
* matchers: use correct method for finding index in vector
* narrow: strip trailing `/` from manifest dir before matching it
* cext: fix potential memory leaks of list items appended
with `PyList_Append`
* doc: document that labels must have a dot in them to have an effect
* debugformat: fix formatting for compression level
* obsutil: sort metadata before comparing in geteffectflag()
* crecord: drop calls to `curses.endwin()`
* rust-index: don't use mutable borrow for head-diff computation
* rust-index: don't use mutable borrow to computed filtered heads
+ Backwards Compatibility Changes
Users of the Rust extensions and/or `rhg` should be aware that the new Rust
index can result in a performance degradation for push/pull on repositories
* not* using `persistent-nodemap`
(see `hg help config.format.use-persistent-nodemap`).
If this is something that matters to you, please reach out to us as this
is not an insurmountable obstacle. This is a choice base on the assumption
that there are few people in this situation and our time should be spent
on more pressing matters.
+ Internal API Changes
* 62913:498017baa34b "cleanup: remove some code scheduled to be removed
after 5.9"
* 62914:88ef80210d67 "cleanup: drop `dirstate.is_changing_parent`
deprecated since 6.5"
* 62915:591845f89ada "cleanup: drop `path.pushloc` deprecated since 6.5"
* 62916:d8f65fc72e7b "cleanup: drop deprecated config attribute
on the revlog class"
* 62917:5c9c41273367 "cleanup: turn `pathsuboption` deprecation warning
into an error"
* 62918:7b837fabc990 "cleanup: turn `wrappedfunction` deprecation warning
into an error"
* 62919:eda075d7b2ac "cleanup: turn `wrapfunction` deprecation warning
into an error"
* 62920:c845479fc64d "cleanup: drop the `bytes` compatibility
for attribute related function"
* 63464:dcaa2df1f688 "changelog: never inline changelog"
* 63465:a93e52f0b6ff "changelog: disallow delayed write on inline
changesets"
* 63825:79cd29d598af "dirstate: make the `transaction` argument
of `setbranch` mandatory"
+ Miscellaneous
* perf: support --template on perf::phases
* perf: add a --as-push option to perf::unbundle
* debug: add a debug::unbundle command that simulate the unbundle
from a push
* Lots of refactorings to prepare for performance improvements and remove
tech debt
* Fri Feb 23 2024 pgajdos@suse.com
- Use %patch -P N instead of deprecated %patchN.
* Tue Feb 13 2024 Andrei Dziahel <develop7@develop7.info>
- Update to Mercurial 6.6.3
* tests: don't use "status" operand of dd in test-censor.t (issue6858)
* tests: make sha256line.py available for all tests
* tests: use sha256line.py instead of /dev/random in test-censor.t (issue6858)
* tests: fix nondeterministic test failure in test-contrib-perf.t
* rust-changelog: don't panic on empty file lists
* grep: restore usage of --include/--exclude options
* Fri Jan 12 2024 Andrei Dziahel <develop7@develop7.info>
- Update to Mercurial 6.6.2
* histedit: remove superfluous echo() and endwin() calls (issue6859)
* persistent-nodemap: avoid writing nodemap for empty revlog
* persistent-nodemap: respect the mmap setting when refreshing data
* bundle: do not detect --base argument that match nothing as lack of argument
* narrow: prevent removal of ACL-defined excludes
* pycompat: fix bytestr(bytes) in Python 3.11
* Fri Dec 22 2023 Dominique Leuenberger <dimstar@opensuse.org>
- Do not recommend mercurial-lang: the -lang package already
contains supplements, that trigger on package plus selected
locales.
* Wed Dec 20 2023 Lukas Müller <expeehaa@outlook.com>
- Update to Mercurial 6.6.1.
The first two patches fix aborted transactions that could happen since 6.6.
* revlog: avoid exposing delayed index entry too widely in non-inline revlog
* revlog: avoid wrongly updating the data file location on "divert"
* tests: do not fail tests in a state with uncommitted .py file removal
* perf-tags: fix the --clear-fnode-cache-rev code
* perf-tags: fix clear_cache_fnodes to actually clear that cache
* censor: fix things around inlining
* Various Python 3 cleanups
* Various Windows test suite fixes
* Thu Dec 07 2023 Andrei Dziahel <develop7@develop7.info>
- Mercurial 6.6.1
The first two patches fix aborted transactions that could happen since 6.6.
* revlog: avoid exposing delayed index entry too widely in non-inline revlog
* revlog: avoid wrongly updating the data file location on "divert"
* tests: do not fail tests in a state with uncommitted .py file removal
* perf-tags: fix the `--clear-fnode-cache-rev` code
* perf-tags: fix `clear_cache_fnodes` to actually clear that cache
* censor: fix things around inlining
* Various Python 3 cleanups
* Various Windows test suite fixes
* Tue Nov 21 2023 Andrei Dziahel <develop7@develop7.info>
- Mercurial 6.6
Regularly scheduled major release
As usual, a *lot* of patches don't make it to this list.
+ New Features
* rust-config: add support for default config items
* rhg: add config defaults to configitems.toml
* rhg: support "status FILE"
* rhg: support rhg files [FILE]
* commands: add admin namespace
* admin-command: add verify command
* debug-delta-chain: add options to control what we compute
* Added some caching for uncompressed revlog chunks that speed up
some operations
+ Bug Fixes
* Improve OpenVMS support
* byteify-strings: passe sysstr to attr function and wrapper
* journal: track bookmark deletion
* transaction: actually delete file created during the transaction
on rollback
* pull: avoid referencing a variable before it is initialized
* rust-filepatterns: also normalize RelPath
* narrow: hoist a variable to a higher level to avoid use-before-init
warning
* convert: stabilize subversion date sorter
* run-tests: detect HGWITHRUSTEXT value
* censor: accept censored revision during upgrade
* rust-matchers: fix quadratic complexity in `FileMatcher`
* unstable: do not consider internal phases when computing unstable
* Still a whole bunch of Python 2 -> 3 migration leftovers
+ Backwards Compatibility Changes
* perf: display all timing by default
* infinitepush: drop the extension
* debug-delta-chain: print less data by default
+ Internal API Changes
* The revlog interface has been significantly cleaned up.
* configitems: add `documentation` field
* configitems: declare items in a TOML file
* configitems: move blackbox's config items to the new configitems.toml
* path-suboption: deprecated specifying the attributes as bytes
* pycompat: deprecate using bytes
* check-code: drop the `safehasattr` rule
* safehasattr: drop usage in favor of hasattr
* rust: add `UncheckedRevision` type
* rust: implement the `Graph` trait for all revlogs
* rust: make `Revision` a newtype
* perf: change the way we approach revlog reading
* perf: ensure all readlog's reading is done within a `reading` context
* delta-chain: move the debugdeltachain command in revlogutils
* Tue Nov 07 2023 Andrei Dziahel <develop7@develop7.info>
- 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
* Wed Sep 06 2023 Andrei Dziahel <develop7@develop7.info>
- 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
* Thu Aug 10 2023 Andrei Dziahel <develop7@develop7.info>
- 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
* Fri Jul 28 2023 Andrei Dziahel <develop7@develop7.info>
- Mercurial 6.5
Regularly scheduled major release
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
* Thu Jun 08 2023 Andreas Stieger <andreas.stieger@gmx.de>
- update to 6.4.4
* clonebundles: filter out invalid schemes instead of failing on
them
* doc: format argument for date uses strftime format string
* 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
* Mon May 08 2023 Andrei Dziahel <develop7@develop7.info>
- update to 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` option
* fix: 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
* Fri Apr 21 2023 Andreas Stieger <Andreas.Stieger@gmx.de>
- update to 6.4.2:
* Fix a corruption bug that happens when using clonebundles on
repositories with large files
- includes changes from 6.4.1:
* multiple bug fixes related to rgh path handling, and other fixes
* Fri Mar 24 2023 Andrei Dziahel <develop7@develop7.info>
- Mercurial 6.4
Regularly scheduled (very late, though) major release
+ 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
* Thu Mar 02 2023 Andrei Dziahel <develop7@develop7.info>
- Update to Mercurial 6.3.3
* tests: filter out PEP 657 error locations in tracebacks (issue6780)
* tests: optional PEP 657 error location in test-extension.t (issue6781)
* tests: optional PEP 657 error location
in test-lfs-serve-access.t (issue6782)
* histedit: byteify the help for the multifold action
* sparse: fix a py2 based usage of `map()`
* convert: stop passing str to the dateutil API in darcs
* convert: turn the last str regex into bytes in cvs.py (issue6789)
* convert: change socket mode from b'r+' to 'rwb' in cvs.py (issue6789)
* convert: replace repr() by pycompat.byterepr() in cvsps.py (issue6789)
* tests: os module is frozen in Python 3.11 (issue6786)
* hgweb: unbyteify the 100-continue check
* resourceutil: start using importlib.resources.files() when possible
* revset: the `random` sort should not depend on sys.maxsize (issue6770)
* tests: make sure pygments can detect python script without extension
* convert: brz 3.3.0 moved NoSuchFile exception to breezy.transport
* tests: pygments 2.14+ highlight whitespace in python code
* hghave: make different has_pyoxidizer functions have different names
* hghave: refactor checks for pygments versions using checkvers()
* rust-narrow: fix loop that never loops
* scmutil: make checknewlabel() allow "_" in otherwise
numeric names (issue6737)
* bundlerepo: enforce the requirements declared by the underlying repository
* setup: make the version computation process more resistant
* fix: add more information to the debug output
* tag: disallow tagging the working directory
* dirstate: handle missing backup file on restoration
* dirstate-v2: complain early on docket name collision
* rust: upgrade minimum `rayon` dependency
* setup: support building from an ongoing merge
* rust: add debug log about skipping dirstate update
* rust-dirstate: trace append/no append to help debugging
* dirstate-v2: don't mmap the data file when on NFS
* run-tests: make it possible to nest conditionals
* dirstate: add some debug output when writing the dirstate
* testing: introduce util function to synchronize concurrent
commands on files
* dirstate: add a way to test races happening during status
* dirstate: use more than a bool to control append behavior
* dirstate-v2: add devel config option to control write behavior
* rhg: fix race when a fixup file is deleted on disk
* rhg: fix race when an ambiguous file is deleted on disk
* dirstate: deal with read-race for pure python code
* dirstate: deal with read-race for python code using rust object
* dirstate: deal with read-race for pure rust code path (rhg)
* dirstate: set identity whenever we read the dirstate's v2 docket
* rust-dirstate-v2: don't write dirstate if data file has changed
* rhg: remember the inode of .hg/dirstate
* Wed Jan 04 2023 Andrei Dziahel <develop7@develop7.info>
- Update to Mercurial 6.3.2
* [ecfc84b956a8] tests: expect the message from 1baf0fffd82f
in test-hghave.t (issue6762)
* [5c095119bff4] tests: add the missing space to test-hghave.t (issue6762)
* [2c346c1c75ec] tests: use an all too familiar executable
in test-run-tests.t (issue6661)
* [13c0e3b4fd35] tests: use `test -f` instead of `ls` to see if a file
is present (issue6662)
* [8ced4ca30ea1] bisect: correct message about aborting an in-progress
bisect (issue6527)
* filemerge: fix crash when using filesets in [partial-merge-tools]
* help: fix a py3 error interpolating Set into b'%s'
* match: make the FLAG_RE pattern a raw string
* python-compat: adapt to Python 3.11 BC breakage with `random.sample`
* rust-status: fix thread count ceiling
* hg: show the correct message when cloning an LFS repo
with extension disabled
* extensions: process disabled external paths when `hgext` package
is in-memory
* emitrevision: consider ancestors revision to emit as available base
* make: add a target for building pyoxidizer tests on macOS
* run-tests: support --pyoxidized on macOS
* packaging: add dependencies to the PyOxidizer build on macOS
* Miscellaneous test fixes
/usr/bin/rhg /usr/lib64/python3.13/site-packages/mercurial/pyo3_rustext.so /usr/share/doc/packages/mercurial-rust /usr/share/doc/packages/mercurial-rust/README.md
Generated by rpm2html 1.8.1
Fabrice Bellet, Mon Apr 27 23:28:50 2026