Upgrade Notes

Changes that may affect existing usage when upgrading Mercurial. See WhatsNew for a more in-depth list of changes, including things that don't necessarily require special action when upgrading.

1. 3.3: minor changes

2. 3.2: bid merge on by default, SSLv3 disabled

3. 3.1.1: unbundle doesn't move bookmarks

4. 3.1: minor changes

5. 3.0: minor changes

This release has significant changes to the revset implementation which now has different performance characteristics.

6. 2.9.2: minor changes

7. 2.8: minor changes

TLSv1.0 or greater is now required for SSL connections for security reasons. This should be compatible with over 99% of existing webservers. Use ui.tls=False to allow SSLv2 or SSLv3 connections.

8. 2.6: minor changes

9. 2.4: minor changes

10. 2.3: minor changes

11. 2.2: minor changes

/!\ This release has a significant memory leak, fixed in 2.2.1

12. 2.1.2: strip ignores -n

13. 2.1.1: revert pull return code change, compile issue on OS X

/!\ This release has a known compile failure on OS X

14. 2.1: phases, various minor changes

$ hg phase --force --draft "public() and outgoing()"

15. 2.0: subrepo aborts recursive commits, minor backout and alias changes

16. 1.9.1: guessmime, revert behavior restored

17. 1.9: minor changes, drop experimental parentdelta format

(See MissingRequirement for information on migrating any repositories using the experimental parentdelta format.)

18. 1.8: bookmarks are now a core feature

19. 1.7.3: minor changes

20. 1.7: dotencode repository format

21. 1.6: hgwebdir unified with hgweb

22. 1.5: Small behavior changes

23. 1.4: Minor changes

24. 1.3: Python 2.4 or later required

25. 1.2: Translations and command line options

26. 1.1.1: Minor issues

27. 1.1: New repository layout

/!\ hgwebdir in 1.1 walks collections recursively, which can be very CPU-intensive on repos with check-outs (issue1336)

28. 1.0: Minor changes

29. 0.9.5: Minor output changes

"hg manifest -v" displays a new one-character long column between permissions and file names, for executable and symlink bits, like:

$ hg manifest -v
644   normalfile
755 * isexec
644 @ islink

"contrib/hg-ssh" from older Mercurial releases will not be compatible with version 0.9.5, please update your copy.

30. 0.9.2: New repository layout

The repository layout has been improved to guard against issues with case-insensitive filesystems and improve interoperability for repositories shared between Unix and Windows systems.

Newly created repositories will use the new layout by default. To convert an old repository, use clone --pull.

Note: Versions 0.9.1 and earlier of Mercurial cannot read repositories with the new layout directly, but they can clone, pull from, and push to servers using the new layout.

31. 0.9: New repository format

The repository file format has been improved. This has resulted in an average 40% reduction in disk space usage. The new format (called RevlogNG) is now the default.

Mercurial works perfectly with both the old and new repository file formats. It can transfer changes transparently between repositories of either format.

To use the new repository format, simply use hg clone --pull to clone an existing repository.

Note: Versions 0.8.1 and earlier of Mercurial cannot read RevlogNG repositories directly, but they can clone, pull from, and push to servers that are serving RevlogNG repositories.

32. 0.8: Small behavior changes

The diff and status commands are now tree-wide by default to match the behavior of commit. To get the old behavior, simply use 'hg diff .' to diff the current working directory.

GPG signing is now done with the gpg extension in contrib/.

The deprecated --text option for commit, rawcommit, and tag has been removed. Use --message instead.

The copy/rename --parents option have been removed as these commands now behave more like their UNIX equivalents.

As of 0.7, hardlink cloning is now supported on Windows with NTFS and ActiveState Python. Because old versions cannot properly determine the link count of hardlinked files, using old versions of Mercurial on a new repository containing hardlinks may be dangerous.

34. 0.6c: Directory Escaping

Mercurial 0.6c introduced a layout change that affects a small number of repositories. To avoid potential future name collisions, repositories containing directory names ending in ".i", ".d", or ".hg" (eg: etc/init.d/foo) need escaping. If you have a repository containing such directories, it can be updated with the following UNIX command:

$ find .hg -type d -name "*.[di]" -exec echo mv {} {}.hg ";"

35. See also