Differences between revisions 127 and 461 (spanning 334 versions)
Revision 127 as of 2012-01-01 20:11:22
Size: 22204
Editor: mpm
Comment:
Revision 461 as of 2024-10-28 15:33:56
Size: 51489
Editor: RaphaelGomes
Comment:
Deletions are marked like this. Additions are marked like this.
Line 4: Line 4:
Features and bugfixes in our latest releases.

Note that Mercurial follows a time-based release plan with major releases every four months and minor (bugfix) releases on the first of every month (see TimeBasedReleasePlan).
Features and bugfixes in our latest releases. Please see the [[Download]] page for links to source and binaries.

Note that Mercurial follows a time-based release plan with major releases every three months and minor (bugfix) releases on the first of every month (see TimeBasedReleasePlan).
Line 12: Line 12:
(See [[WhatsNew/Archive|archive]] for older versions.)

== Mercurial 2.0.2 (2012-01-01) ==
This is a regularly-scheduled bug-fix release.

 * alias: shortcut command matching so shadowing works properly (Bts:issue3104)
 * branch: warn on branching
 * changelog: handle decoding of NULs in extra more carefully (Bts:issue3156)
 * convert: improve exception reporting for SVN logstream
 * diff: don't crash when diffing a revision with a deleted subrepo (Bts:issue3153)
 * fetch: fix unneeded commit when no merge attempted (Bts:issue2847)
 * fetch: patch cornercase in children calculation (Bts:issue2773)
 * largefiles: copy files in binary mode (Bts:issue3164)
 * largefiles: don't require a user cache (Bts:issue3088) (Bts:issue3155)
 * largefiles: fix 'hg status' abort after merge
 * largefiles: handle merges between normal files and largefiles (Bts:issue3084)
 * merge: check filename case collision between changesets for branch merging
 * pathauditor: switch normcase logic according to case sensitivity of filesystem
 * progress: check for ui.quiet and ui.debugflag before we write
 * rollback: always call destroyed() (regression from 1.9)
 * util: fix url.__str__() for windows file URLs
 * windows: use upper() instead of lower() or os.path.normcase()

== Mercurial 2.0.1 (2011-12-01) ==
This is a regularly-scheduled bug-fix release.

 * alias: shortcut command matching show shadowing works properly (Bts:issue3104)
 * bundlerepo: don't write branch cache to disk
 * clone: don't save user's password in .hg/hgrc (Bts:issue3122)
 * convert/bzr: correctly handle divergent nested renames (Bts:issue3089)
 * convert/bzr: fix test of divergent nested renames for bzr 1.x
 * convert/svn: fix URL quoting issue with svn 1.7
 * convert: handle trailing slashes in filemap better (Bts:issue3124)
 * diff: '\ No newline at end of file' is also not part of the header
 * diff: --ignore-blank-lines was too enthusiastic
 * dirstate: fix case-folding identity for traditional Unix
 * graft: disallow grafting grafted csets in specific situations (Bts:issue3091)
 * graft: preserve original source in subsequent grafts
 * hook: flush stdout before redirecting to stderr
 * import: fix parent selection when importing merges
 * largefiles: ensure destination directory exists before findfile links to there
 * largefiles: file storage should be relative to repo, not relative to cwd
 * largefiles: fix 'hg clone . ../foo' OSError abort
 * largefiles: fix rename (Bts:issue3093)
 * largefiles: treat status of cache missed largefiles as "missing" correctly
 * largefiles: use "ui.configlist()" to get largefiles.patterns configuration
 * largefiles: write .hg/largefiles/ files atomically
 * makedate: wrong timezone offset if DST rules changed this year (Bts:issue2511)
 * mdiff/patch: fix bad hunk handling for unified diffs with zero context
 * posix: add extended support for OS X path folding
 * posix: fix findexe() to check for file type and access
 * rebase: ensure target is not taken as external (Bts:issue3085)
 * rebase: treat nullmerge as a special case in rebasestate (Bts:issue3046)
 * revset: balance %l or-expressions (Bts:issue3129)
 * revset: follow(nosuchfile) should give an empty set (Bts:issue3114)
 * subrepo: fix git status false positive (Bts:issue3109)
 * subrepo: use correct paths for subrepos with ..-relative paths on windows
 * update: don't clobber untracked files with wrong casing
 * url: handle `file://localhost/c:/foo` "correctly"

== Mercurial 2.0 (2011-11-01) ==
This is a regularly-scheduled feature release. See UpgradeNotes for some minor compatibility notes.

=== Major features ===
 * New core Cmd:graft command (similar to transplant extension)
 * New [[LargefilesExtension|largefiles]] extension

=== Core changes ===
 * commit: abort when there are uncommitted subrepos, use the -S option to recurse
 * help: most commands now have usage examples with help -v
 * import: add --edit switch
 * revset: add more keywords for bisection
 * revert: introduce short option -C for --no-backup
 * log: add new 'bisect' style that prints the bisection status
 * hgweb: add a "web/logoimg" setting to customize the web logo image
 * subrepo: pull revisions on demand when archiving hg subrepos

=== Extension changes ===
 * color: add styles for tags
 * convert: added bookmarks support in filemap
 * eol: add new eol.fix-trailing-newline setting
 * eol: eol.only-consistent can now be specified in .hgeol
 * export: add %m to file format string (first line of the commit message)
 * mq: make qqueue print current queue name
 * rebase: add --edit switch
 * rebase: add --rev option to rebase
 * rebase: allow rebase on ancestor
 * share: introduce unshare command
 * transplant: add --edit option

=== Bug fixes ===
 * alias: don't shadow commands that we only partially matched (Bts:issue2993) (BC)
 * commit: suppress spurious new head message for duplicate commit (Bts:issue2893)
 * contrib: some support for named branches in zsh_completion (Bts:issue2988)
 * progress: add a changedelay to prevent parallel topics from flapping (Bts:issue2698)
 * rebase: allow rebase to ancestor (Bts:issue3010)
 * rollback: avoid unsafe rollback when not at tip (Bts:issue2998)
 * subrepo: fix git branch tracking logic (Bts:issue2920)
 * subrepo: fix repo relative path calculation for root directories (Bts:issue3033)
 * summary: show bookmarks separate from tags and note active mark (Bts:issue2892)
 * util: wrap lines with multi-byte characters correctly (Bts:issue2943)
 * verify: filter messages about missing null manifests (Bts:issue2900)
 * wireproto: do not call pushkey module directly (Bts:issue3041)
 * auth: fix realm handling with Python < 2.4.3 (Bts:issue2739)
 * diffstat: be more picky when marking file as 'binary' (Bts:issue2816)
 * dirstate: don't fail when dropping a not-tracked file (Bts:issue3080)
 * grep: correct handling of matching lines without line ending (Bts:issue3050)
 * hgweb: fix dynamic date calculation not working under Safari
 * mq: avoid data loss upon qfold + qmv (Bts:issue3058)
 * setup: set whole env for running hg even if .hg doesn't exist (Bts:issue3073)
 * windows: recompute flags when committing a merge (Bts:issue1802)
 * windows: sanity-check symlink placeholders

== Mercurial 1.9.3 (2011-10-01) ==
This is a regular bugfix release.

 * setup: build inotify for sys.platform='linux*'
 * bundlerepo: add argument check before unlink
 * hgweb: properly check for bookmarks when drawing graph
 * http: handle push of bundles > 2 GB again (Bts:issue3017)
 * keyword: preserve file mode when overwriting
 * osutil: avoid accidentally destroying the True object in isgui (Bts:issue2937)
 * patch: correctly handle non-tabular Subject: line
 * patch: handle 'gitpatches' being empty, but not none
 * record: use command wrapper properly for qnew/qrefresh (Bts:issue3001)
 * setdiscovery: fix hang when #heads>200 (Bts:issue2971)
 * ui: also swap sys.stdout with self.fout in _readline
 * ui: write traceback to self.ferr
 * url: Remove the proxy env variables only when needed (Bts:issue2451)
 * url: parse fragments first (issue2997)
 * util: fix crash converting an invalid future date to string
 * util: wrap lines with multi-byte characters correctly (Bts:issue2943)
 * win32: quietly ignore missing CreateHardLinkA for Wine

== Mercurial 1.9.2 (2011-08-26) ==
This is a regular bugfix release (slightly early due to travel plans).

 * commands: clarify that 'hg heads foo' shows heads on branch foo
 * dispatch: don't rewrap aliases that have the same definition
 * graphlog: attempt to fix index overrun (Bts:issue2912)
 * http: pass user to readauthforuri() (fix 4a43e23b8c55)
 * http: strip credentials from urllib2 manager URIs (Bts:issue2885)
 * parsers: avoid pointer aliasing
 * subrepo: fix cloning of repos from urls without slash after host (Bts:issue2970)
 * ui: pass ' ' to raw_input when prompting
 * url: really handle urls of the form file:///c:/foo/bar/ correctly
 * win32: msvcr71.dll should be used for python 2.4 and 2.5

== Mercurial 1.9.1 (2011-08-01) ==
This is a regular bugfix release. It fixes several regressions introduced in 1.9. The hgweb server now disables MIME type guessing by default to avoid a potential cross-site scripting issue when hosting untrusted repositories (Bts:issue2923). See UpgradeNotes for more info.

 * dispatch: make sure global options on the command line take precedence
 * eol: ignore IOError from deleted files in commitctx
 * hgcia: set default value of strip to -1 (Bts:issue2891)
 * hgweb: do not ignore [auth] if url has a username (Bts:issue2822)
 * hgweb: handle 'baseurl' configurations with leading slash (Bts:issue2934)
 * hgweb: raw file mimetype guessing configurable, off by default (BC) (Bts:issue2923)
 * httpclient: import ca33b88d143c from py-nonblocking-http (issue2932)
 * patch: fix parsing patch files containing CRs not followed by LFs
 * rebase: block collapse with keepbranches on multiple named branches (Bts:issue2112)
 * rebase: reset bookmarks (Bts:issue2265 and Bts:issue2873)
 * revert: restore check for uncommitted merge (Bts:issue2915) (BC)
 * revsets: catch type error on tip^p1(tip) (Bts:issue2884)
 * revsets: do the right thing with x^:y (Bts:issue2884)
 * subrepo: handle adding svn subrepo with a svn:external file in it (Bts:issue2931)
 * subrepo: use working copy of .hgsub to filter status (Bts:issue2901)
 * url: store and assume the query part of an url is in escaped form (Bts:issue2921)
 * util: rename the util.localpath that uses url to urllocalpath (Bts:issue2875)
 * verify: filter messages about missing null manifests (Bts:issue2900)
 * web: output a correct date in short format (Bts:issue2902)
 * win32: assign winstdout to sys.__stdout__ as well (Bts:issue2888)

== Mercurial 1.9 (2011-07-01) ==
This is a regular feature release. See UpgradeNotes for some minor compatibility notes.

=== Major features ===
 * New [[http://www.selenic.com/hg/help/filesets|fileset]] file matching support
 * Improved remote changeset discovery
 * New [[CommandServer|command server]] mode to improve application integration
 * Experimental generaldelta storage scheme
 * Experimental new http client library

=== Command changes ===
 * HGPLAIN: allow exceptions to plain mode, like i18n, via HGPLAINEXCEPT
 * manifest: add new option --all
 * aliases: add positional arguments to non-shell aliases
 * add: introduce a warning message for non-portable filenames (Bts:issue2756)
 * add: notify when adding a file that would cause a case-folding collision
 * bisect: new command to extend the bisect range (Bts:issue2690)
 * bookmarks: allow deactivating current bookmark with -i
 * bundle: update current bookmark to most recent revision on current branch
 * diff: make diff -c aware of revision sets
 * help: add -c/--command flag to only show command help (Bts:issue2799)
 * help: add -e/--extension switch to display extension help text
 * help: move hgignore man page into built-in help (Bts:issue2769)
 * http: correctly handle redirects from http to https
 * identify: list bookmarks for remote repositories
 * import: add --bypass option
 * paths: Add support for -q/--quiet
 * pushkey: add hooks for pushkey/listkeys
 * revset: add aliases
 * revset: add ^ and ~ operators from parentrevspec extension
 * revset: add a revset command to get bisect state
 * revset: add desc(string) to search in commit messages
 * revset: add follow(filename) to follow a filename's history across copies
 * revset: introduce filelog() to emulate log's fast path
 * revset: add a last() function

=== Web changes ===
 * add bookmarks listing to raw style and summary pages
 * support alternate logo url
 * add base link to file log for paper and coal styles (Bts:issue2452)
 * paper, coal: display diffstat on the changeset page
 * elapsed time calculation dynamic (javascript)
 * provide diffstat and summary on the changeset page

=== Extension changes ===
 * hgcia: handle URL like in notify (Bts:issue2406)
 * rebase: add -m/--message to rebase --collapse (Bts:issue2389)
 * Updating hgext.extdiff to use revsets
 * bash_completion: enable alias auto-complete
 * bugzilla: add XMLRPC interface
 * color: add support for terminfo-based attributes and color
 * convert/mtn: add support for using monotone's "automate stdio" when available
 * convert/svn: stop using svn bindings when pushing to svn
 * convert: add bookmark support for hg and git backends
 * convert: add svnrev, svnpath and svnuuid template keywords
 * extdiff: add repository root as a variable
 * graphlog: support more log command features with revsets
 * keyword: convert a verbatim block to a field list
 * keyword: offer additional datefilters when the extension is enabled
 * mq: add a 'mq()' revset predicate that returns applied mq csets
 * notify: send changesets on 'outgoing' hook, updated doc
 * progress: add speed format
 * rebase: add --tool argument for specifying merge tool
 * rebase: allow for rebasing descendants onto ancestors on different named branches
 * record: add an option to backup all wc modifications
 * record: add qrefresh -i/--interactive
 * record: add white space diff options
 * record: alias qrecord to qnew -i/--interactive

=== Bug fixes ===
 * bookmarks: allow create/move bookmark without making it current (Bts:issue2788)
 * bookmarks: do not forward merged bookmark (Bts:issue1877)
 * changegroup: do not count closed new heads (Bts:issue2697)
 * config: handle comment lines in continuations (Bts:issue2854)
 * dispatch: propagate ui command options to the local ui (Bts:issue2523)
 * eol: make the hook check all new heads, not only tip (Bts:issue2666)
 * grep: don't print data from binary files for matches (Bts:issue2614)
 * http: report unexpected unparsable push responses (Bts:issue2777)
 * httprepo: handle large lengths by bypassing the len() operator
 * httprepo: long arguments support (Bts:issue2126)
 * httprepo: proper handling of invalid responses without content-type (Bts:issue2019)
 * httprepo: send URL redirection notices to stderr (Bts:issue2828)
 * localrepo: don't add deleted files to list of modified/added files (Bts:issue2761)
 * localrepo: ignore tags to unknown nodes (Bts:issue2750)
 * merge: drop resolve state for mergers with identical contents (Bts:issue2680)
 * patch: do not patch unknown files (Bts:issue752)
 * path_auditor: check filenames for basic platform validity (Bts:issue2755)
 * rebase: don't mark file as removed if missing in parent's manifest (Bts:issue2725)
 * rebase: preserve mq series order after rebasing (Bts:issue2849)
 * rebase: restore mq guards after rebasing (Bts:issue2107)
 * revset: report a parse error if a revset is not parsed completely (Bts:issue2654)
 * scmutil: improve path calculation for install-relative RC files (Bts:issue2841)
 * set NOT_CONTENT_INDEXED on .hg dir (Bts:issue2694)
 * sslutil: fall back to commonName when no dNSName in subjectAltName (Bts:issue2798)
 * subrepo: be more careful with deletions of .hgsub and .hgsubstate (Bts:issue2844)
 * subrepo: make stdin for svn a pipe for non-interactive use (Bts:issue2759)
 * subrepo: svn abort now depends on exit code (Bts:issue2833)
 * subrepo: be smarter about what's an absolute path (Bts:issue2808)
 * svn subrepo: attempt work around obstructed checkouts (Bts:issue2752)
 * svn subrepos: work around checkout obstructions (Bts:issue2752)
 * tags: catch more corruption during cache parsing (Bts:issue2779)
 * util: add Mac-specific check whether we're in a GUI session (Bts:issue2553)

== Mercurial 1.8.4 (2011-06-01) ==
This is a regular time-based bugfix release.

 * bookmarks: do not forward merged bookmark (Bts:issue1877)
 * changelog: convert user and desc from local encoding early
 * fix bookmarks rollback behavior
 * hgrc.5: document shell aliases
 * httprepo: proper handling of invalid responses without content-type (Bts:issue2019)
 * httprepo: send URL redirection notices to stderr (Bts:issue2828)
 * localrepo: don't add deleted files to list of modified/added files (Bts:issue2761)
 * localrepo: ignore tags to unknown nodes (Bts:issue2750)
 * mq: strip extra whitespace from node ids in header (Bts:issue2790)
 * rebase: restore mq guards after rebasing (Bts:issue2107)
 * revset: expand help for contains predicate
 * revset: note case-insensitive matches in keyword and user
 * revset: note case-sensitive match in grep
 * revset: report a parse error if a revset is not parsed completely (Bts:issue2654)
 * revset: the name is optional for the tag predicate
 * simplemerge: do not allow binary files to abort an entire merge
 * strip: make it clear that --force discards changes (Bts:issue310)
 * subrepo: don't crash when git .hgsubstate is empty (Bts:issue2716)
 * subrepo: make stdin for svn a pipe for non-interactive use (Bts:issue2759)
 * subrepo: respect non-default path for incoming/outgoing
 * subrepo: svn abort now depends on exit code (Bts:issue2833)
 * subrepo: use code from 71ea5b only if Python needs it (Bts:issue2795)
 * tags: catch more corruption during cache parsing (Bts:issue2779)

== Mercurial 1.8.3 (2011-05-01) ==
This is a regular time-based bugfix release.

 * convert: make filemap prune useless branch closing revs (Bts:issue2774)
 * encoding: avoid localstr when a string can be encoded losslessly (Bts:issue2763)
 * extdiff: fix broken symlinks handling (Bts:issue1909)
 * help config: explain that config files do not exist by default
 * hgweb: add bookmark labels to gitweb theme
 * hgweb: add missing bookmarks definition to coal/map
 * hgweb: add missing bookmarks templates to atom/rss styles
 * hgweb: add separate bookmarks listing to gitweb theme
 * hgweb: add separate bookmarks listing to monoblue theme
 * hgweb: detect change based on changelog size too
 * hgweb: fix inconsistant display of graphlog (Bts:issue1706)
 * hgweb: fix typo and inactive link in page_nav and page_header of gitweb's help
 * hgweb: fix typo in page-header of monoblue's help template
 * hgweb: format page_nav of gitweb/error.tmpl and add missing links
 * rebase: don't mark file as removed if missing in parent's manifest (Bts:issue2725)
 * subrepo: handle svn tracked/unknown directory collisions
 * subrepo: prevent url normalization from removing // in ssh paths (Bts:issue2556)
 * subrepo: tell Subversion when we are non-interactive (Bts:issue2759)
 * url: use a regex to hide unsupported ssh passwords (Bts:issue2754)
 * zeroconf: notify the Zeroconf threads when hg exits

== Mercurial 1.8.2 (2011-04-01) ==
This is a regular time-based bugfix release.

 * bookmarks: discard current bookmark if absent from the bookmarks (Bts:issue2692)
 * bookmarks: fix update of the current bookmark during rename
 * color: port to using ctypes (Bts:issue2687)
 * convert/svn: fix _iterfiles() output in root dir case (Bts:issue2647)
 * eol: do not abort when win32text is found, only warn
 * eol: use dirstate methods to clear dirstate
 * fix compiling of extensions for OS X and XCode 4.0
 * hgweb: add display of bookmarks for changelog and changeset
 * hgweb: add separate page with bookmarks listing
 * merge: avoid unlinking destination of merge when case changes (Bts:issue2715)
 * mq: do not let qrefresh write bad patch
 * pager: don't page stderr if it's being redirected (Bts:issue2541)
 * push/outgoing: print remote target path even if there's an error (Bts:issue2561)
 * subrepo: recognize scp-style paths as git URLs
 * templates: widen the graph canvas (Bts:issue2683)

== Mercurial 1.8.1 (2011-03-10) ==
This release backs out a behavior change for so-called 'fast-forward' merges on named branches.

 * annotate: rewrite to deal with crossed linkrevs (Bts:issue2682)
 * bookmark: fix invalidation of localrepo._bookmarkcurrent
 * cacert: improve error report when web.cacert file does not exist
 * contrib: update tcsh_completion for Mercurial 1.8
 * hgcia: accept "queued." xmlrpc return as success
 * hgweb: fix filelog rss links generation
 * hgweb: use tip in gitweb/monoblue filelog rss links (Bts:issue2677)
 * merge: back out single-parent fast-forward merge
 * merge: drop resolve state for mergers with identical contents (Bts:issue2680)
 * merge: improve unresolved conflicts warning (Bts:issue2681)
 * mergetools: add alternate registry keys for 32bit apps on 64bit O/S
 * mq: forbid commit of merge involving mq patches
 * subrepo: backout 67fbe566eff1, --force requires svn >= 1.5
 * subrepo: don't crash when git repo is missing
 * subrepo: handle svn tracked/unknown directory collisions
 * wix: drop bin/ folder from MSI installers (Bts:issue2673)

== Mercurial 1.8 (2011-03-01) ==
=== Core ===
 * Bookmarks are now a core feature (see UpgradeNotes)
 * New `listfile:` pattern-matching (Topic:patterns)
 * Revset syntax supported by most commands
 * Performance improvements for reading large repository indexes
 * Certificate validation for HTTPS proxies

=== Subrepos ===
 * New support for git subrepos
 * Various improvements to merge, update, and commit logic

=== Windows ===
 * Numerous robustness improvements for quirks in Windows file handling
 * Now uses the native ctypes module rather than !PyWin32

=== Extensions ===
 * eol: filter aliases for compatibility with win32text
 * mq: `--exact` option for qpush
 * mq: various robustness improvements
 * progress: remaining time estimates


----
CategoryProcess CategoryProject
(See the [[WhatsNew/Archive|archive]] for older versions)

== Mercurial 6.9rc0 (2024-10-28) ==
Regularly scheduled major release. An [[Release6.9|overview of new features]] is available.

== Mercurial 6.8 (2024-07-08) to 6.8.2 (2024-10-28) ==
Regularly scheduled major release. An [[Release6.8|overview of new features]] is available.

== Mercurial 6.7 (2024-03-15) to 6.7.4 (2024-06-12) ==
/!\ 6.7.1, 6.7.2 and 6.7.3 are affected with a data loss critcal bug.
 
Regularly scheduled major release. An [[Release6.7|overview of new features]] is available.

== Mercurial 6.6 (2023-11-21) to 6.6.3 (2024-02-12) ==
Regularly scheduled major release. An [[Release6.6|overview of new features]] is available.

== Mercurial 6.5 (2023-07-06) to 6.5.3 (2023-10-06) ==
Regularly scheduled major release. An [[Release6.5|overview of new features]] is available.

== Mercurial 6.4 (2023-03-24) to 6.4.5 (2023-06-22) ==
Regularly scheduled (but very late) major release. An [[Release6.4|overview of new features]] is available.

== Mercurial 6.3 (2022-11-14) to 6.3.3 (2023-03-02) ==
Regularly scheduled major release (delayed for a number of factors). An [[Release6.3|overview of new features]] available.

6.3.1 is an extra release following some upstream Python 3.11 breakage of how regex flags work.

== Mercurial 6.2 (2022-07-11) to 6.2.3 (2022-10-04) ==
Regularly scheduled major release. An [[Release6.2|overview of new features]] available. This is the first Python 3 only version.

== Mercurial 6.1 (2022-03-01) to 6.1.4 (2022-06-16) ==
Regularly scheduled major release. An [[Release6.1|overview of new features]] available. This is the last version to support Python 2.

== Mercurial 6.0 (2021-11-23) to 6.0.3 (2022-02-18) ==
Regularly scheduled feature release. An [[Release6.0|overview of new features]] available. This is a regularly-scheduled quarterly feature release. It was delayed from the usual calendar due to the ongoing effort to make Windows support more robust, especially on Python 3.

== Mercurial 5.9 to 5.9.3 (2021-08-20) ==
Regularly scheduled feature release. An [[Release5.9|overview of new features]] available. This is a regularly-scheduled quarterly feature release.

== Mercurial 5.8 (2021-05-03) ==
Regularly scheduled feature release. An [[Release5.8|overview of new features]] available. This is a regularly-scheduled quarterly feature release.

== Mercurial 5.7.1 (2021-03-08) ==
Regularly scheduled bug fix release.
=== commands ===
 * log: fix handling of root (or empty) path provided by matcher (Bts:issue6478)
 * patch: fix a formatting issue
 * patch: make diff --git to differentiate b/w file is empty or doesn't exists

=== core ===
 * hooks: introduce a ':run-with-plain' option for hooks

=== extensions ===
 * largefiles: properly pass kwargs into url.open

=== unsorted ===
 * procutil: extend gui test to detect wayland session (Bts:issue6479)
 * rust-status: honor matcher when using the dirstate-only fast-path (Bts:issue6483)
 * tests: add a test to demonstrate a bug in 'hg diff --git' (Bts:issue6486)

== Mercurial 5.7 (2021-01-29) ==
Regularly scheduled feature release. An [[Release5.7|overview of new features]] available. This is a regularly-scheduled quarterly feature release.

== Mercurial 5.6.1 (2020-12-03) ==

Regularly scheduled bug fix release.

=== extensions ===
 * rebase: clear merge state when aborting in-memory merge on dirty working copy

=== unsorted ===
 * crecord: render chunkpad on Windows (Bts:issue6427)
 * diff: do not concatenate immutable bytes while building a/b bodies (Bts:issue6445)

== Mercurial 5.6 (2020-11-02) ==

Regularly scheduled feature release. An [[Release5.6|overview of new features]] available. This is a regularly-scheduled quarterly feature release.

== Mercurial 5.5.2 (2020-10-02) ==

Regularly scheduled bug fix release.

=== commands ===
 * log: fix crash and bad filematcher lookup by -fr'wdir()' PATH

=== unsorted ===
 * hgdemandimport: bypass demandimport for _ast module (Bts:issue6407)
 * hgdemandimport: exclude more sqlalchemy modules
 * strip: with --keep, consider all revs "removed" from the wcp (Bts:issue6270)


== Mercurial 5.5.1 (2020-09-01) ==

Regularly scheduled bug fix release.

=== bug fixes ===
 * keepalive: Do not append _rbuf if _raw_readinto exists (Bts:issue6356)

== Mercurial 5.5 (2020-08-03) ==

Regularly scheduled feature release. An [[Release5.5|overview of new features]] available. This is a regularly-scheduled quarterly feature release.

== Mercurial 5.4.2 (2020-07-01) ==

Regularly scheduled bug fix release.

=== extensions ===
 * rebase: avoid clobbering wdir() with --dry-run or --confirm (Bts:issue6291)

=== unsorted ===
 * curses: do not initialize LC_ALL to user settings (Bts:issue6358)


== Mercurial 5.4.1 (2020-06-15) ==

Regularly scheduled bug fix release.

=== commands ===
 * graft-state: save --base in graft's state, fixing bug with graft --continue
 * graft: fix --base value to be saved in state file

=== core ===
 * dirstate: make sure the dirstate is loaded before the changelog (Bts:issue6303)

=== unsorted ===
 * bash_completion: do not use aliased hg if it sources a script (Bts:issue6308)
 * demandimport: fix compatibility with meta path finders w/o find_spec() method
 * flags: read flag from dirstate/disk for workingcopyctx (Bts:issue5743)
 * fsmonitor: coerce 'clock' variable to byte-string (Bts:issue6321)
 * url: fix a bytes vs str crash in processing proxy headers (Bts:issue6249)


== Mercurial 5.4 (2020-05-01) ==

Regularly scheduled feature release. An [[Release5.4|overview of new features]] available. This is a regularly-scheduled quarterly feature release.



== Mercurial 5.3.2 (2020-04-02) ==

Regularly scheduled bug fix release.

=== unsorted ===
 * discovery: avoid wrong detection of multiple branch heads (Bts:issue6256)
 * gzip: use the stdlib version with python 3 (Bts:issue6284)

== Mercurial 5.3.1 (2020-03-04) ==

Regularly scheduled bug fix release.

=== commands ===
 * branch: make --force work even when specifying revs
 * import: don't ignore '--secret' when '--bypass' is specified

=== extensions ===
 * shelve: fix ordering of merge labels

=== unsorted ===
 * phabricator: fix a phabsend crash when processing a renamed binary
 * remotefilelog-test: glob some flaky output line (Bts:issue6083)
 * remotefilelog: add 'changelog' arg to shallowcg1packer.generate (Bts:issue6269)

== Mercurial 5.3 (2020-02-03) ==

Regularly scheduled feature release. An [[Release5.3|overview of new features]] available. This is a regularly-scheduled quarterly feature release.


== Mercurial 5.2 (2019-11-05) ==

Regularly scheduled feature release. An [[Release5.2|overview of new features]] available. This is a regularly-scheduled quarterly feature release.


=== Backwards Compatibility Changes ===

* The infinitepush extension is believed to be unused, and will be deleted at
  the end of 2020 unless users contact mercurial-devel@mercurial-scm.org.

* 'hg grep' now searches working copy file contents by default. We recognize
  this is a significant change from past behavior, but surveys of large bodies
  of users indicated nobody used (and almost nobody understood) the previous
  no-flags behavior of 'hg grep'. The new behavior aligns with the behavior
  most users expected (including hg's maintainers), which also happens to be
  the behavior of 'git grep'. Given that the old behavior was confusing to the
  point of being unusable, we were comfortable changing this behavior.

=== API Changes ===

* 'mercurial.hg.update*' and 'mercurial.merge.update' now expect a value from
  a set of NAMED_CONSTANTS ('merge.UPDATECHECK_*' constants) rather than a
  collection of magic strings. As of now, the values are the same, but code
  should be prepared for these values to change in the future.

* 'mercurial.hg.updatetotally' is now more thorough about checking its
  'updatecheck' keyword argument. Previously invalid values would have used
  the configured default updatecheck method, but now will raise ValueError.

* 'mercurial.bookmarks.bmstore' no longer has a convenience method for looking
  up changectx instances from a bookmark name. Use
  'repo[repo.bookmarks[name]]' intead of 'repo.bookmarks.changectx(name)'.


=== commands ===
 * amend: add option to update to the current user
 * amend: enable support for closing the branch
 * amend: enable support for using the secret phase
 * bookmarks: actual fix for race condition deleting bookmark
 * bookmarks: remove changectx() method from bmstore (API)
 * branchmap: explicitly warm+write all subsets of the branchmap caches
 * import: add debug messages when parsing data from patch header
 * import: read X-Mercurial-Node email header to determine nodeid
 * log: populate keywords if specified in custom -Tjson(...) or -Tcbor(...)
 * merge: replace magic strings with NAMED_CONSTANTS (API)
 * push: support config option to require revs be specified when running push

=== core ===
 * exchange: abort on pushing bookmarks pointing to secret changesets (Bts:issue6159)
 * exchange: avoid unnecessary conversion of bookmark nodes to hex (API)
 * revlog: add a 'sidedata' parameters to addrevision
 * revlog: add a way to control sidedata changes during revlog.clone
 * revlog: add the appropriate flag is sidedata are passed to 'addrevision'
 * revlog: assign rawtext earlier in '_revisiondata'
 * revlog: avoid caching raw text too early in _revisiondata
 * revlog: deprecate the use of 'revision(..., raw=True)'
 * revlog: drop silly 'raw' parameter to 'rawdata' function
 * revlog: explicitly set revlogv0 in vfs options
 * revlog: introduce a 'sidedata' method
 * revlog: move 'nullid' early return sooner in '_revisiondata'
 * revlog: return sidedata map from '_revisiondata'
 * revlog: stop calling 'basetext' 'rawtext' in _revisiondata
 * revlog: stop using '_processflags' directly
 * revlog: use the new sidedata map return in the sidedata method
 * templatefuncs: account for user's diffopts in diff() (BC)
 * ui: option to preserve the progress bar

=== extensions ===
 * eol: don't fallback to use .hgeol from tip (BC)
 * largefiles: use context manager for setting "lfstatus" on subrepos too
 * rebase: track new nodes when --keep is set
 * unshelve: abort on using --keep and --interactive together
 * unshelve: add abort on using continue and interactive together
 * unshelve: changes how date is set on interactive mode
 * unshelve: create a matcher only if required on creating unshelve ctx
 * unshelve: delete shelvedstate after a successful unshelve --continue
 * unshelve: forget unknown files after a partial unshelve
 * unshelve: handle stripping changesets on interactive mode
 * unshelve: store information about interactive mode in shelvedstate
 * unshelve: unify logic around creating an unshelve changeset

=== unsorted ===
 * automation: add a command to submit to a Try server
 * automation: support and use Debian Buster by default
 * changelog: make copies related function return None or a valid value
 * continue: added support for transplant
 * copies: remove existing copy info from the changeset on amend (BC)
 * demandimport: explicitly declare '_session' at the module level
 * discovery: replace "heads" by "changesets" in a output note (BC)
 * fastannotate: remove support for flock() locking
 * fix: warn when a fixer doesn't have a configured command
 * flagprocessors: deprecate _processflags
 * flagprocessors: have the read transform function return side data (API)
 * flagprocessors: writetransform function take side data as parameter (API)
 * flagutil: move REVIDX_KNOWN_FLAGS source of truth in flagutil (API)
 * flagutil: move addflagprocessor to the new module (API)
 * flagutil: move insertflagprocessor to the new module (API)
 * format: format commands.py, which recently regressed
 * grep: enable all-files by default (BC)
 * hg: have 'updatetotally' more thoroughly check updatecheck argument (API)
 * infinitepush: mark extension as likely to be deleted
 * narrow: don't hexify paths and double-hexify known nodes on wire (BC)
 * narrow: drop server support for widening using the getbundle command (BC)
 * notify: add option for deterministic message-id generation
 * py3: prevent comparison with None in curses histedit (Bts:issue6196)
 * python-zstandard: apply big-endian fix (Bts:issue6188)
 * remotefilelog: reduce probability of race-condition in remotefilelog tests
 * rust-dirstate-status: add call to rust-fast path for 'dirstate.status'
 * rust-dirstate-status: rust-cpython bindings for 'dirstate.status'
 * rust-dirstate-status: use fast-path even with fsmonitor and sparse extensions
 * rust-discovery: optionally don't randomize at all, for tests
 * sidedata: introduce a new requirement to protect the feature
 * split: handle partial commit of renames when doing split or record (Bts:issue5723)
 * sshserver: flush stream after command dispatch
 * test: allow different result for zstd compression (Bts:issue6188)
 * transplant: added support for --stop flag
 * uncommit: add options to update to the current user or current date
 * uncommit: add support to modify the commit message and date
 * uncommit: drop the hyphen from --current-user and --current-date
 * uncommit: enable support for adding a note
 * uncommit: make -D/--date and -U/--user mutually exclusive

=== Behavior Changes ===

 * copies: remove existing copy info from the changeset on amend (BC)
 * discovery: replace "heads" by "changesets" in a output note (BC)
 * eol: don't fallback to use .hgeol from tip (BC)
 * grep: enable all-files by default (BC)
 * narrow: don't hexify paths and double-hexify known nodes on wire (BC)
 * narrow: drop server support for widening using the getbundle command (BC)
 * templatefuncs: account for user's diffopts in diff() (BC)

=== Internal API Changes ===

 * bookmarks: remove changectx() method from bmstore (API)
 * exchange: avoid unnecessary conversion of bookmark nodes to hex (API)
 * flagprocessors: have the read transform function return side data (API)
 * flagprocessors: writetransform function take side data as parameter (API)
 * flagutil: move REVIDX_KNOWN_FLAGS source of truth in flagutil (API)
 * flagutil: move addflagprocessor to the new module (API)
 * flagutil: move insertflagprocessor to the new module (API)
 * hg: have 'updatetotally' more thoroughly check updatecheck argument (API)
 * merge: replace magic strings with NAMED_CONSTANTS (API)


== Mercurial 5.1.2 (2019-10-02) ==

Regularly scheduled bug fix release.

=== extensions ===
 * phabricator: don't abort if property writing fails during amending

=== tests ===
 * test: allow different result for zstd compression (Bts:issue6188)


== Mercurial 5.1.1 (2019-09-05) ==

Regularly scheduled bug fix release.

=== commands ===
 * bookmarks: actual fix for race condition deleting bookmark

=== core ===
 * exchange: abort on pushing bookmarks pointing to secret changesets (Bts:issue6159)
 * python-zstandard: apply big-endian fix (Bts:issue6188)
 * fncache: make debugrebuildfncache not fail on broken fncache

=== tests ===
 * various test runner fixes
 * fixed use of `tr --delete` for tr(1) portability


== Mercurial 5.1 (2019-08-01) ==

Regularly scheduled feature release. An [[Release5.1|overview of new features]] available. This is a regularly-scheduled quarterly feature release.

=== commands ===
 * bookmark: also make bookmark cache depends of the changelog
 * bookmarks: actual fix for race condition deleting bookmark
 * bookmarks: actually trigger the race deleting bookmark in the test
 * bookmarks: backout the attempt to fix the delete race
 * bookmarks: keep bookmarks in .hg/store if new config set
 * bookmarks: use context manager when writing files
 * bookmarks: use correct store for "ambiguity check"
 * branch: abort if closing branch from a non-branchhead cset
 * branchcache: store the maximum tip in a variable inside for loop
 * commands: drop support for legacy ^cmd registration (API)
 * commit: add --force-close-branch flag to close a non-head changeset
 * commit: add a check if it is trying to close an already closed branch head
 * commit: add ability to print file status after each successful invocation
 * commit: allow --interactive to work again when naming a directory (Bts:issue6131)
 * commit: improve the files field of changelog for merges
 * commit: make the error message more specific while aborting branch closing
 * commit: respect --no-edit in combination with --amend
 * graft: moved abortgraft and readgraft to cmdutil
 * help: check if a subtopic exists and raise an error if it doesn't (Bts:issue6145)
 * log: add config for making 'hg log -G' always topo-sorted
 * log: flag topo-sorted set as such
 * log: pass getcopies() function instead of getrenamed() to displayer (API)
 * merge: disallow merge abort in case of an unfinished operation (Bts:issue6160)
 * patch: use a short, fixed-size message for last line of prompt (Bts:issue6158)
 * push: added clear warning message when pushing closed branches(Bts:issue6080)
 * tags: avoid double-reversing a list
 * verify: also check full manifest validity during verify runs
 * verify: introduce a notion of "level"
 * verify: introduce an experimental --full flag

=== core ===
 * docs: man page and HTML help now order commands categorically, instead of alphabetically
 * minirst: support subsubsubsubsections (header level 5) with marker `''''`
 * revlog: add the option to track the expected compression upper bound
 * revlog: speed up isancestor
 * templatekw: make {file_*} compare to both merge parents (Bts:issue4292)
 * templater: drop support for old style keywords (API)
 * util: make util.dirs() and util.finddirs() include root directory (API)

=== extensions ===
 * largefiles: make last line of prompts <40 english chars (Bts:issue6158)
 * mq: fix for merge detection methods
 * rebase: fix in-memory rebasing of copy of empty file
 * rebase: tweak description of inmemory working even w/ dirty working dir
 * shelve: modify help text on --interactive
 * unshelve: add interactive mode
 * unshelve: add space to help
 * unshelve: changed Corruptedstate error msg from ui.warn to error.Abort
 * unshelve: mark unshelve interactive as experimental

=== unsorted ===
 * abort: added support for graft
 * abort: added support for histedit
 * abort: added support for merge
 * abort: added support for rebase
 * abort: added support for unshelve
 * automation: initial support for running Linux tests
 * bisect: do not crash with rewritten commits
 * blackbox: disable extremely verbose logging (Bts:issue6110)
 * catapipe: add support for COUNTER events
 * changelog: define changelogrevision.p[12]copies for null revision
 * changelog: fix handling of empty copy entries in changeset
 * changelog: optionally store added and removed files in changeset extras
 * continue: added support for rebase
 * continue: added support for unshelve
 * copies: filter invalid copies only at end of pathcopies() (Bts:issue6163)
 * copies: follow copies across merge base without source file (Bts:issue6163)
 * debugrevlog: fix average size computation for empty data (Bts:issue6167)
 * drawdag: don't crash when writing copy info to changesets
 * extdata: avoid crashing inside subprocess when we get a revset parse error
 * extensions: drop support for extsetup() without 'ui' argument (API)
 * filemerge: make last line of prompts <40 english chars (Bts:issue6158)
 * graphmod: remove support for graph lines mixing parent/grandparent styles (BC)
 * manifest: avoid corruption by dropping removed files with pure (Bts:issue5801)
 * match: remove unused `match.__iter__` implementation (API)
 * match: use `''` instead of '.' for root directory (API)
 * procutil: allow callers of runbgcommand to assume the process starts
 * remotefilelog: check if RFL is enabled in getrenamedfn() override
 * remotefilelog: handle copies in changesets in getrenamedfn() override
 * remotefilelog: log when we're about to fetch files
 * remotefilelog: tell runbgcommand to not block on child process startup
 * root: add support for -Tformatter option
 * sslutil: add support for SSLKEYLOGFILE to wrapsocket
 * sslutil: fsencode path returned by certifi (Bts:issue6132)
 * statecheck: added support for STATES
 * subrepos: make last line of prompts <40 english chars (Bts:issue6158)
 * tests: make the grep pattern in remotefilelog-gcrepack portable (Bts:issue6122)
 * tests: work around libressl being different about error strings (Bts:issue6122)
 * tracing: add support for emitting counters
 * worker: support parallelization of functions with return values
 * zsh: enable completion support for chg as well

=== Behavior Changes ===

 * graphmod: remove support for graph lines mixing parent/grandparent styles (BC)

=== Internal API Changes ===

 * commands: drop support for legacy ^cmd registration (API)
 * extensions: drop support for extsetup() without 'ui' argument (API)
 * log: pass getcopies() function instead of getrenamed() to displayer (API)
 * match: remove unused `match.__iter__` implementation (API)
 * match: use `''` instead of '.' for root directory (API)
 * templater: drop support for old style keywords (API)
 * util: make util.dirs() and util.finddirs() include root directory (API)


== Mercurial 5.0.2 ==

A regularly scheduled bugfix release.

=== commands ===
 * Help fixes on hg mv and hg cp

=== unsorted ===
 * debugrevlog: fix average size computation for empty data (Bts:issue6167)
 * Fix an obscure data corruption bug with musl libc (and presumably others). See [[https://www.mercurial-scm.org/repo/hg-committed/rev/97ada9b8d51b the fix]] for more details.


== Mercurial 5.0.1 ==

A regularly scheduled bugfix release.

=== commands ===
 * bookmark: also make bookmark cache depends of the changelog
 * commit: allow --interactive to work again when naming a directory (Bts:issue6131)

=== unsorted ===
 * manifest: avoid corruption by dropping removed files with pure (Bts:issue5801)
 * sslutil: fsencode path returned by certifi (Bts:issue6132)

== Mercurial 5.0 (2019-05-01) ==

An [[Release5.0|overview of new features]] available. This is a regularly-scheduled quarterly feature release.

== Mercurial 4.9.1 (2019-03-19) ==

A regularly scheduled bugfix release, late due to vacations and similar disruptions at the regular time.

=== commands ===
 * record: prevent commits that don't pick up dirty subrepo changes (Bts:issue6102)

=== extensions ===
 * rebase: add missing dashes in help text

=== unsorted ===
 * subrepo: avoid false unsafe path detection on Windows
 * test-https: add some more known failure messages of client certs (Bts:issue6030)


== Mercurial 4.9 (2019-02-01) ==

An [[Release4.9|overview of new features]] available. This is a regularly-scheduled quarterly feature release that also contains security fixes.

=== security ===

It was possible to use symlinks and subrepositories to defeat Mercurial's path-checking logic and write files outside a repository. This has been fixed. Users on older versions can either disable subrepositories with {{{[subrepos] allowed=false}}} in their configuration or by ensuring any cloned repositories don't contain malicious symlinks.

=== commands ===
 * archive: use manifest.matches() to simplify and speed up matching
 * branch: allow changing branch of merge commits with --rev
 * branches: add -r option to show branch name(s) of a given rev (Bts:issue5948)
 * graft: abort if --date/user specified with --currentdate/currentuser (BC)
 * graft: introduce --base option for using custom base revision while merging
 * help: add internals.extensions topic
 * help: show advanced, experimental and deprecated extensions with --verbose
 * log: fix line wrap on diffstat with -G/--graph (Bts:issue5800)
 * merge: make local file storage in the .hg/merge directory extensible
 * pull: fix inconsistent view of bookmarks during pull (Bts:issue4700)
 * push: add --publish flag to change phase of pushed changesets
 * push: config option to control behavior when pushing to a publishing server
 * resolve: fix mark-check when a file was deleted on one side (Bts:issue6020)
 * tags: cache 'repo.changelog' access when checking tags nodes
 * update: fix edge-case with update.atomic-file and read-only files

=== core ===
 * revlog: always enable generaldelta on version 2 revlogs
 * revlog: make sure we never use sparserevlog without general delta (Bts:issue6056)
 * revset: enforce "%d" to be interpreted as literal revision number (API) (BC)
 * revset: introduce an API that avoids 'formatspec' input serialization
 * revsets: make bookmark/named('re:nonexistent') not abort (Bts:issue6018) (BC)
 * templatekw: deprecate p1rev/p2rev/p1node/p2node in favor of p1/p2
 * templatekw: fix crash on multiple latesttags resolution at wdir (Bts:issue6055)
 * templater: check invalid use of list expression properly (Bts:issue5920)
 * transaction: display data about why the transaction failed to rollback
 * ui: add config knob to redirect status messages to stderr (API)
 * ui: remove unreachable branches and function calls from write() (Bts:issue6059)
 * vfs: also audit rename
 * wireproto: in batch queries, support queries with immediate responses

=== extensions ===
 * absorb: don't prompt to apply changes when there are none to apply
 * amend: add -D/--currentdate option
 * amend: add config option to update time to current in hg amend (Bts:issue5828)
 * blackbox: add configitem for format of log timestamps
 * bookflow: new extension for bookmark-based branching
 * convert: don't drop commits that are empty in the source when using --filemap
 * extensions: deprecate extsetup without a 'ui' argument (API)
 * extensions: import the exthelper class from evolve 980565468003 (API)
 * fix: add a config to abort when a fixer tool fails
 * fix: add extra field to fixed revisions to avoid creating obsolescence cycles
 * fix: add suboption for configuring execution order of tools
 * histedit: add rewrite.update-timestamp support to fold and mess
 * histedit: add warning message on editing tagged commits (Bts:issue4017)
 * histedit: drop unused constructor arguments (API)
 * histedit: fix --continue and --abort when curses is enabled
 * histedit: import chistedit curses UI from hg-experimental
 * lfs: improve the hints for common errors in the Batch API
 * logtoprocess: drop support for ui.log() call with invalid msg arguments (BC)
 * logtoprocess: leverage procutil.shellenviron() to stringify variables (BC)
 * narrow: don't resurrect old commits when narrowing (don't strip obsmarkers)
 * narrow: drop the bundle2 capability since we have server capabilities (BC)
 * phabricator: teach {phabreview} to work without --amend
 * phabricator: warn if unable to amend, instead of aborting after posting
 * remotefilelog: fix {file_copies} template keyword
 * remotefilelog: import pruned-down remotefilelog extension from hg-experimental
 * sparse: don't enable on clone if it was a narrow clone
 * strip: compute bookmark target only if we have bookmark to move

=== unsorted ===
 * changegroup: add a option to create bundle with full snapshot only
 * changegroup: allow to force delta to be against p1
 * commandserver: add IPC channel to teach repository path on command finished
 * commandserver: add config knob for various logging options
 * commandserver: add experimental option to use separate message channel
 * commandserver: send raw progress information to message channel
 * filecache: unimplement `__set__`() and `__delete__`() (API)
 * http: allow 'auth.prefix' to have a username consistent with the URI
 * match: support rooted globs in hgignore
 * merge-tools: when calling external merge tool, describe the resolve inputs
 * mergetools: adjust Beyond Compare config on Mac/Linux
 * obsutil: fix the Bts:issue5686
 * progress: deprecate ui.progress()
 * rust-cpython: binding for !AncestorsIterator
 * rust-cpython: binding for !LazyAncestors
 * rust-cpython: bindings for !MissingAncestors
 * sparse-revlog: disable sparse-revlog if config disable general-delta
 * sparse-revlog: enabled by default
 * storage: update sqlitestore to use the new 'deltamode' parameter
 * store: raise !ProgrammingError if unable to decode a storage path
 * subrepo: extend path auditing test to include more weird patterns (SEC)
 * subrepo: prohibit variable expansion on creation of hg subrepo (SEC)
 * subrepo: reject potentially unsafe subrepo paths (BC) (SEC)

=== Behavior Changes ===

 * graft: abort if --date/user specified with --currentdate/currentuser (BC)
 * logtoprocess: drop support for ui.log() call with invalid msg arguments (BC)
 * logtoprocess: leverage procutil.shellenviron() to stringify variables (BC)
 * narrow: drop the bundle2 capability since we have server capabilities (BC)
 * revset: enforce "%d" to be interpreted as literal revision number (API) (BC)
 * revsets: make bookmark/named('re:nonexistent') not abort (Bts:issue6018) (BC)
 * subrepo: reject potentially unsafe subrepo paths (BC) (SEC)

=== Internal API Changes ===

 * extensions: deprecate extsetup without a 'ui' argument (API)
 * extensions: import the exthelper class from evolve 980565468003 (API)
 * filecache: unimplement `__set__`() and `__delete__`() (API)
 * histedit: drop unused constructor arguments (API)
 * revset: enforce "%d" to be interpreted as literal revision number (API) (BC)
 * ui: add config knob to redirect status messages to stderr (API)


== Mercurial 4.8.2 (2019-01-07) ==

This is a regularly-scheduled bugfix release containing following fixes:

=== commands ===
 * update: do not pass in user revspec as default destination (Bts:issue6044)

=== core ===
 * match: fix assertion for fileset with no context (Bts:issue6046)
 * revlog: catch delta base value under -1
 * revlog: catch revlog corruption in index_baserev
 * server: always close http socket if responding with an error (Bts:issue6033)
 * vfs: ensure closewrapbase fh doesn't escape by entering context manager

=== extensions ===
 * phabricator: properly encode boolean types in the request body

=== unsorted ===
 * windows: ensure mixedfilemodewrapper fd doesn't escape by entering context mgr
 * worker: do not swallow exception occurred in main process


== Mercurial 4.8.1 (2018-12-04) ==

A regularly scheduled bugfix release. Some security fixes are included, but all are expected to be low-risk.

=== commands ===
 * commandserver: get around ETIMEDOUT raised by selectors2
 * graft: do not try to skip rev derived from ancestor more than once (Bts:issue6024)
 * verify: provide unit to ui.makeprogress()

=== core ===
 * revlog: fix out-of-bounds access by negative parents read from revlog (SEC)

=== extensions ===
 * rebase: abort in-mem rebase if there's a dirty merge state
 * rebase: fix dir/file conflict detection when using in-mem merge
 * rebase: fix path auditing to audit path relative to repo root (Bts:issue5818)
 * rebase: preserve working copy when redoing in-mem rebase on disk

=== unsorted ===
 * tests: stabilize test-inherit-mode.t on FreeBSD and macOS (Bts:issue6026)


== Mercurial 4.8 (2018-11-02) ==

An [[Release4.8|overview of new features]] available. This is a regularly-scheduled quarterly feature release.

=== commands ===
 * add: add a label for messages about added files
 * addremove: add labels for messages about added and removed files
 * annotate: pass in wdir rev and node to formatter (BC)
 * annotate: rename {line_number} to {lineno} (BC)
 * bookmarks: add explicit option to list bookmarks of the given names
 * bookmarks: pass in formatter to printbookmarks() instead of opts (API)
 * clone: allow local cloning to create more than one level of directories
 * debugcommands: introduce debugrevlogindex (BC)
 * debugcommands: use openstorage() in debugdata (BC)
 * grep: add MULTIREV support to --allfiles flag
 * grep: rename {line_number} to {lineno} as well (BC)
 * grep: search all commits in allfiles mode
 * help: adding a proper declaration for shortlist/basic commands (API)
 * help: adding support for command categories
 * identify: change {parents} to a list of nodes (BC)
 * identify: show remote bookmarks in 'hg id url -Tjson -B'
 * log: have changesetformatter fill in wdir() rev and node (BC)
 * log: respect graphshorten on terminal nodes (collapsing o-~ to just o~)
 * merge: improve interactive one-changed one-deleted message (Bts:issue5550)
 * phase: explicitly exclude secret phase and above
 * phase: expose a '_phase(idx)' revset
 * phase: handle phase with no command flag
 * phase: report number of non-public changeset alongside the new range
 * push: add "remote" to 'repository changed while pushing' messages (Bts:issue5971)
 * remove: add a label for messages about removed files
 * rename: return error status if any rename/copy failed
 * resolve: add a flag for the default behavior of re-merging
 * resolve: add config to make hg resolve not re-merge by default
 * resolve: add confirm config option
 * resolve: add option to warn/abort on -m with unresolved conflict markers
 * resolve: graduate resolve.mark-check from experimental, add docs
 * resolve: rename {status} to {mergestatus} to not shadow change status (BC)
 * status: advertise --abort instead of 'update -C .' to abort a merge
 * status: advertise --abort instead of 'update -C .' to abort graft
 * status: remove "morestatus" message from formatter data (BC)
 * status: rename {copy} to {source} for compatibility with {file_copies} (BC)
 * verify: make output less confusing (Bts:issue5924)

=== core ===
 * context: drop compatibility for 'context.descendant' (API)
 * context: move logic from `changectx.__init__` to `localrepo.__getitem__` (API)
 * context: remove unused overlayfilectx (API)
 * dispatch: don't show list of commands on bogus command
 * dispatch: making all hg abortions be output with a specific label
 * dispatch: show a short error message when invalid global option given
 * exchange: support declaring pull depth
 * exchange: support defining narrow file patterns for pull
 * filelog: add a hasnode() method (API)
 * filelog: drop _generaldelta attribute (API)
 * filelog: drop index attribute (API)
 * filelog: remove checkhash() (API)
 * filelog: remove revdiff() (API)
 * filelog: remove version attribute (API)
 * filelog: stop proxying "opener" (API)
 * filelog: stop proxying _addrevision() (API)
 * filelog: stop proxying checksize() (API)
 * filelog: stop proxying compress() (API)
 * filelog: stop proxying datafile (API)
 * filelog: stop proxying deltaparent() (API)
 * filelog: stop proxying flags() (API)
 * filelog: stop proxying headrevs() (API)
 * filelog: stop proxying rawsize() (API)
 * filelog: stop proxying start(), end(), and length() (API)
 * localrepo: add repository feature when repo can be stream cloned
 * localrepo: add requirement when narrow files creation option present
 * localrepo: automatically load lfs extension when required (BC)
 * localrepo: define "features" on repository instances (API)
 * localrepo: define storage backend in creation options (API)
 * localrepo: move repo creation logic out of `localrepository.__init__` (API)
 * localrepo: pass ui to newreporequirements() (API)
 * localrepo: support marking repos as having shallow file storage
 * localrepo: support writing shared file (API)
 * pager: do not enable when TERM=dumb
 * repository: establish API for emitting revision deltas
 * revlog: add method for obtaining storage info (API)
 * revlog: drop !LookupError alias (API)
 * revlog: drop !RevlogError alias (API)
 * revlog: drop compatibility for 'revlog.descendant' (API)
 * revlog: drop emitrevisiondeltas() and associated functionality (API)
 * revlog: drop some more error aliases (API)
 * revlog: new API to emit revision data
 * revlog: reuse cached delta for identical base revision (Bts:issue5975)
 * revset: expand bookmark(.) to the active bookmark
 * revsetlang: fix position of '-' in spaceless 'a-b' expressions
 * streamclone: don't support stream clone unless repo feature present
 * streamclone: include obsstore file into stream bundle if client can read it
 * templatefuncs: add truncate parameter to pad
 * templatekw: add experimental {status} keyword
 * templatekw: deprecate old-style template keyword function (API)
 * templates: rename "user" to "luser" defined in default map file (API)
 * tracing: new module to make tracing events in hg easier
 * tracing: trace command function execution
 * transaction: make entries a private attribute (API)
 * transaction: remember original len(repo) instead of tracking added revs (API)
 * util: make timedcm require the label (API)
 * wireprotov2: add bookmarks to "changesetdata" command
 * wireprotov2: add phases to "changesetdata" command
 * wireprotov2: client support for advertising redirect targets
 * wireprotov2: client support for following content redirects
 * wireprotov2: define and implement "changesetdata" command
 * wireprotov2: define and implement "filedata" command
 * wireprotov2: define and implement "filesdata" command
 * wireprotov2: define and implement "manifestdata" command
 * wireprotov2: server support for sending content redirects
 * wireprotov2: support response caching

=== extensions ===
 * absorb: import extension from Facebook's hg-experimental
 * absorb: print '{rev}:' as a prefix to the hash
 * absorb: print summary of changesets affected
 * absorb: prompt user to accept absorb changes by default
 * amend: support "history-editing-backup" config option
 * closehead: fix close-head -r listification
 * commitextras: work nicely with other extensions
 * convert: fix a file descriptor leak
 * extension: add a summary of total loading time per extension
 * extensions: add detailed loading information
 * extensions: new closehead module for closing arbitrary heads
 * fastannotate: initial import from Facebook's hg-experimental
 * fastannotate: make the default value for 'fastannotate.useflock' dynamic
 * fix: add a monkey-patchable point after all new revisions have been committed
 * fix: compute changed lines lazily to make whole-file fixer tools faster
 * fix: determine fixer tool failure by exit code instead of stderr
 * fix: pull out flag definitions to make them re-usable from extensions
 * fsmonitor: use vfs instead of opener (Bts:issue5938)
 * journal: do not pass in repolookuperror string to template (BC)
 * journal: unify template name for "nodes" (BC)
 * largefiles: automatically load largefiles extension when required (BC)
 * lfs: add repository feature denoting the use of LFS
 * lfs: autoload the extension when cloning from repo with lfs enabled
 * lfs: consult the narrow matcher when extracting pointers from ctx (Bts:issue5794)
 * lfs: don't add extension to hgrc after clone or share (BC)
 * lfs: don't add extension to hgrc after conversion (BC)
 * logtoprocess: connect all fds to /dev/null to avoid bad interaction with pager
 * logtoprocess: define $HG for children processes
 * narrow: add '--import-rules' flag to tracked command
 * narrow: add a --narrowspec flag to clone command
 * narrow: add narrow and ellipses as server capabilities
 * narrow: add server logic to send cg while widening without ellipsis
 * narrow: check for servers' narrow support before doing anything (BC)
 * narrow: drop support for remote expansion (BC)
 * narrow: introduce a config option to check if narrow is enabled or not
 * narrow: move .hg/narrowspec to .hg/store/narrowspec (BC)
 * narrow: move support for 'hg verify' into core
 * narrow: the first version of narrow_widen wireprotocol command
 * narrow: validate spec files are well-formed during clone (BC)
 * patchbomb: allow using HGHOSTNAME to force a hostname
 * phabricator: drop support for the legacy phabricator.auth.token config (BC)
 * phabricator: mark extension as experimental for now
 * rebase: add --stop option to stop rebase at any point (Bts:issue5206)
 * rebase: don't try to prune obsolete changeset already in the destination
 * rebase: explicitly track collapses as fold
 * rebase: skip extinct revisions even if it has no successor in rebase set
 * rebase: support "history-editing-backup" config option
 * remotenames: add names argument to remotenames revset
 * share: allow more than one level of directories to be created
 * shelve: add an "internal" extra
 * shelve: fix crash on unshelve without .shelve metadata file
 * shelve: use the internal phase when possible
 * sqlitestore: file storage backend using SQLite
 * strip: ignore orphaned internal changesets while computing safe strip roots

=== hgweb ===
 * hgweb: add error template to json so it won't crash
 * hgweb: map Abort to 403 error to report inaccessible path for example
 * hgweb: show shortlog by default in json output (Bts:issue5978)
 * hgweb: use scmutil.binnode() to translate None to wdir hash (Bts:issue5988)

=== chg ===
 * chgserver: add "setumask2" command which uses correct message frame
 * chgserver: restore pager fds attached within runcommand session
 * rust-chg: add Client extensions to run cHg-specific requests
 * rust-chg: add callback to handle pager and shell command requests

=== unsorted ===
 * ancestors: actually iterate over ancestors in topological order (Bts:issue5979)
 * bundle2: graduate bundle2.stream option from experimental to server section
 * changegroup: pass sorted revisions into group() (API)
 * changegroup: port to emitrevisions() (Bts:issue5976)
 * changegroup: remove reordering control (BC)
 * changegroup: restore default node ordering (Bts:issue6001)
 * cleanupnodes: drop special casing around prune markers (API)
 * commands: restore compatibility for "^cmd" registration (Bts:issue6005)
 * copies: improve logic of deciding copytracing on based of config options
 * crecord: make nextsametype() check that parent item exists (Bts:issue6009)
 * crecord: make enter move cursor down to the next item of the same type
 * delta: skip "empty delta" optimisation for non-general case (Bts:issue6006)
 * error: introduce !StorageError
 * filemerge: add config knob to check capabilities of internal merge tools
 * filemerge: show warning if chosen tool has no binary files capability
 * fileset: extract language processing part to new module (API)
 * fileset: optimize 'x and not y' to 'x - y'
 * fileset: roughly adjust weights of functions
 * formatter: remove experimental marker from -T option
 * formatter: rename {abspath}/{file} to {path}, and drop relative {path} (BC)
 * global: replace most uses of !RevlogError with !StorageError (API)
 * hg: allow extra arguments to be passed to repo creation (API)
 * httppeer: expose capabilities for each command
 * index: drop support for negative indexes into the index
 * index: handle index[-1] as nullid more explicitly
 * linelog: fix infinite loop vulnerability
 * lookup: add option to disambiguate prefix within revset
 * mail: always fall back to iso-8859-1 if us-ascii won't work (BC)
 * mail: modernize check for Python-with-TLS
 * manifest: add rawsize() proxy (API)
 * meld: enable auto-merge
 * mergetool: warn if ui.merge points to nonexistent tool
 * narrowspec: limit patterns to path: and rootfilesin: (BC)
 * narrowspec: use sparse.parseconfig() to parse narrowspec file (BC)
 * obsolete: fix !ValueError when stored note contains ':' char (Bts:issue5783)
 * overlayworkingctx: fix exception in metadata-only inmemory merges (Bts:issue5960)
 * phase: add an archived phase
 * phases: add an internal phases
 * pullreport: issue a message about "extinct" pulled changesets
 * py3: rename pycompat.getcwd() to encoding.getcwd() (API)
 * revisions: allow "x123" to refer to nodeid prefix "123"
 * scmutil: accept multiple predecessors in 'replacements' (API)
 * shortest: never emit 0-length prefix even if unique
 * shortest: use 'x' prefix to disambiguate from revnum if configured
 * sparse-revlog: only refine delta candidates in the sparse case (Bts:issue6006)
 * statprof: fix indent level of fp.write() (Bts:issue6004)
 * statprof: update the name as the i increases (Bts:issue6003)
 * storageutil: consistently raise !LookupError (API)
 * storageutil: implement file identifier resolution method (BC)
 * storageutil: move metadata parsing and packing from revlog (API)
 * storageutil: new module for storage primitives (API)
 * url: allow to configure timeout on http connection

=== Behavior Changes ===

 * annotate: pass in wdir rev and node to formatter (BC)
 * annotate: rename {line_number} to {lineno} (BC)
 * changegroup: remove reordering control (BC)
 * debugcommands: introduce debugrevlogindex (BC)
 * debugcommands: use openstorage() in debugdata (BC)
 * formatter: rename {abspath}/{file} to {path}, and drop relative {path} (BC)
 * grep: rename {line_number} to {lineno} as well (BC)
 * identify: change {parents} to a list of nodes (BC)
 * journal: do not pass in repolookuperror string to template (BC)
 * journal: unify template name for "nodes" (BC)
 * largefiles: automatically load largefiles extension when required (BC)
 * lfs: don't add extension to hgrc after clone or share (BC)
 * lfs: don't add extension to hgrc after conversion (BC)
 * localrepo: automatically load lfs extension when required (BC)
 * log: have changesetformatter fill in wdir() rev and node (BC)
 * mail: always fall back to iso-8859-1 if us-ascii won't work (BC)
 * narrow: check for servers' narrow support before doing anything (BC)
 * narrow: drop support for remote expansion (BC)
 * narrow: move .hg/narrowspec to .hg/store/narrowspec (BC)
 * narrow: validate spec files are well-formed during clone (BC)
 * narrowspec: limit patterns to path: and rootfilesin: (BC)
 * narrowspec: use sparse.parseconfig() to parse narrowspec file (BC)
 * phabricator: drop support for the legacy phabricator.auth.token config (BC)
 * resolve: rename {status} to {mergestatus} to not shadow change status (BC)
 * status: remove "morestatus" message from formatter data (BC)
 * status: rename {copy} to {source} for compatibility with {file_copies} (BC)
 * storageutil: implement file identifier resolution method (BC)

=== Internal API Changes ===

 * bookmarks: pass in formatter to printbookmarks() instead of opts (API)
 * changegroup: pass sorted revisions into group() (API)
 * cleanupnodes: drop special casing around prune markers (API)
 * context: drop compatibility for 'context.descendant' (API)
 * context: move logic from `changectx.__init__` to `localrepo.__getitem__` (API)
 * context: remove unused overlayfilectx (API)
 * filelog: add a hasnode() method (API)
 * filelog: drop _generaldelta attribute (API)
 * filelog: drop index attribute (API)
 * filelog: remove checkhash() (API)
 * filelog: remove revdiff() (API)
 * filelog: remove version attribute (API)
 * filelog: stop proxying "opener" (API)
 * filelog: stop proxying _addrevision() (API)
 * filelog: stop proxying checksize() (API)
 * filelog: stop proxying compress() (API)
 * filelog: stop proxying datafile (API)
 * filelog: stop proxying deltaparent() (API)
 * filelog: stop proxying flags() (API)
 * filelog: stop proxying headrevs() (API)
 * filelog: stop proxying rawsize() (API)
 * filelog: stop proxying start(), end(), and length() (API)
 * fileset: extract language processing part to new module (API)
 * global: replace most uses of !RevlogError with !StorageError (API)
 * help: adding a proper declaration for shortlist/basic commands (API)
 * hg: allow extra arguments to be passed to repo creation (API)
 * localrepo: define "features" on repository instances (API)
 * localrepo: define storage backend in creation options (API)
 * localrepo: move repo creation logic out of `localrepository.__init__` (API)
 * localrepo: pass ui to newreporequirements() (API)
 * localrepo: support writing shared file (API)
 * manifest: add rawsize() proxy (API)
 * py3: rename pycompat.getcwd() to encoding.getcwd() (API)
 * revlog: add method for obtaining storage info (API)
 * revlog: drop !LookupError alias (API)
 * revlog: drop !RevlogError alias (API)
 * revlog: drop compatibility for 'revlog.descendant' (API)
 * revlog: drop emitrevisiondeltas() and associated functionality (API)
 * revlog: drop some more error aliases (API)
 * scmutil: accept multiple predecessors in 'replacements' (API)
 * storageutil: consistently raise !LookupError (API)
 * storageutil: move metadata parsing and packing from revlog (API)
 * storageutil: new module for storage primitives (API)
 * templatekw: deprecate old-style template keyword function (API)
 * templates: rename "user" to "luser" defined in default map file (API)
 * transaction: make entries a private attribute (API)
 * transaction: remember original len(repo) instead of tracking added revs (API)
 * util: make timedcm require the label (API)

== Mercurial 4.7.2 (2018-10-01) ==
This is a regularly-scheduled bugfix release containing following fixes:

=== security ===

Fix a potential out-of-bounds read in manifest parsing C code.

=== core ===
 * various minor correctness fixes in revsets for commonancestors() and similar

=== unsorted ===
 * chgserver: do not send system() back to client if stdio redirected (Bts:issue5992)
 * procutil: compare fd number to see if stdio protection is needed (Bts:issue5992)

== Mercurial 4.7.1 (2018-09-04) ==

This is a regularly-scheduled bugfix release containing following fixes:

=== commands ===
 * merge: do not delete untracked files silently (Bts:issue5962)

=== core ===
 * revlog: fix descendant deprecated method

=== hgweb ===
 * hgweb: load revcount + 1 entries to fill nextentry in log page (Bts:issue5972)

=== performance ===
 * remotephase: avoid full changelog iteration (Bts:issue5964)
 * remotephase: fast path newheads computation in simple case (Bts:issue5964)
 * scmutil: avoid quadratic membership testing (Bts:issue5969)
 * sparse-revlog: fix delta validity computation

== Mercurial 4.7 (2018-08-01) ==

This is a regularly-scheduled quarterly feature release and has its own release notes page which can be found here [[Release4.7|Full release notes]].

Release Notes

Features and bugfixes in our latest releases. Please see the Download page for links to source and binaries.

Note that Mercurial follows a time-based release plan with major releases every three months and minor (bugfix) releases on the first of every month (see TimeBasedReleasePlan).

{i} Be sure to read the upgrade notes when upgrading.

(See the archive for older versions)

1. Mercurial 6.9rc0 (2024-10-28)

Regularly scheduled major release. An overview of new features is available.

2. Mercurial 6.8 (2024-07-08) to 6.8.2 (2024-10-28)

Regularly scheduled major release. An overview of new features is available.

3. Mercurial 6.7 (2024-03-15) to 6.7.4 (2024-06-12)

/!\ 6.7.1, 6.7.2 and 6.7.3 are affected with a data loss critcal bug.

Regularly scheduled major release. An overview of new features is available.

4. Mercurial 6.6 (2023-11-21) to 6.6.3 (2024-02-12)

Regularly scheduled major release. An overview of new features is available.

5. Mercurial 6.5 (2023-07-06) to 6.5.3 (2023-10-06)

Regularly scheduled major release. An overview of new features is available.

6. Mercurial 6.4 (2023-03-24) to 6.4.5 (2023-06-22)

Regularly scheduled (but very late) major release. An overview of new features is available.

7. Mercurial 6.3 (2022-11-14) to 6.3.3 (2023-03-02)

Regularly scheduled major release (delayed for a number of factors). An overview of new features available.

6.3.1 is an extra release following some upstream Python 3.11 breakage of how regex flags work.

8. Mercurial 6.2 (2022-07-11) to 6.2.3 (2022-10-04)

Regularly scheduled major release. An overview of new features available. This is the first Python 3 only version.

9. Mercurial 6.1 (2022-03-01) to 6.1.4 (2022-06-16)

Regularly scheduled major release. An overview of new features available. This is the last version to support Python 2.

10. Mercurial 6.0 (2021-11-23) to 6.0.3 (2022-02-18)

Regularly scheduled feature release. An overview of new features available. This is a regularly-scheduled quarterly feature release. It was delayed from the usual calendar due to the ongoing effort to make Windows support more robust, especially on Python 3.

11. Mercurial 5.9 to 5.9.3 (2021-08-20)

Regularly scheduled feature release. An overview of new features available. This is a regularly-scheduled quarterly feature release.

12. Mercurial 5.8 (2021-05-03)

Regularly scheduled feature release. An overview of new features available. This is a regularly-scheduled quarterly feature release.

13. Mercurial 5.7.1 (2021-03-08)

Regularly scheduled bug fix release.

13.1. commands

  • log: fix handling of root (or empty) path provided by matcher (issue6478)

  • patch: fix a formatting issue
  • patch: make diff --git to differentiate b/w file is empty or doesn't exists

13.2. core

  • hooks: introduce a ':run-with-plain' option for hooks

13.3. extensions

  • largefiles: properly pass kwargs into url.open

13.4. unsorted

  • procutil: extend gui test to detect wayland session (issue6479)

  • rust-status: honor matcher when using the dirstate-only fast-path (issue6483)

  • tests: add a test to demonstrate a bug in 'hg diff --git' (issue6486)

14. Mercurial 5.7 (2021-01-29)

Regularly scheduled feature release. An overview of new features available. This is a regularly-scheduled quarterly feature release.

15. Mercurial 5.6.1 (2020-12-03)

Regularly scheduled bug fix release.

15.1. extensions

  • rebase: clear merge state when aborting in-memory merge on dirty working copy

15.2. unsorted

  • crecord: render chunkpad on Windows (issue6427)

  • diff: do not concatenate immutable bytes while building a/b bodies (issue6445)

16. Mercurial 5.6 (2020-11-02)

Regularly scheduled feature release. An overview of new features available. This is a regularly-scheduled quarterly feature release.

17. Mercurial 5.5.2 (2020-10-02)

Regularly scheduled bug fix release.

17.1. commands

  • log: fix crash and bad filematcher lookup by -fr'wdir()' PATH

17.2. unsorted

  • hgdemandimport: bypass demandimport for _ast module (issue6407)

  • hgdemandimport: exclude more sqlalchemy modules
  • strip: with --keep, consider all revs "removed" from the wcp (issue6270)

18. Mercurial 5.5.1 (2020-09-01)

Regularly scheduled bug fix release.

18.1. bug fixes

  • keepalive: Do not append _rbuf if _raw_readinto exists (issue6356)

19. Mercurial 5.5 (2020-08-03)

Regularly scheduled feature release. An overview of new features available. This is a regularly-scheduled quarterly feature release.

20. Mercurial 5.4.2 (2020-07-01)

Regularly scheduled bug fix release.

20.1. extensions

  • rebase: avoid clobbering wdir() with --dry-run or --confirm (issue6291)

20.2. unsorted

  • curses: do not initialize LC_ALL to user settings (issue6358)

21. Mercurial 5.4.1 (2020-06-15)

Regularly scheduled bug fix release.

21.1. commands

  • graft-state: save --base in graft's state, fixing bug with graft --continue
  • graft: fix --base value to be saved in state file

21.2. core

  • dirstate: make sure the dirstate is loaded before the changelog (issue6303)

21.3. unsorted

  • bash_completion: do not use aliased hg if it sources a script (issue6308)

  • demandimport: fix compatibility with meta path finders w/o find_spec() method
  • flags: read flag from dirstate/disk for workingcopyctx (issue5743)

  • fsmonitor: coerce 'clock' variable to byte-string (issue6321)

  • url: fix a bytes vs str crash in processing proxy headers (issue6249)

22. Mercurial 5.4 (2020-05-01)

Regularly scheduled feature release. An overview of new features available. This is a regularly-scheduled quarterly feature release.

23. Mercurial 5.3.2 (2020-04-02)

Regularly scheduled bug fix release.

23.1. unsorted

  • discovery: avoid wrong detection of multiple branch heads (issue6256)

  • gzip: use the stdlib version with python 3 (issue6284)

24. Mercurial 5.3.1 (2020-03-04)

Regularly scheduled bug fix release.

24.1. commands

  • branch: make --force work even when specifying revs
  • import: don't ignore '--secret' when '--bypass' is specified

24.2. extensions

  • shelve: fix ordering of merge labels

24.3. unsorted

  • phabricator: fix a phabsend crash when processing a renamed binary
  • remotefilelog-test: glob some flaky output line (issue6083)

  • remotefilelog: add 'changelog' arg to shallowcg1packer.generate (issue6269)

25. Mercurial 5.3 (2020-02-03)

Regularly scheduled feature release. An overview of new features available. This is a regularly-scheduled quarterly feature release.

26. Mercurial 5.2 (2019-11-05)

Regularly scheduled feature release. An overview of new features available. This is a regularly-scheduled quarterly feature release.

26.1. Backwards Compatibility Changes

* The infinitepush extension is believed to be unused, and will be deleted at

* 'hg grep' now searches working copy file contents by default. We recognize

  • this is a significant change from past behavior, but surveys of large bodies of users indicated nobody used (and almost nobody understood) the previous no-flags behavior of 'hg grep'. The new behavior aligns with the behavior most users expected (including hg's maintainers), which also happens to be the behavior of 'git grep'. Given that the old behavior was confusing to the point of being unusable, we were comfortable changing this behavior.

26.2. API Changes

* 'mercurial.hg.update*' and 'mercurial.merge.update' now expect a value from

  • a set of NAMED_CONSTANTS ('merge.UPDATECHECK_*' constants) rather than a collection of magic strings. As of now, the values are the same, but code should be prepared for these values to change in the future.

* 'mercurial.hg.updatetotally' is now more thorough about checking its

  • 'updatecheck' keyword argument. Previously invalid values would have used

    the configured default updatecheck method, but now will raise ValueError.

* 'mercurial.bookmarks.bmstore' no longer has a convenience method for looking

  • up changectx instances from a bookmark name. Use 'repo[repo.bookmarks[name]]' intead of 'repo.bookmarks.changectx(name)'.

26.3. commands

  • amend: add option to update to the current user
  • amend: enable support for closing the branch
  • amend: enable support for using the secret phase
  • bookmarks: actual fix for race condition deleting bookmark
  • bookmarks: remove changectx() method from bmstore (API)
  • branchmap: explicitly warm+write all subsets of the branchmap caches
  • import: add debug messages when parsing data from patch header
  • import: read X-Mercurial-Node email header to determine nodeid
  • log: populate keywords if specified in custom -Tjson(...) or -Tcbor(...)
  • merge: replace magic strings with NAMED_CONSTANTS (API)
  • push: support config option to require revs be specified when running push

26.4. core

  • exchange: abort on pushing bookmarks pointing to secret changesets (issue6159)

  • exchange: avoid unnecessary conversion of bookmark nodes to hex (API)
  • revlog: add a 'sidedata' parameters to addrevision
  • revlog: add a way to control sidedata changes during revlog.clone
  • revlog: add the appropriate flag is sidedata are passed to 'addrevision'
  • revlog: assign rawtext earlier in '_revisiondata'
  • revlog: avoid caching raw text too early in _revisiondata
  • revlog: deprecate the use of 'revision(..., raw=True)'
  • revlog: drop silly 'raw' parameter to 'rawdata' function
  • revlog: explicitly set revlogv0 in vfs options
  • revlog: introduce a 'sidedata' method
  • revlog: move 'nullid' early return sooner in '_revisiondata'
  • revlog: return sidedata map from '_revisiondata'
  • revlog: stop calling 'basetext' 'rawtext' in _revisiondata
  • revlog: stop using '_processflags' directly
  • revlog: use the new sidedata map return in the sidedata method
  • templatefuncs: account for user's diffopts in diff() (BC)
  • ui: option to preserve the progress bar

26.5. extensions

  • eol: don't fallback to use .hgeol from tip (BC)
  • largefiles: use context manager for setting "lfstatus" on subrepos too
  • rebase: track new nodes when --keep is set
  • unshelve: abort on using --keep and --interactive together
  • unshelve: add abort on using continue and interactive together
  • unshelve: changes how date is set on interactive mode
  • unshelve: create a matcher only if required on creating unshelve ctx
  • unshelve: delete shelvedstate after a successful unshelve --continue
  • unshelve: forget unknown files after a partial unshelve
  • unshelve: handle stripping changesets on interactive mode
  • unshelve: store information about interactive mode in shelvedstate
  • unshelve: unify logic around creating an unshelve changeset

26.6. unsorted

  • automation: add a command to submit to a Try server
  • automation: support and use Debian Buster by default
  • changelog: make copies related function return None or a valid value
  • continue: added support for transplant
  • copies: remove existing copy info from the changeset on amend (BC)
  • demandimport: explicitly declare '_session' at the module level
  • discovery: replace "heads" by "changesets" in a output note (BC)
  • fastannotate: remove support for flock() locking
  • fix: warn when a fixer doesn't have a configured command
  • flagprocessors: deprecate _processflags
  • flagprocessors: have the read transform function return side data (API)
  • flagprocessors: writetransform function take side data as parameter (API)
  • flagutil: move REVIDX_KNOWN_FLAGS source of truth in flagutil (API)
  • flagutil: move addflagprocessor to the new module (API)
  • flagutil: move insertflagprocessor to the new module (API)
  • format: format commands.py, which recently regressed
  • grep: enable all-files by default (BC)
  • hg: have 'updatetotally' more thoroughly check updatecheck argument (API)
  • infinitepush: mark extension as likely to be deleted
  • narrow: don't hexify paths and double-hexify known nodes on wire (BC)
  • narrow: drop server support for widening using the getbundle command (BC)
  • notify: add option for deterministic message-id generation
  • py3: prevent comparison with None in curses histedit (issue6196)

  • python-zstandard: apply big-endian fix (issue6188)

  • remotefilelog: reduce probability of race-condition in remotefilelog tests
  • rust-dirstate-status: add call to rust-fast path for 'dirstate.status'
  • rust-dirstate-status: rust-cpython bindings for 'dirstate.status'
  • rust-dirstate-status: use fast-path even with fsmonitor and sparse extensions
  • rust-discovery: optionally don't randomize at all, for tests
  • sidedata: introduce a new requirement to protect the feature
  • split: handle partial commit of renames when doing split or record (issue5723)

  • sshserver: flush stream after command dispatch
  • test: allow different result for zstd compression (issue6188)

  • transplant: added support for --stop flag
  • uncommit: add options to update to the current user or current date
  • uncommit: add support to modify the commit message and date
  • uncommit: drop the hyphen from --current-user and --current-date
  • uncommit: enable support for adding a note
  • uncommit: make -D/--date and -U/--user mutually exclusive

26.7. Behavior Changes

  • copies: remove existing copy info from the changeset on amend (BC)
  • discovery: replace "heads" by "changesets" in a output note (BC)
  • eol: don't fallback to use .hgeol from tip (BC)
  • grep: enable all-files by default (BC)
  • narrow: don't hexify paths and double-hexify known nodes on wire (BC)
  • narrow: drop server support for widening using the getbundle command (BC)
  • templatefuncs: account for user's diffopts in diff() (BC)

26.8. Internal API Changes

  • bookmarks: remove changectx() method from bmstore (API)
  • exchange: avoid unnecessary conversion of bookmark nodes to hex (API)
  • flagprocessors: have the read transform function return side data (API)
  • flagprocessors: writetransform function take side data as parameter (API)
  • flagutil: move REVIDX_KNOWN_FLAGS source of truth in flagutil (API)
  • flagutil: move addflagprocessor to the new module (API)
  • flagutil: move insertflagprocessor to the new module (API)
  • hg: have 'updatetotally' more thoroughly check updatecheck argument (API)
  • merge: replace magic strings with NAMED_CONSTANTS (API)

27. Mercurial 5.1.2 (2019-10-02)

Regularly scheduled bug fix release.

27.1. extensions

  • phabricator: don't abort if property writing fails during amending

27.2. tests

  • test: allow different result for zstd compression (issue6188)

28. Mercurial 5.1.1 (2019-09-05)

Regularly scheduled bug fix release.

28.1. commands

  • bookmarks: actual fix for race condition deleting bookmark

28.2. core

  • exchange: abort on pushing bookmarks pointing to secret changesets (issue6159)

  • python-zstandard: apply big-endian fix (issue6188)

  • fncache: make debugrebuildfncache not fail on broken fncache

28.3. tests

  • various test runner fixes
  • fixed use of tr --delete for tr(1) portability

29. Mercurial 5.1 (2019-08-01)

Regularly scheduled feature release. An overview of new features available. This is a regularly-scheduled quarterly feature release.

29.1. commands

  • bookmark: also make bookmark cache depends of the changelog
  • bookmarks: actual fix for race condition deleting bookmark
  • bookmarks: actually trigger the race deleting bookmark in the test
  • bookmarks: backout the attempt to fix the delete race
  • bookmarks: keep bookmarks in .hg/store if new config set
  • bookmarks: use context manager when writing files
  • bookmarks: use correct store for "ambiguity check"
  • branch: abort if closing branch from a non-branchhead cset
  • branchcache: store the maximum tip in a variable inside for loop
  • commands: drop support for legacy ^cmd registration (API)
  • commit: add --force-close-branch flag to close a non-head changeset
  • commit: add a check if it is trying to close an already closed branch head
  • commit: add ability to print file status after each successful invocation
  • commit: allow --interactive to work again when naming a directory (issue6131)

  • commit: improve the files field of changelog for merges
  • commit: make the error message more specific while aborting branch closing
  • commit: respect --no-edit in combination with --amend
  • graft: moved abortgraft and readgraft to cmdutil
  • help: check if a subtopic exists and raise an error if it doesn't (issue6145)

  • log: add config for making 'hg log -G' always topo-sorted
  • log: flag topo-sorted set as such
  • log: pass getcopies() function instead of getrenamed() to displayer (API)
  • merge: disallow merge abort in case of an unfinished operation (issue6160)

  • patch: use a short, fixed-size message for last line of prompt (issue6158)

  • push: added clear warning message when pushing closed branches(issue6080)

  • tags: avoid double-reversing a list
  • verify: also check full manifest validity during verify runs
  • verify: introduce a notion of "level"
  • verify: introduce an experimental --full flag

29.2. core

  • docs: man page and HTML help now order commands categorically, instead of alphabetically
  • minirst: support subsubsubsubsections (header level 5) with marker ''''

  • revlog: add the option to track the expected compression upper bound
  • revlog: speed up isancestor
  • templatekw: make {file_*} compare to both merge parents (issue4292)

  • templater: drop support for old style keywords (API)
  • util: make util.dirs() and util.finddirs() include root directory (API)

29.3. extensions

  • largefiles: make last line of prompts <40 english chars (issue6158)

  • mq: fix for merge detection methods
  • rebase: fix in-memory rebasing of copy of empty file
  • rebase: tweak description of inmemory working even w/ dirty working dir
  • shelve: modify help text on --interactive
  • unshelve: add interactive mode
  • unshelve: add space to help
  • unshelve: changed Corruptedstate error msg from ui.warn to error.Abort
  • unshelve: mark unshelve interactive as experimental

29.4. unsorted

  • abort: added support for graft
  • abort: added support for histedit
  • abort: added support for merge
  • abort: added support for rebase
  • abort: added support for unshelve
  • automation: initial support for running Linux tests
  • bisect: do not crash with rewritten commits
  • blackbox: disable extremely verbose logging (issue6110)

  • catapipe: add support for COUNTER events
  • changelog: define changelogrevision.p[12]copies for null revision
  • changelog: fix handling of empty copy entries in changeset
  • changelog: optionally store added and removed files in changeset extras
  • continue: added support for rebase
  • continue: added support for unshelve
  • copies: filter invalid copies only at end of pathcopies() (issue6163)

  • copies: follow copies across merge base without source file (issue6163)

  • debugrevlog: fix average size computation for empty data (issue6167)

  • drawdag: don't crash when writing copy info to changesets
  • extdata: avoid crashing inside subprocess when we get a revset parse error
  • extensions: drop support for extsetup() without 'ui' argument (API)
  • filemerge: make last line of prompts <40 english chars (issue6158)

  • graphmod: remove support for graph lines mixing parent/grandparent styles (BC)
  • manifest: avoid corruption by dropping removed files with pure (issue5801)

  • match: remove unused match.__iter__ implementation (API)

  • match: use '' instead of '.' for root directory (API)

  • procutil: allow callers of runbgcommand to assume the process starts
  • remotefilelog: check if RFL is enabled in getrenamedfn() override
  • remotefilelog: handle copies in changesets in getrenamedfn() override
  • remotefilelog: log when we're about to fetch files
  • remotefilelog: tell runbgcommand to not block on child process startup
  • root: add support for -Tformatter option
  • sslutil: add support for SSLKEYLOGFILE to wrapsocket
  • sslutil: fsencode path returned by certifi (issue6132)

  • statecheck: added support for STATES
  • subrepos: make last line of prompts <40 english chars (issue6158)

  • tests: make the grep pattern in remotefilelog-gcrepack portable (issue6122)

  • tests: work around libressl being different about error strings (issue6122)

  • tracing: add support for emitting counters
  • worker: support parallelization of functions with return values
  • zsh: enable completion support for chg as well

29.5. Behavior Changes

  • graphmod: remove support for graph lines mixing parent/grandparent styles (BC)

29.6. Internal API Changes

  • commands: drop support for legacy ^cmd registration (API)
  • extensions: drop support for extsetup() without 'ui' argument (API)
  • log: pass getcopies() function instead of getrenamed() to displayer (API)
  • match: remove unused match.__iter__ implementation (API)

  • match: use '' instead of '.' for root directory (API)

  • templater: drop support for old style keywords (API)
  • util: make util.dirs() and util.finddirs() include root directory (API)

30. Mercurial 5.0.2

A regularly scheduled bugfix release.

30.1. commands

  • Help fixes on hg mv and hg cp

30.2. unsorted

31. Mercurial 5.0.1

A regularly scheduled bugfix release.

31.1. commands

  • bookmark: also make bookmark cache depends of the changelog
  • commit: allow --interactive to work again when naming a directory (issue6131)

31.2. unsorted

  • manifest: avoid corruption by dropping removed files with pure (issue5801)

  • sslutil: fsencode path returned by certifi (issue6132)

32. Mercurial 5.0 (2019-05-01)

An overview of new features available. This is a regularly-scheduled quarterly feature release.

33. Mercurial 4.9.1 (2019-03-19)

A regularly scheduled bugfix release, late due to vacations and similar disruptions at the regular time.

33.1. commands

  • record: prevent commits that don't pick up dirty subrepo changes (issue6102)

33.2. extensions

  • rebase: add missing dashes in help text

33.3. unsorted

  • subrepo: avoid false unsafe path detection on Windows
  • test-https: add some more known failure messages of client certs (issue6030)

34. Mercurial 4.9 (2019-02-01)

An overview of new features available. This is a regularly-scheduled quarterly feature release that also contains security fixes.

34.1. security

It was possible to use symlinks and subrepositories to defeat Mercurial's path-checking logic and write files outside a repository. This has been fixed. Users on older versions can either disable subrepositories with [subrepos] allowed=false in their configuration or by ensuring any cloned repositories don't contain malicious symlinks.

34.2. commands

  • archive: use manifest.matches() to simplify and speed up matching
  • branch: allow changing branch of merge commits with --rev
  • branches: add -r option to show branch name(s) of a given rev (issue5948)

  • graft: abort if --date/user specified with --currentdate/currentuser (BC)
  • graft: introduce --base option for using custom base revision while merging
  • help: add internals.extensions topic
  • help: show advanced, experimental and deprecated extensions with --verbose
  • log: fix line wrap on diffstat with -G/--graph (issue5800)

  • merge: make local file storage in the .hg/merge directory extensible
  • pull: fix inconsistent view of bookmarks during pull (issue4700)

  • push: add --publish flag to change phase of pushed changesets
  • push: config option to control behavior when pushing to a publishing server
  • resolve: fix mark-check when a file was deleted on one side (issue6020)

  • tags: cache 'repo.changelog' access when checking tags nodes
  • update: fix edge-case with update.atomic-file and read-only files

34.3. core

  • revlog: always enable generaldelta on version 2 revlogs
  • revlog: make sure we never use sparserevlog without general delta (issue6056)

  • revset: enforce "%d" to be interpreted as literal revision number (API) (BC)
  • revset: introduce an API that avoids 'formatspec' input serialization
  • revsets: make bookmark/named('re:nonexistent') not abort (issue6018) (BC)

  • templatekw: deprecate p1rev/p2rev/p1node/p2node in favor of p1/p2
  • templatekw: fix crash on multiple latesttags resolution at wdir (issue6055)

  • templater: check invalid use of list expression properly (issue5920)

  • transaction: display data about why the transaction failed to rollback
  • ui: add config knob to redirect status messages to stderr (API)
  • ui: remove unreachable branches and function calls from write() (issue6059)

  • vfs: also audit rename
  • wireproto: in batch queries, support queries with immediate responses

34.4. extensions

  • absorb: don't prompt to apply changes when there are none to apply
  • amend: add -D/--currentdate option
  • amend: add config option to update time to current in hg amend (issue5828)

  • blackbox: add configitem for format of log timestamps
  • bookflow: new extension for bookmark-based branching
  • convert: don't drop commits that are empty in the source when using --filemap
  • extensions: deprecate extsetup without a 'ui' argument (API)
  • extensions: import the exthelper class from evolve 980565468003 (API)
  • fix: add a config to abort when a fixer tool fails
  • fix: add extra field to fixed revisions to avoid creating obsolescence cycles
  • fix: add suboption for configuring execution order of tools
  • histedit: add rewrite.update-timestamp support to fold and mess
  • histedit: add warning message on editing tagged commits (issue4017)

  • histedit: drop unused constructor arguments (API)
  • histedit: fix --continue and --abort when curses is enabled
  • histedit: import chistedit curses UI from hg-experimental
  • lfs: improve the hints for common errors in the Batch API
  • logtoprocess: drop support for ui.log() call with invalid msg arguments (BC)
  • logtoprocess: leverage procutil.shellenviron() to stringify variables (BC)
  • narrow: don't resurrect old commits when narrowing (don't strip obsmarkers)
  • narrow: drop the bundle2 capability since we have server capabilities (BC)
  • phabricator: teach {phabreview} to work without --amend
  • phabricator: warn if unable to amend, instead of aborting after posting
  • remotefilelog: fix {file_copies} template keyword
  • remotefilelog: import pruned-down remotefilelog extension from hg-experimental
  • sparse: don't enable on clone if it was a narrow clone
  • strip: compute bookmark target only if we have bookmark to move

34.5. unsorted

  • changegroup: add a option to create bundle with full snapshot only
  • changegroup: allow to force delta to be against p1
  • commandserver: add IPC channel to teach repository path on command finished
  • commandserver: add config knob for various logging options
  • commandserver: add experimental option to use separate message channel
  • commandserver: send raw progress information to message channel
  • filecache: unimplement __set__() and __delete__() (API)

  • http: allow 'auth.prefix' to have a username consistent with the URI
  • match: support rooted globs in hgignore
  • merge-tools: when calling external merge tool, describe the resolve inputs
  • mergetools: adjust Beyond Compare config on Mac/Linux
  • obsutil: fix the issue5686

  • progress: deprecate ui.progress()
  • rust-cpython: binding for AncestorsIterator

  • rust-cpython: binding for LazyAncestors

  • rust-cpython: bindings for MissingAncestors

  • sparse-revlog: disable sparse-revlog if config disable general-delta
  • sparse-revlog: enabled by default
  • storage: update sqlitestore to use the new 'deltamode' parameter
  • store: raise ProgrammingError if unable to decode a storage path

  • subrepo: extend path auditing test to include more weird patterns (SEC)
  • subrepo: prohibit variable expansion on creation of hg subrepo (SEC)
  • subrepo: reject potentially unsafe subrepo paths (BC) (SEC)

34.6. Behavior Changes

  • graft: abort if --date/user specified with --currentdate/currentuser (BC)
  • logtoprocess: drop support for ui.log() call with invalid msg arguments (BC)
  • logtoprocess: leverage procutil.shellenviron() to stringify variables (BC)
  • narrow: drop the bundle2 capability since we have server capabilities (BC)
  • revset: enforce "%d" to be interpreted as literal revision number (API) (BC)
  • revsets: make bookmark/named('re:nonexistent') not abort (issue6018) (BC)

  • subrepo: reject potentially unsafe subrepo paths (BC) (SEC)

34.7. Internal API Changes

  • extensions: deprecate extsetup without a 'ui' argument (API)
  • extensions: import the exthelper class from evolve 980565468003 (API)
  • filecache: unimplement __set__() and __delete__() (API)

  • histedit: drop unused constructor arguments (API)
  • revset: enforce "%d" to be interpreted as literal revision number (API) (BC)
  • ui: add config knob to redirect status messages to stderr (API)

35. Mercurial 4.8.2 (2019-01-07)

This is a regularly-scheduled bugfix release containing following fixes:

35.1. commands

  • update: do not pass in user revspec as default destination (issue6044)

35.2. core

  • match: fix assertion for fileset with no context (issue6046)

  • revlog: catch delta base value under -1
  • revlog: catch revlog corruption in index_baserev
  • server: always close http socket if responding with an error (issue6033)

  • vfs: ensure closewrapbase fh doesn't escape by entering context manager

35.3. extensions

  • phabricator: properly encode boolean types in the request body

35.4. unsorted

  • windows: ensure mixedfilemodewrapper fd doesn't escape by entering context mgr
  • worker: do not swallow exception occurred in main process

36. Mercurial 4.8.1 (2018-12-04)

A regularly scheduled bugfix release. Some security fixes are included, but all are expected to be low-risk.

36.1. commands

  • commandserver: get around ETIMEDOUT raised by selectors2
  • graft: do not try to skip rev derived from ancestor more than once (issue6024)

  • verify: provide unit to ui.makeprogress()

36.2. core

  • revlog: fix out-of-bounds access by negative parents read from revlog (SEC)

36.3. extensions

  • rebase: abort in-mem rebase if there's a dirty merge state
  • rebase: fix dir/file conflict detection when using in-mem merge
  • rebase: fix path auditing to audit path relative to repo root (issue5818)

  • rebase: preserve working copy when redoing in-mem rebase on disk

36.4. unsorted

  • tests: stabilize test-inherit-mode.t on FreeBSD and macOS (issue6026)

37. Mercurial 4.8 (2018-11-02)

An overview of new features available. This is a regularly-scheduled quarterly feature release.

37.1. commands

  • add: add a label for messages about added files
  • addremove: add labels for messages about added and removed files
  • annotate: pass in wdir rev and node to formatter (BC)
  • annotate: rename {line_number} to {lineno} (BC)
  • bookmarks: add explicit option to list bookmarks of the given names
  • bookmarks: pass in formatter to printbookmarks() instead of opts (API)
  • clone: allow local cloning to create more than one level of directories
  • debugcommands: introduce debugrevlogindex (BC)
  • debugcommands: use openstorage() in debugdata (BC)
  • grep: add MULTIREV support to --allfiles flag
  • grep: rename {line_number} to {lineno} as well (BC)
  • grep: search all commits in allfiles mode
  • help: adding a proper declaration for shortlist/basic commands (API)
  • help: adding support for command categories
  • identify: change {parents} to a list of nodes (BC)
  • identify: show remote bookmarks in 'hg id url -Tjson -B'
  • log: have changesetformatter fill in wdir() rev and node (BC)
  • log: respect graphshorten on terminal nodes (collapsing o-~ to just o~)

  • merge: improve interactive one-changed one-deleted message (issue5550)

  • phase: explicitly exclude secret phase and above
  • phase: expose a '_phase(idx)' revset
  • phase: handle phase with no command flag
  • phase: report number of non-public changeset alongside the new range
  • push: add "remote" to 'repository changed while pushing' messages (issue5971)

  • remove: add a label for messages about removed files
  • rename: return error status if any rename/copy failed
  • resolve: add a flag for the default behavior of re-merging
  • resolve: add config to make hg resolve not re-merge by default
  • resolve: add confirm config option
  • resolve: add option to warn/abort on -m with unresolved conflict markers
  • resolve: graduate resolve.mark-check from experimental, add docs
  • resolve: rename {status} to {mergestatus} to not shadow change status (BC)
  • status: advertise --abort instead of 'update -C .' to abort a merge
  • status: advertise --abort instead of 'update -C .' to abort graft
  • status: remove "morestatus" message from formatter data (BC)
  • status: rename {copy} to {source} for compatibility with {file_copies} (BC)
  • verify: make output less confusing (issue5924)

37.2. core

  • context: drop compatibility for 'context.descendant' (API)
  • context: move logic from changectx.__init__ to localrepo.__getitem__ (API)

  • context: remove unused overlayfilectx (API)
  • dispatch: don't show list of commands on bogus command
  • dispatch: making all hg abortions be output with a specific label
  • dispatch: show a short error message when invalid global option given
  • exchange: support declaring pull depth
  • exchange: support defining narrow file patterns for pull
  • filelog: add a hasnode() method (API)
  • filelog: drop _generaldelta attribute (API)
  • filelog: drop index attribute (API)
  • filelog: remove checkhash() (API)
  • filelog: remove revdiff() (API)
  • filelog: remove version attribute (API)
  • filelog: stop proxying "opener" (API)
  • filelog: stop proxying _addrevision() (API)
  • filelog: stop proxying checksize() (API)
  • filelog: stop proxying compress() (API)
  • filelog: stop proxying datafile (API)
  • filelog: stop proxying deltaparent() (API)
  • filelog: stop proxying flags() (API)
  • filelog: stop proxying headrevs() (API)
  • filelog: stop proxying rawsize() (API)
  • filelog: stop proxying start(), end(), and length() (API)
  • localrepo: add repository feature when repo can be stream cloned
  • localrepo: add requirement when narrow files creation option present
  • localrepo: automatically load lfs extension when required (BC)
  • localrepo: define "features" on repository instances (API)
  • localrepo: define storage backend in creation options (API)
  • localrepo: move repo creation logic out of localrepository.__init__ (API)

  • localrepo: pass ui to newreporequirements() (API)
  • localrepo: support marking repos as having shallow file storage
  • localrepo: support writing shared file (API)
  • pager: do not enable when TERM=dumb
  • repository: establish API for emitting revision deltas
  • revlog: add method for obtaining storage info (API)
  • revlog: drop LookupError alias (API)

  • revlog: drop RevlogError alias (API)

  • revlog: drop compatibility for 'revlog.descendant' (API)
  • revlog: drop emitrevisiondeltas() and associated functionality (API)
  • revlog: drop some more error aliases (API)
  • revlog: new API to emit revision data
  • revlog: reuse cached delta for identical base revision (issue5975)

  • revset: expand bookmark(.) to the active bookmark
  • revsetlang: fix position of '-' in spaceless 'a-b' expressions
  • streamclone: don't support stream clone unless repo feature present
  • streamclone: include obsstore file into stream bundle if client can read it
  • templatefuncs: add truncate parameter to pad
  • templatekw: add experimental {status} keyword
  • templatekw: deprecate old-style template keyword function (API)
  • templates: rename "user" to "luser" defined in default map file (API)
  • tracing: new module to make tracing events in hg easier
  • tracing: trace command function execution
  • transaction: make entries a private attribute (API)
  • transaction: remember original len(repo) instead of tracking added revs (API)
  • util: make timedcm require the label (API)
  • wireprotov2: add bookmarks to "changesetdata" command
  • wireprotov2: add phases to "changesetdata" command
  • wireprotov2: client support for advertising redirect targets
  • wireprotov2: client support for following content redirects
  • wireprotov2: define and implement "changesetdata" command
  • wireprotov2: define and implement "filedata" command
  • wireprotov2: define and implement "filesdata" command
  • wireprotov2: define and implement "manifestdata" command
  • wireprotov2: server support for sending content redirects
  • wireprotov2: support response caching

37.3. extensions

  • absorb: import extension from Facebook's hg-experimental
  • absorb: print '{rev}:' as a prefix to the hash
  • absorb: print summary of changesets affected
  • absorb: prompt user to accept absorb changes by default
  • amend: support "history-editing-backup" config option
  • closehead: fix close-head -r listification
  • commitextras: work nicely with other extensions
  • convert: fix a file descriptor leak
  • extension: add a summary of total loading time per extension
  • extensions: add detailed loading information
  • extensions: new closehead module for closing arbitrary heads
  • fastannotate: initial import from Facebook's hg-experimental
  • fastannotate: make the default value for 'fastannotate.useflock' dynamic
  • fix: add a monkey-patchable point after all new revisions have been committed
  • fix: compute changed lines lazily to make whole-file fixer tools faster
  • fix: determine fixer tool failure by exit code instead of stderr
  • fix: pull out flag definitions to make them re-usable from extensions
  • fsmonitor: use vfs instead of opener (issue5938)

  • journal: do not pass in repolookuperror string to template (BC)
  • journal: unify template name for "nodes" (BC)
  • largefiles: automatically load largefiles extension when required (BC)
  • lfs: add repository feature denoting the use of LFS
  • lfs: autoload the extension when cloning from repo with lfs enabled
  • lfs: consult the narrow matcher when extracting pointers from ctx (issue5794)

  • lfs: don't add extension to hgrc after clone or share (BC)
  • lfs: don't add extension to hgrc after conversion (BC)
  • logtoprocess: connect all fds to /dev/null to avoid bad interaction with pager
  • logtoprocess: define $HG for children processes
  • narrow: add '--import-rules' flag to tracked command
  • narrow: add a --narrowspec flag to clone command
  • narrow: add narrow and ellipses as server capabilities
  • narrow: add server logic to send cg while widening without ellipsis
  • narrow: check for servers' narrow support before doing anything (BC)
  • narrow: drop support for remote expansion (BC)
  • narrow: introduce a config option to check if narrow is enabled or not
  • narrow: move .hg/narrowspec to .hg/store/narrowspec (BC)
  • narrow: move support for 'hg verify' into core
  • narrow: the first version of narrow_widen wireprotocol command
  • narrow: validate spec files are well-formed during clone (BC)
  • patchbomb: allow using HGHOSTNAME to force a hostname
  • phabricator: drop support for the legacy phabricator.auth.token config (BC)
  • phabricator: mark extension as experimental for now
  • rebase: add --stop option to stop rebase at any point (issue5206)

  • rebase: don't try to prune obsolete changeset already in the destination
  • rebase: explicitly track collapses as fold
  • rebase: skip extinct revisions even if it has no successor in rebase set
  • rebase: support "history-editing-backup" config option
  • remotenames: add names argument to remotenames revset
  • share: allow more than one level of directories to be created
  • shelve: add an "internal" extra
  • shelve: fix crash on unshelve without .shelve metadata file
  • shelve: use the internal phase when possible
  • sqlitestore: file storage backend using SQLite
  • strip: ignore orphaned internal changesets while computing safe strip roots

37.4. hgweb

  • hgweb: add error template to json so it won't crash
  • hgweb: map Abort to 403 error to report inaccessible path for example
  • hgweb: show shortlog by default in json output (issue5978)

  • hgweb: use scmutil.binnode() to translate None to wdir hash (issue5988)

37.5. chg

  • chgserver: add "setumask2" command which uses correct message frame
  • chgserver: restore pager fds attached within runcommand session
  • rust-chg: add Client extensions to run cHg-specific requests
  • rust-chg: add callback to handle pager and shell command requests

37.6. unsorted

  • ancestors: actually iterate over ancestors in topological order (issue5979)

  • bundle2: graduate bundle2.stream option from experimental to server section
  • changegroup: pass sorted revisions into group() (API)
  • changegroup: port to emitrevisions() (issue5976)

  • changegroup: remove reordering control (BC)
  • changegroup: restore default node ordering (issue6001)

  • cleanupnodes: drop special casing around prune markers (API)
  • commands: restore compatibility for "^cmd" registration (issue6005)

  • copies: improve logic of deciding copytracing on based of config options
  • crecord: make nextsametype() check that parent item exists (issue6009)

  • crecord: make enter move cursor down to the next item of the same type
  • delta: skip "empty delta" optimisation for non-general case (issue6006)

  • error: introduce StorageError

  • filemerge: add config knob to check capabilities of internal merge tools
  • filemerge: show warning if chosen tool has no binary files capability
  • fileset: extract language processing part to new module (API)
  • fileset: optimize 'x and not y' to 'x - y'
  • fileset: roughly adjust weights of functions
  • formatter: remove experimental marker from -T option
  • formatter: rename {abspath}/{file} to {path}, and drop relative {path} (BC)
  • global: replace most uses of RevlogError with StorageError (API)

  • hg: allow extra arguments to be passed to repo creation (API)
  • httppeer: expose capabilities for each command
  • index: drop support for negative indexes into the index
  • index: handle index[-1] as nullid more explicitly
  • linelog: fix infinite loop vulnerability
  • lookup: add option to disambiguate prefix within revset
  • mail: always fall back to iso-8859-1 if us-ascii won't work (BC)
  • mail: modernize check for Python-with-TLS
  • manifest: add rawsize() proxy (API)
  • meld: enable auto-merge
  • mergetool: warn if ui.merge points to nonexistent tool
  • narrowspec: limit patterns to path: and rootfilesin: (BC)
  • narrowspec: use sparse.parseconfig() to parse narrowspec file (BC)
  • obsolete: fix ValueError when stored note contains ':' char (issue5783)

  • overlayworkingctx: fix exception in metadata-only inmemory merges (issue5960)

  • phase: add an archived phase
  • phases: add an internal phases
  • pullreport: issue a message about "extinct" pulled changesets
  • py3: rename pycompat.getcwd() to encoding.getcwd() (API)
  • revisions: allow "x123" to refer to nodeid prefix "123"
  • scmutil: accept multiple predecessors in 'replacements' (API)
  • shortest: never emit 0-length prefix even if unique
  • shortest: use 'x' prefix to disambiguate from revnum if configured
  • sparse-revlog: only refine delta candidates in the sparse case (issue6006)

  • statprof: fix indent level of fp.write() (issue6004)

  • statprof: update the name as the i increases (issue6003)

  • storageutil: consistently raise LookupError (API)

  • storageutil: implement file identifier resolution method (BC)
  • storageutil: move metadata parsing and packing from revlog (API)
  • storageutil: new module for storage primitives (API)
  • url: allow to configure timeout on http connection

37.7. Behavior Changes

  • annotate: pass in wdir rev and node to formatter (BC)
  • annotate: rename {line_number} to {lineno} (BC)
  • changegroup: remove reordering control (BC)
  • debugcommands: introduce debugrevlogindex (BC)
  • debugcommands: use openstorage() in debugdata (BC)
  • formatter: rename {abspath}/{file} to {path}, and drop relative {path} (BC)
  • grep: rename {line_number} to {lineno} as well (BC)
  • identify: change {parents} to a list of nodes (BC)
  • journal: do not pass in repolookuperror string to template (BC)
  • journal: unify template name for "nodes" (BC)
  • largefiles: automatically load largefiles extension when required (BC)
  • lfs: don't add extension to hgrc after clone or share (BC)
  • lfs: don't add extension to hgrc after conversion (BC)
  • localrepo: automatically load lfs extension when required (BC)
  • log: have changesetformatter fill in wdir() rev and node (BC)
  • mail: always fall back to iso-8859-1 if us-ascii won't work (BC)
  • narrow: check for servers' narrow support before doing anything (BC)
  • narrow: drop support for remote expansion (BC)
  • narrow: move .hg/narrowspec to .hg/store/narrowspec (BC)
  • narrow: validate spec files are well-formed during clone (BC)
  • narrowspec: limit patterns to path: and rootfilesin: (BC)
  • narrowspec: use sparse.parseconfig() to parse narrowspec file (BC)
  • phabricator: drop support for the legacy phabricator.auth.token config (BC)
  • resolve: rename {status} to {mergestatus} to not shadow change status (BC)
  • status: remove "morestatus" message from formatter data (BC)
  • status: rename {copy} to {source} for compatibility with {file_copies} (BC)
  • storageutil: implement file identifier resolution method (BC)

37.8. Internal API Changes

  • bookmarks: pass in formatter to printbookmarks() instead of opts (API)
  • changegroup: pass sorted revisions into group() (API)
  • cleanupnodes: drop special casing around prune markers (API)
  • context: drop compatibility for 'context.descendant' (API)
  • context: move logic from changectx.__init__ to localrepo.__getitem__ (API)

  • context: remove unused overlayfilectx (API)
  • filelog: add a hasnode() method (API)
  • filelog: drop _generaldelta attribute (API)
  • filelog: drop index attribute (API)
  • filelog: remove checkhash() (API)
  • filelog: remove revdiff() (API)
  • filelog: remove version attribute (API)
  • filelog: stop proxying "opener" (API)
  • filelog: stop proxying _addrevision() (API)
  • filelog: stop proxying checksize() (API)
  • filelog: stop proxying compress() (API)
  • filelog: stop proxying datafile (API)
  • filelog: stop proxying deltaparent() (API)
  • filelog: stop proxying flags() (API)
  • filelog: stop proxying headrevs() (API)
  • filelog: stop proxying rawsize() (API)
  • filelog: stop proxying start(), end(), and length() (API)
  • fileset: extract language processing part to new module (API)
  • global: replace most uses of RevlogError with StorageError (API)

  • help: adding a proper declaration for shortlist/basic commands (API)
  • hg: allow extra arguments to be passed to repo creation (API)
  • localrepo: define "features" on repository instances (API)
  • localrepo: define storage backend in creation options (API)
  • localrepo: move repo creation logic out of localrepository.__init__ (API)

  • localrepo: pass ui to newreporequirements() (API)
  • localrepo: support writing shared file (API)
  • manifest: add rawsize() proxy (API)
  • py3: rename pycompat.getcwd() to encoding.getcwd() (API)
  • revlog: add method for obtaining storage info (API)
  • revlog: drop LookupError alias (API)

  • revlog: drop RevlogError alias (API)

  • revlog: drop compatibility for 'revlog.descendant' (API)
  • revlog: drop emitrevisiondeltas() and associated functionality (API)
  • revlog: drop some more error aliases (API)
  • scmutil: accept multiple predecessors in 'replacements' (API)
  • storageutil: consistently raise LookupError (API)

  • storageutil: move metadata parsing and packing from revlog (API)
  • storageutil: new module for storage primitives (API)
  • templatekw: deprecate old-style template keyword function (API)
  • templates: rename "user" to "luser" defined in default map file (API)
  • transaction: make entries a private attribute (API)
  • transaction: remember original len(repo) instead of tracking added revs (API)
  • util: make timedcm require the label (API)

38. Mercurial 4.7.2 (2018-10-01)

This is a regularly-scheduled bugfix release containing following fixes:

38.1. security

Fix a potential out-of-bounds read in manifest parsing C code.

38.2. core

  • various minor correctness fixes in revsets for commonancestors() and similar

38.3. unsorted

  • chgserver: do not send system() back to client if stdio redirected (issue5992)

  • procutil: compare fd number to see if stdio protection is needed (issue5992)

39. Mercurial 4.7.1 (2018-09-04)

This is a regularly-scheduled bugfix release containing following fixes:

39.1. commands

  • merge: do not delete untracked files silently (issue5962)

39.2. core

  • revlog: fix descendant deprecated method

39.3. hgweb

  • hgweb: load revcount + 1 entries to fill nextentry in log page (issue5972)

39.4. performance

  • remotephase: avoid full changelog iteration (issue5964)

  • remotephase: fast path newheads computation in simple case (issue5964)

  • scmutil: avoid quadratic membership testing (issue5969)

  • sparse-revlog: fix delta validity computation

40. Mercurial 4.7 (2018-08-01)

This is a regularly-scheduled quarterly feature release and has its own release notes page which can be found here Full release notes.

WhatsNew (last edited 2024-10-28 15:33:56 by RaphaelGomes)