1 == New Features == |
1 == New Features == |
2 |
2 |
3 * clonebundles can be annotated with the expected memory requirements |
|
4 using the `REQUIREDRAM` option. This allows clients to skip |
|
5 bundles created with large zstd windows and fallback to larger, but |
|
6 less demanding bundles. |
|
7 |
|
8 * The `phabricator` extension now provides more functionality of the |
|
9 arcanist CLI like changing the status of a differential. |
|
10 |
|
11 * Phases processing is much faster, especially for repositories with |
|
12 old non-public changesets. |
|
13 |
3 |
14 |
4 |
15 == New Experimental Features == |
5 == New Experimental Features == |
16 |
6 |
17 * The core of some hg operations have been (and are being) |
|
18 implemented in rust, for speed. `hg status` on a repository with |
|
19 300k tracked files goes from 1.8s to 0.6s for instance. |
|
20 This has currently been tested only on linux, and does not build on |
|
21 windows. See rust/README.rst in the mercurial repository for |
|
22 instructions to opt into this. |
|
23 |
|
24 * An experimental config `rewrite.empty-successor` was introduced to control |
|
25 what happens when rewrite operations result in empty changesets. |
|
26 |
7 |
27 |
8 |
28 == Bug Fixes == |
9 == Bug Fixes == |
29 |
10 |
30 * For the case when connected to a TTY, stdout was fixed to be line-buffered |
|
31 on Python 3 (where it was block-buffered before, causing the process to seem |
|
32 hanging) and Windows on Python 2 (where it was unbuffered before). |
|
33 |
|
34 * Subversion sources of the convert extension were fixed to work on Python 3. |
|
35 |
|
36 * Subversion sources of the convert extension now interpret the encoding of |
|
37 URLs like Subversion. Previously, there were situations where the convert |
|
38 extension recognized a repository as present but Subversion did not, and |
|
39 vice versa. |
|
40 |
|
41 * The empty changeset check of in-memory rebases was fixed to match that of |
|
42 normal rebases (and that of the commit command). |
|
43 |
|
44 * The push command now checks the correct set of outgoing changesets for |
|
45 obsolete and unstable changesets. Previously, it could happen that the check |
|
46 prevented pushing changesets which were already on the server. |
|
47 |
11 |
48 |
12 |
49 == Backwards Compatibility Changes == |
13 == Backwards Compatibility Changes == |
50 |
14 |
51 * Mercurial now requires at least Python 2.7.9 or a Python version that |
|
52 backported modern SSL/TLS features (as defined in PEP 466), and that Python |
|
53 was compiled against a OpenSSL version supporting TLS 1.1 or TLS 1.2 |
|
54 (likely this requires the OpenSSL version to be at least 1.0.1). |
|
55 |
|
56 * The `hg perfwrite` command from contrib/perf.py was made more flexible and |
|
57 changed its default behavior. To get the previous behavior, run `hg perfwrite |
|
58 --nlines=100000 --nitems=1 --item='Testing write performance' --batch-line`. |
|
59 |
|
60 * The absorb extension now preserves changesets with no file changes that can |
|
61 be created by the commit command (those which change the branch name |
|
62 compared to the parent and those closing a branch head). |
|
63 |
15 |
64 |
16 |
65 == Internal API Changes == |
17 == Internal API Changes == |
66 |
18 |
67 * logcmdutil.diffordiffstat() now takes contexts instead of nodes. |
|
68 |
|
69 * The `mergestate` class along with some related methods and constants have |
|
70 moved from `mercurial.merge` to a new `mercurial.mergestate` module. |
|
71 |
|
72 * The `phasecache` class now uses sparse dictionaries for the phase data. |
|
73 New accessors are provided to detect if any non-public changeset exists |
|
74 (`hasnonpublicphases`) and get the correponsponding root set |
|
75 (`nonpublicphaseroots`). |
|
76 |
|
77 * The `stdin`, `stdout` and `stderr` attributes of the `mercurial.pycompat` |
|
78 module were removed. Instead, the attributes of same name from the |
|
79 `mercurial.utils.procutil` module should be used, which provide more |
|
80 consistent behavior across Python versions and platforms. |
|