Differences between revisions 2 and 3
Revision 2 as of 2020-08-03 18:11:51
Size: 6979
Editor: PulkitGoyal
Comment: add from changelog
Revision 3 as of 2020-08-03 18:14:12
Size: 6982
Editor: PulkitGoyal
Comment:
Deletions are marked like this. Additions are marked like this.
Line 89: Line 89:
== Unsorted == Unsorted ==

Mercurial 5.5 release

This is an overview of the 5.5 release.

1. New Features

  • clonebundles can be annotated with the expected memory requirements
    • using the REQUIREDRAM option. This allows clients to skip bundles created with large zstd windows and fallback to larger, but less demanding bundles.

  • The phabricator extension now provides more functionality of the

    • arcanist CLI like changing the status of a differential.
  • Phases processing is much faster, especially for repositories with
    • old non-public changesets.

2. New Experimental Features

  • The core of some hg operations have been (and are being)
    • implemented in rust, for speed. hg status on a repository with 300k tracked files goes from 1.8s to 0.6s for instance. This has currently been tested only on linux, and does not build on windows. See rust/README.rst in the mercurial repository for instructions to opt into this.

  • An experimental config rewrite.empty-successor was introduced to control

    • what happens when rewrite operations result in empty changesets.

3. Bug Fixes

  • For the case when connected to a TTY, stdout was fixed to be line-buffered
    • on Python 3 (where it was block-buffered before, causing the process to seem hanging) and Windows on Python 2 (where it was unbuffered before).
  • Subversion sources of the convert extension were fixed to work on Python 3.
  • Subversion sources of the convert extension now interpret the encoding of
    • URLs like Subversion. Previously, there were situations where the convert extension recognized a repository as present but Subversion did not, and vice versa.
  • The empty changeset check of in-memory rebases was fixed to match that of
    • normal rebases (and that of the commit command).
  • The push command now checks the correct set of outgoing changesets for
    • obsolete and unstable changesets. Previously, it could happen that the check prevented pushing changesets which were already on the server.

4. Backwards Compatibility Changes

  • Mercurial now requires at least Python 2.7.9 or a Python version that
    • backported modern SSL/TLS features (as defined in PEP 466), and that Python was compiled against a OpenSSL version supporting TLS 1.1 or TLS 1.2 (likely this requires the OpenSSL version to be at least 1.0.1).
  • The hg perfwrite command from contrib/perf.py was made more flexible and

    • changed its default behavior. To get the previous behavior, run `hg perfwrite --nlines=100000 --nitems=1 --item='Testing write performance' --batch-line`.
  • The absorb extension now preserves changesets with no file changes that can
    • be created by the commit command (those which change the branch name compared to the parent and those closing a branch head).

5. Internal API Changes

  • logcmdutil.diffordiffstat() now takes contexts instead of nodes.
  • The mergestate class along with some related methods and constants have

    • moved from mercurial.merge to a new mercurial.mergestate module.

  • The phasecache class now uses sparse dictionaries for the phase data.

    • New accessors are provided to detect if any non-public changeset exists

      (hasnonpublicphases) and get the correponsponding root set (nonpublicphaseroots).

  • The stdin, stdout and stderr attributes of the mercurial.pycompat

    • module were removed. Instead, the attributes of same name from the

      mercurial.utils.procutil module should be used, which provide more consistent behavior across Python versions and platforms.

6. Unsorted

6.1. commands

  • clonebundles: optional memory-requirement attribution
  • commit: check branch change on to-be-committed changeset
  • commit: tell user what to do with .hg/last-message.txt
  • config: add option to control creation of empty successors during rewrite
  • files: speed up 'hg files' when no flags change display
  • push: another test for checks preventing pushing orphaness to a server
  • push: test the checks preventing pushing orphaness to a server
  • status: also support for 'traversedir' callback in the Rust fast-path
  • status: match category text in the option description

6.2. core

  • revlog: avoid hard-coded hash sizes
  • revlog: fix excessive decref on tuple creation failure in parse_index2()
  • ui: add option to timestamp status and diagnostic messages
  • ui: fix Python 2.7 support for ui.timestamp-output

6.3. extensions

  • rebase: add test case that shows that inmemory rebase does not preserve merges
  • rebase: consider rewrite.empty-successor configuration
  • rebase: correctly check for empty commit in in-memory mode
  • rebase: fix regression in file change detection introduced by 0ecb3b11fcad

6.4. unsorted

  • chg: suppress OSError in _restoreio() and add some logging (issue6330)

  • chgserver: discard buffered output before restoring fds (issue6207)

  • cmdserver: add option to not exit from message loop on SIGINT
  • curses: do not initialize LC_ALL to user settings (issue6358)

  • debian: support building a single deb for multiple py3 versions
  • demandimport: ignore 'lzma' module for demandimport
  • dispatch: handle late KeyboardInterrupt occurred in run()

  • exchange: check actually missing revs for obsolete / unstable revs (issue6372)

  • git: decode node IDs back into Python strings (issue6349)

  • infinitepush: fix '{get,put}_args' formatting on Python 3
  • nodemap: add a new mode option, with an optional "warn" value
  • nodemap: gate the feature behind a new requirement
  • phabupdate: allow revisions to be commandeered
  • py3: fix crash when server address is 0.0.0.0 (issue6362)

  • rhg: add Command trait for subcommands implemented by rhg
  • rhg: add a limited 'rhg root' subcommand
  • run-tests: find python binary on Python 3 (issue6361)

  • rust-hg-cpython: update status bridge with the new 'traversedir' support
  • rust-status: collect traversed directories if required
  • rust-status: don't dispatch unknown file when traversing if not listing unknowns
  • rust-status: improve documentation and readability
  • sshpeer: make client print (likely) server errors on stderr (BC)
  • sslutil: add FIXME about supportedprotocols possibly containing too many items
  • sslutil: check for OpenSSL without TLS 1.0 support in one case
  • sslutil: properly detect which TLS versions are supported by the ssl module
  • sslutil: stop storing protocol and options for SSLContext in settings dict
  • state: support validated declaration of nested unfinished ops
  • test: redirect stderr so warning messages don't change output (issue6237)

  • upgrade: support the --quiet flag
  • upgrade: support upgrade and downgrade from persistent nodemap

=========

  • sshpeer: make client print (likely) server errors on stderr (BC)

Release5.5 (last edited 2020-08-03 18:14:12 by PulkitGoyal)