Mercurial 4.6 release

1. New Features

1.1. pullbundles

Pullbundles allow the server to answer client requests using pre-built bundles. This is different from the existing clonebundle feature:

Pullbundles are only used for clients running Mercurial 4.6 as well.

1.2. push

If 'server.streamunbundle' option is enabled, the server will directly apply the changes send by the changes. This avoids potentially large temporary files on the server side. It can also prevent concurrent pushes.

1.3. notify extension

The 'maxdiffstat' option can be used to truncate long file lists similar to 'maxdiff' for the patch part of the email.

1.4. hgweb

hgweb now shows date and user for operations that resulted in obsolete commit(s). For unstable commits, it shows the exact reason why they are considered unstable.

Server: header is now configurable using web.server-header option.

1.5. templates

A new template keyword 'reporoot' which shows the root directory of the current repository. A new template function 'mailmap' which maps author fields based on values in a .mailmap file.

2. Backwards Compatibility Changes

3. Performance Improvements

4. Bug Fixes

5. New experimental features

Each release there are lot of new features added which are hidden under the EXPERIMENTAL tag as the behavior may change in future or the feature is not complete yet. The experimental features added in this cycle are:

5.1. narrow extension

Allows to create clones which fetch history data for only a subset of files. This experimental extension is now distributed with Mercurial.

5.2. remotenames extension

Shows remotebookmarks and remotebranches in the UI. This experimental extension is now distributed with Mercurial.

5.3. infinitepush extension

Allows to store some pushes in a remote blob store on the server and to serve commits from remote blob store. The revisions are stored on disk or in everstore, the metadata are stored in sql or on disk. This experimental extension is now distributed with Mercurial.

5.4. fix extension

Allows to rewrite file content in changesets or working copy. For example, automatically applying formatting fixes to modified lines of code. This experimental extension is now distributed with Mercurial.

6. Other notable features

7. API Changes

More notes to sort into the above

0.1. commands

0.2. core

0.3. extensions

  • rebase: allow in-memory merge of the working copy parent
  • rebase: also include commit of collapsed commits in single transaction
  • rebase: also restore "ui.allowemptycommit" value
  • rebase: delete obsolete internal "keepopen" option
  • rebase: get "inmemory" state directly from rebase runtime
  • rebase: introduce support for automatically rebasing orphan changes
  • rebase: look up commit message to reuse outside of conclude[memory]node()
  • rebase: look up default date outside of conclude[memory]node()
  • rebase: make "destnode" consistently a revnum and rename it to "destrev"
  • rebase: move config override out of conclude[memory]node()
  • rebase: move constant expressions out of inner loop in _performrebase()
  • rebase: only store collapse message once
  • rebase: pass "inmemory" directly to _definedestmap()
  • rebase: pass in "extra" itself into conclude[memory]node()
  • rebase: pass in "keepbranch" to conclude[memory]node()
  • rebase: pass in "user" instead of "ctx" to conclude[memory]node()
  • rebase: pass in ctx, not rev, to conclude[memory]node()
  • rebase: pass in entire "overrides" dict to conclude[memory]node()
  • rebase: reduce scope of "dsguard" variables a bit
  • rebase: register status file generator only once when using single transaction
  • rebase: rename conclude[memory]node() to commit[memory]node()
  • rebase: sort roots by revision
  • rebase: store rebase state after each commit
  • rebase: use configoverride context manager for ui.forcemerge
  • rebase: use single transaction when running in memory

0.4. hgweb

  • hgweb: don't responsd to api requests unless feature is enabled
  • hgweb: port archive command to modern response API
  • hgweb: port most @webcommand to use modern response type
  • hgweb: support constructing URLs from an alternate base URL
  • hgweb: support using new response object for web commands

0.5. unsorted