Upgrade Notes

Changes that may affect existing usage when upgrading Mercurial.

1. 2.3: minor changes

2. 2.2: minor changes

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

3. 2.1.2: strip ignores -n

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

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

5. 2.1: phases, various minor changes

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

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

7. 1.9.1: guessmime, revert behavior restored

8. 1.9: minor changes, drop experimental parentdelta format

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

9. 1.8: bookmarks are now a core feature

10. 1.7.3: minor changes

11. 1.7: dotencode repository format

12. 1.6: hgwebdir unified with hgweb

13. 1.5: Small behavior changes

14. 1.4: Minor changes

15. 1.3: Python 2.4 or later required

16. 1.2: Translations and command line options

17. 1.1.1: Minor issues

18. 1.1: New repository layout

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

19. 1.0: Minor changes

20. 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.

21. 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.

22. 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.

23. 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.

25. 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 ";"

26. See alse