Differences between revisions 5 and 6
Revision 5 as of 2010-11-06 07:26:40
Size: 3974
Editor: abuehl
Comment: Fix broken 'Downloads' link in 'See also' section
Revision 6 as of 2010-11-07 17:04:08
Size: 3973
Editor: PaulBoddie
Comment: Downloads -> Download
Deletions are marked like this. Additions are marked like this.
Line 59: Line 59:
Mercurial is continually subjected to a large suite of regression tests, so it is generally safe to test any version of Mercurial, including unreleased development versions. Bugfixes are generally committed to the "stable" branch of the [[DeveloperRepos|Mercurial repository]] and are generally included in the "nightly builds" found on our [[Downloads|downloads]] page. Mercurial is continually subjected to a large suite of regression tests, so it is generally safe to test any version of Mercurial, including unreleased development versions. Bugfixes are generally committed to the "stable" branch of the [[DeveloperRepos|Mercurial repository]] and are generally included in the "nightly builds" found on our [[Download|downloads]] page.

Upgrading Mercurial

Notes on upgrading Mercurial.

1. Introduction

Mercurial is designed to be painless to upgrade. This means:

  • existing repositories will continue to be usable

  • existing configuration will continue to work
  • existing usage patterns will continue to work
  • existing automation based on Mercurial's command-line interface will continue to work
  • new clients will interoperate with old servers
  • new servers will interoperate with old clients

Any changes that break these rules will be listed in our upgrade notes and will generally be very minor.

There are two notable areas where you may encounter problems between major releases (ie 1.6 to 1.7):

  • multiple client versions on a shared disk
  • third-party or custom extensions and Python hooks

2. Multiple client versions on a shared disk

New clients, by default, will create new repositories with all current features enabled. Such repositories will interoperate normally with older clients when accessed via SSH or HTTP protocols. However, if multiple users are using different client versions on a shared disk (ie NFS or Windows share), old clients may report "requirement not supported" when trying to read directly from these repositories. To avoid this issue, there are three approaches:

  • only use old clients to create new shared repositories
  • use settings in the "format" section of 'hgrc' to disable new repository features

  • manually downgrade new repositories to the old format

2.1. Upgrading and downgrading repository formats

To upgrade, simply use 'hg clone --pull' with a new client.

To downgrade, use one of the following:

  • For compatibility with hg < 1.7 (Nov 2010): 'hg clone --config format.dotencode=False --pull'

  • For compatibility with hg < 1.1 (Dec 2008): 'hg clone --config format.usefncache=False --pull'

  • For compatibility with hg < 0.9.4 (Jun 2007): 'hg clone --config format.usestore=False --pull'

3. Third-party or custom extensions and Python hooks

Unlike Mercurial's command line interface, Mercurial's internal interfaces may change significantly between major releases. This may require upgrading any third-party extensions you are using.

If you have custom extensions or hooks written in Python, you may need to modify them when upgrading to a new major release. See API changes for details.

4. Release timing, support and obsolescence

New major releases are made three times per year, in March, July, and November, generally on the 1st of the month. Minor releases are made every month between major releases or more often as required.

Because of our focus on painless backward-compatibility, we do not do continued maintenance on old releases. We encourage all users to upgrade to the latest major release when they encounter problems.

5. Testing unreleased features and bugfixes

Mercurial is continually subjected to a large suite of regression tests, so it is generally safe to test any version of Mercurial, including unreleased development versions. Bugfixes are generally committed to the "stable" branch of the Mercurial repository and are generally included in the "nightly builds" found on our downloads page.

Features are developed in the "default" branch of the Mercurial repository and will show up in nightly builds two weeks before each major release during our feature freeze.

6. See also


CategoryProject

UpgradingMercurial (last edited 2014-09-17 19:41:04 by mpm)