# Mercurial 6.3 (2022-11-09)

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

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

## Mercurial 6.3.1 

- memory-usage: fix `hg log --follow --rev R F` space complexity (dcb2581e33be)
- Improve portability and robustness of test harness
- hg-core: relax dependencies pinning
- matcher: fix issues regex flag contained in pattern (issue6759)
- matcher: do not prepend '.*' to pattern using ^ after flags
- packaging: refresh dependency hashes (issue6750)
- cffi: fix a bytes vs str issue on macOS when listing directories
- commit: properly consider file include and exclude options when closing branch
- dirstate-v2: do not put the dirstate data file in a transaction

## Mercurial 6.3 

### New Features 

- testlib: add `--raw-sha1` option to `f`
- rhg: add `config.rhg` helptext
- config: add alias from `hg help rhg` to `hg help rust`
- rhg: add a config option to fall back immediately
- bundle: introduce a --exact option
- perf-bundle: add a new command to benchmark bundle creation time
- perf-bundle: accept --rev arguments
- perf-bundle: accept --type argument
- perf-unbundle: add a perf command to time the unbundle operation
- perf: introduce a benchmark for delta-find
- contrib: add support for rhel9
- phase-shelve: Implement a 'shelve.store' experimental config
- debug-delta-find: introduce a quiet mode
- sort-revset: introduce a `random` variant
- phase: introduce a dedicated requirement for the `archived` phase
- rebase: add boolean config item rebase.store-source
- rhg: make [rhg status -v] work when it needs no extra output
- rhg: support "!" syntax for disabling extensions
- rhg: add debugrhgsparse command to help figure out bugs in rhg
- rhg: add sparse support
- rhg-status: add support for narrow clones
- templates: add filter to reverse list
- contrib: add pull_logger extension
- revset: handle wdir() in `roots()`
- revset: handle wdir() in `sort(..., -topo)`
- rhg: support tweakdefaults
- rhg: parallellize computation of [unsure_is_modified]

### Default Format Change 

These changes affect newly created repositories (or new clones) done with
Mercurial 6.3.

### New Experimental Features 

### Bug Fixes 

- shelve: demonstrate that the state is different across platforms (issue6735)
- shelve: in test for trailing whitespace, strip commit (issue6735)
- shelve: remove strip and rely on prior state (issue6735)
- tests: fix http-bad-server expected errors for python 3.10 (issue6643)
- status: let `--no-copies` override `ui.statuscopies`
- releasenotes: use re.MULTILINE mode when checking admonitions
- rhg: fallback to slow path on invalid patterns in hgignore
- Fix a bunch of leftover str/bytes issues from Python 3 migration
- keepalive: ensure `close_all()` actually closes all cached connections
- lfs: fix blob corruption when tranferring with workers on posix
- lfs: avoid closing connections when the worker doesn't fork
- dirstate-v2: update constant that wasn't kept in sync
- dirstate-v2: fix edge case where entries aren't sorted
- upgrade: no longer keep all revlogs in memory at any point
- rust-status: save new dircache even if just invalidated
- dirstate-v2: hash the source of the ignore patterns as well
- rhg: fallback when encountering ellipsis revisions
- shelve: handle empty parents and nodestoremove in shelvedstate (issue6748)
- profile: prevent a crash when line number is unknown
- tags-fnode-cache: do not repeatedly open the filelog in a loop
- tags-fnode-cache: skip building a changectx in getfnode
- rust: create wrapper struct to reduce `regex` contention issues

### Backwards Compatibility Changes 

- chg worker processes will now correctly load per-repository configuration
   when given a both a relative `--repository` path and an alternate working
   directory via `--cwd`. A side-effect of this change is that these workers
   will now return an error if hg cannot find the current working directory,
   even when a different directory is specified via `--cwd`.
- phase: rename the requirement for internal-phase from `internal-phase` to `use-internal-phase` (see 74fb1842f8b962cf03d7cd5b841dbcf2ae065587)

### Internal API Changes 

### Miscellaneous 

- sslutil: use proper attribute to select python 3.7+
- typing: suppress a few pyi-errors with more recent pytype
- ci: bump pytype to 2022.03.29
- bundlespec: add documentation about existing option
- subrepo: avoid opening console window for non-native subrepos on Windows
- setup: unconditionally enable the `long-paths-support` option on Windows
- setup: use the full executable manifest from `python.exe`
- tests: work around libmagic bug in svn subrepo tests
- packagelib: use python3 by default
- Improve `hg bisect` performance
- perf: properly process formatter option in perf::unbundle
- compare-disco: miscellaneous display improvements
- fsmonitor: better compatibility with newer Pythons
- revlog: finer computation of "issnapshot"
- rhg: don't fallback if `strip` or `rebase` are activated
- perf: make perf::bundle compatible before 61ba04693d65
- perf: make perf::bundle compatible down to 5.2
- perf-unbundle: improve compatibility
- run-tests: display the time it took to install Mercurial
- mergetools: don't let meld open all changed files on startup
- dirstate-v2: skip evaluation of hgignore regex on cached directories
