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 4.5-rc (2018-01-22)

1.1. New Features

1.1.1. revert --interactive

The revert command now accepts the flag --interactive to allow reverting only some of the changes to the specified files.

1.1.2. Accessing hidden changesets

Set config option 'experimental.directaccess = True' to access hidden changesets from read only commands.

1.1.3. githelp extension

The githelp extension provides the hg githelp command. This command attempts to convert a git command to its Mercurial equivalent. The extension can be useful to Git users new to Mercurial.

1.1.4. Largefiles changes

1.1.5. Other Changes

1.2. Backwards Compatibility Changes

1.3. Bug Fixes

1.3.1. Issue 5165

Bookmark, whose name is longer than 255, can again be exchanged again between 4.4+ client and servers.

1.3.2. Issue 5733

The convert extension works with bzr < 2.6.0 again.

1.3.3. Issue 4580

Mercurial will now attempt to use hardlinks on NTFS on Windows.

1.3.4. Issue 5764

The revset x^:: is now correctly parsed as (x^):: instead of being an error.

1.3.5. Issue 5759

Setting the diff.noprefix configuration option no longer breaks the --stat flag on hg diff.

1.3.6. Issue 5365

hg outgoing now honors :pushurl paths from hgrc

1.3.7. Other Changes

1.4. API Changes

2. Mercurial 4.4.2 (2017-12-01)

This is a regularly-scheduled bugfix release.

2.1. Notable changes

2.1.1. Stricter command option parsing

Mercurial can now optionally parse "early" options (-R/--repository, --cwd, --config, --debugger, and --profile) more strictly, for more secure integration with tools that invoke 'hg' commands. Setting HGPLAIN=+strictflags will parse these options more strictly, which prevents them from being injected as arguments to other flags.

2.2. Bug fixes

2.3. Performance improvements

3. Mercurial 4.4.1 (2017-11-07)

3.1. Notable changes

It is possible that a specially malformed repository can cause Git subrepositories to run arbitrary code in the form of a .git/hooks/post-update script checked in to the repository in Mercurial 4.4 and earlier. Typical use of Mercurial prevents construction of such repositories, but they can be created programmatically.

4. Mercurial 4.4 (2017-11-01)

4.1. Notable changes

4.1.1. Control whitespace settings for annotation on hgweb

/annotate URLs on hgweb now accept query string arguments to influence how whitespace changes impact results.

The arguments "ignorews," "ignorewsamount," "ignorewseol," and "ignoreblanklines" now have the same meaning as their [annotate] config section counterparts. Any provided setting overrides the server default.

HTML checkboxes have been added to the paper and gitweb themes to expose current whitespace settings and to easily modify the current view.

4.1.2. Fast, heuristic copy-tracing

A new fast heuristic algorithm for copytracing which assumes that the files moves are either:

  1. renames in the same directory
  2. moves in other directories with same names

You can use this algorithm by setting 'experimental.copytrace=heuristics'. This setting performs full copytracing if both source and destination branches contains non-public changesets only.

4.1.3. Other changes

4.2. Backwards Compatibility Changes

4.3. Bug Fixes

4.4. Performance Improvements

4.5. API Changes

4.5.1. remove peer.batch()

Replace with peer.iterbatch().

4.5.2. Other Changes

5. Mercurial 4.3.3 (2017-10-01)

6. Mercurial 4.3.2 (2017-09-18)

7. Mercurial 4.3 / 4.3.1 (2017-08-10)

(4.3.1 was released immediately after 4.3 to fix a release oversight.)

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

7.1. Notable changes

7.2. CVE-2017-1000115

Mercurial's symlink auditing was incomplete prior to 4.3, and could be abused to write to files outside the repository.

7.3. CVE-2017-1000116

Mercurial was not sanitizing hostnames passed to ssh, allowing shell injection attacks on clients by specifying a hostname starting with -oProxyCommand. This is also present in Git (CVE-2017-1000117) and Subversion (CVE-2017-9800), so please patch those tools as well if you have them installed.

8. Mercurial 4.2.3 (2017-08-10)

This was an out-of-cycle backport of security fixes from 4.3 for users stuck on Python 2.6.

9. Mercurial 4.2.2 (2017-07-05)

This is a regularly-scheduled bugfix release.

10. Mercurial 4.2.1 (2017-6-4)

This is a regularly-scheduled bugfix release.

11. Mercurial 4.2 (2017-5-2)

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

11.1. Notable changes

11.2. commands

11.3. core

11.4. extensions

11.5. hgweb

11.6. Behavior changes

11.7. Internal API changes

12. Mercurial 4.1.3 (2017-4-18)

This is an out of cycle release to address a security issue:

13. Mercurial 4.1.2 (2017-4-3)

This is a regularly-scheduled bugfix release.

14. Mercurial 4.1.1 (2017-3-2)

This is a regularly-scheduled bugfix release.

15. Mercurial 4.1 (2017-2-1)

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

15.1. commands

15.2. core

15.3. extensions

15.4. hgweb

15.5. chg

15.6. Behavior Changes

15.7. Internal API Changes

16. Mercurial 4.0.2 (2017-01-04)

This is a regularly-scheduled bugfix release.

17. Mercurial 4.0.1 (2016-12-1)

This is a regularly-scheduled bugfix release.

18. Mercurial 4.0 (2016-11-1)

An overview of new features available. This is a regularly-scheduled quarterly feature release. Unlike other 4.0 software releases, this is simply 3.9 + .1, so it should be the usual pain-free upgrade.

18.1. commands

18.2. core

18.3. extensions

18.4. hgweb