Mercurial > hg
annotate relnotes/5.5 @ 50942:75d3306fbc9a stable
tags: avoid expensive access to repo.changelog in a loop
repo.changelog needs some cache invalidation when run on filtered repository.
Accessing it in that loop can be expensive when there is many heads (e.g.
mozilla try and it 25 000 heads).
Note that the loop itself seems useless, but after this patch it no longer take
about ⅛ of the time we spend computing cache for mozilla try.
before :
! wall 0.350994 comb 0.350000 user 0.330000 sys 0.020000 (median of 28)
after :
! wall 0.319520 comb 0.310000 user 0.290000 sys 0.020000 (median of 30)
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Wed, 21 Jun 2023 21:57:44 +0200 |
parents | 53a6febafc66 |
children |
rev | line source |
---|---|
42271
0ed293a3f00e
releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
1 == New Features == |
0ed293a3f00e
releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
2 |
45062
72feaeb510b3
clonebundles: optional memory-requirement attribution
Joerg Sonnenberger <joerg@bec.de>
parents:
44996
diff
changeset
|
3 * clonebundles can be annotated with the expected memory requirements |
72feaeb510b3
clonebundles: optional memory-requirement attribution
Joerg Sonnenberger <joerg@bec.de>
parents:
44996
diff
changeset
|
4 using the `REQUIREDRAM` option. This allows clients to skip |
72feaeb510b3
clonebundles: optional memory-requirement attribution
Joerg Sonnenberger <joerg@bec.de>
parents:
44996
diff
changeset
|
5 bundles created with large zstd windows and fallback to larger, but |
72feaeb510b3
clonebundles: optional memory-requirement attribution
Joerg Sonnenberger <joerg@bec.de>
parents:
44996
diff
changeset
|
6 less demanding bundles. |
44396
acbfa31cfaf2
debugmergestate: make templated
Martin von Zweigbergk <martinvonz@google.com>
parents:
44392
diff
changeset
|
7 |
45169 | 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 | |
45189
045f5361bd12
relnotes: make spacing before new section consistent
Manuel Jacob <me@manueljacob.de>
parents:
45169
diff
changeset
|
14 |
44367
9dab3fa64325
copy: add experimental support for marking committed copies
Martin von Zweigbergk <martinvonz@google.com>
parents:
44365
diff
changeset
|
15 == New Experimental Features == |
44343
8561ad49915d
revset: add a revset for parents in merge state
Martin von Zweigbergk <martinvonz@google.com>
parents:
44289
diff
changeset
|
16 |
44905
f330d6117a5b
relnotes: advertize the possibility to use rust
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
44893
diff
changeset
|
17 * The core of some hg operations have been (and are being) |
f330d6117a5b
relnotes: advertize the possibility to use rust
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
44893
diff
changeset
|
18 implemented in rust, for speed. `hg status` on a repository with |
f330d6117a5b
relnotes: advertize the possibility to use rust
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
44893
diff
changeset
|
19 300k tracked files goes from 1.8s to 0.6s for instance. |
f330d6117a5b
relnotes: advertize the possibility to use rust
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
44893
diff
changeset
|
20 This has currently been tested only on linux, and does not build on |
f330d6117a5b
relnotes: advertize the possibility to use rust
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
44893
diff
changeset
|
21 windows. See rust/README.rst in the mercurial repository for |
f330d6117a5b
relnotes: advertize the possibility to use rust
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
44893
diff
changeset
|
22 instructions to opt into this. |
44412
edc8504bc26b
exchange: turn on option that makes concurrent pushes work better
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
44398
diff
changeset
|
23 |
45191
fc54f52779dd
relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents:
45190
diff
changeset
|
24 * An experimental config `rewrite.empty-successor` was introduced to control |
fc54f52779dd
relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents:
45190
diff
changeset
|
25 what happens when rewrite operations result in empty changesets. |
fc54f52779dd
relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents:
45190
diff
changeset
|
26 |
fc54f52779dd
relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents:
45190
diff
changeset
|
27 |
fc54f52779dd
relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents:
45190
diff
changeset
|
28 == Bug Fixes == |
fc54f52779dd
relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents:
45190
diff
changeset
|
29 |
fc54f52779dd
relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents:
45190
diff
changeset
|
30 * For the case when connected to a TTY, stdout was fixed to be line-buffered |
fc54f52779dd
relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents:
45190
diff
changeset
|
31 on Python 3 (where it was block-buffered before, causing the process to seem |
fc54f52779dd
relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents:
45190
diff
changeset
|
32 hanging) and Windows on Python 2 (where it was unbuffered before). |
fc54f52779dd
relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents:
45190
diff
changeset
|
33 |
fc54f52779dd
relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents:
45190
diff
changeset
|
34 * Subversion sources of the convert extension were fixed to work on Python 3. |
fc54f52779dd
relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents:
45190
diff
changeset
|
35 |
fc54f52779dd
relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents:
45190
diff
changeset
|
36 * Subversion sources of the convert extension now interpret the encoding of |
fc54f52779dd
relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents:
45190
diff
changeset
|
37 URLs like Subversion. Previously, there were situations where the convert |
fc54f52779dd
relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents:
45190
diff
changeset
|
38 extension recognized a repository as present but Subversion did not, and |
fc54f52779dd
relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents:
45190
diff
changeset
|
39 vice versa. |
fc54f52779dd
relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents:
45190
diff
changeset
|
40 |
fc54f52779dd
relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents:
45190
diff
changeset
|
41 * The empty changeset check of in-memory rebases was fixed to match that of |
fc54f52779dd
relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents:
45190
diff
changeset
|
42 normal rebases (and that of the commit command). |
fc54f52779dd
relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents:
45190
diff
changeset
|
43 |
fc54f52779dd
relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents:
45190
diff
changeset
|
44 * The push command now checks the correct set of outgoing changesets for |
fc54f52779dd
relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents:
45190
diff
changeset
|
45 obsolete and unstable changesets. Previously, it could happen that the check |
fc54f52779dd
relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents:
45190
diff
changeset
|
46 prevented pushing changesets which were already on the server. |
fc54f52779dd
relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents:
45190
diff
changeset
|
47 |
45189
045f5361bd12
relnotes: make spacing before new section consistent
Manuel Jacob <me@manueljacob.de>
parents:
45169
diff
changeset
|
48 |
42271
0ed293a3f00e
releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
49 == Backwards Compatibility Changes == |
0ed293a3f00e
releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
50 |
45190
189030efd7bb
relnotes: fix indentation
Manuel Jacob <me@manueljacob.de>
parents:
45189
diff
changeset
|
51 * Mercurial now requires at least Python 2.7.9 or a Python version that |
189030efd7bb
relnotes: fix indentation
Manuel Jacob <me@manueljacob.de>
parents:
45189
diff
changeset
|
52 backported modern SSL/TLS features (as defined in PEP 466), and that Python |
189030efd7bb
relnotes: fix indentation
Manuel Jacob <me@manueljacob.de>
parents:
45189
diff
changeset
|
53 was compiled against a OpenSSL version supporting TLS 1.1 or TLS 1.2 |
189030efd7bb
relnotes: fix indentation
Manuel Jacob <me@manueljacob.de>
parents:
45189
diff
changeset
|
54 (likely this requires the OpenSSL version to be at least 1.0.1). |
189030efd7bb
relnotes: fix indentation
Manuel Jacob <me@manueljacob.de>
parents:
45189
diff
changeset
|
55 |
189030efd7bb
relnotes: fix indentation
Manuel Jacob <me@manueljacob.de>
parents:
45189
diff
changeset
|
56 * The `hg perfwrite` command from contrib/perf.py was made more flexible and |
189030efd7bb
relnotes: fix indentation
Manuel Jacob <me@manueljacob.de>
parents:
45189
diff
changeset
|
57 changed its default behavior. To get the previous behavior, run `hg perfwrite |
189030efd7bb
relnotes: fix indentation
Manuel Jacob <me@manueljacob.de>
parents:
45189
diff
changeset
|
58 --nlines=100000 --nitems=1 --item='Testing write performance' --batch-line`. |
44996
c2df0bca0dfa
perf: make `hg perfwrite` more flexible
Manuel Jacob <me@manueljacob.de>
parents:
44905
diff
changeset
|
59 |
45191
fc54f52779dd
relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents:
45190
diff
changeset
|
60 * The absorb extension now preserves changesets with no file changes that can |
fc54f52779dd
relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents:
45190
diff
changeset
|
61 be created by the commit command (those which change the branch name |
fc54f52779dd
relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents:
45190
diff
changeset
|
62 compared to the parent and those closing a branch head). |
fc54f52779dd
relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents:
45190
diff
changeset
|
63 |
44396
acbfa31cfaf2
debugmergestate: make templated
Martin von Zweigbergk <martinvonz@google.com>
parents:
44392
diff
changeset
|
64 |
42271
0ed293a3f00e
releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
65 == Internal API Changes == |
0ed293a3f00e
releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
66 |
44853
ba5688e3b3bd
relnotes: add API change note per request in D8502
Augie Fackler <augie@google.com>
parents:
44827
diff
changeset
|
67 * logcmdutil.diffordiffstat() now takes contexts instead of nodes. |
ba5688e3b3bd
relnotes: add API change note per request in D8502
Augie Fackler <augie@google.com>
parents:
44827
diff
changeset
|
68 |
44856
b7808443ed6a
mergestate: split out merge state handling code from main merge module
Augie Fackler <augie@google.com>
parents:
44853
diff
changeset
|
69 * The `mergestate` class along with some related methods and constants have |
b7808443ed6a
mergestate: split out merge state handling code from main merge module
Augie Fackler <augie@google.com>
parents:
44853
diff
changeset
|
70 moved from `mercurial.merge` to a new `mercurial.mergestate` module. |
b7808443ed6a
mergestate: split out merge state handling code from main merge module
Augie Fackler <augie@google.com>
parents:
44853
diff
changeset
|
71 |
45169 | 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`). | |
45191
fc54f52779dd
relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents:
45190
diff
changeset
|
76 |
fc54f52779dd
relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents:
45190
diff
changeset
|
77 * The `stdin`, `stdout` and `stderr` attributes of the `mercurial.pycompat` |
fc54f52779dd
relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents:
45190
diff
changeset
|
78 module were removed. Instead, the attributes of same name from the |
fc54f52779dd
relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents:
45190
diff
changeset
|
79 `mercurial.utils.procutil` module should be used, which provide more |
fc54f52779dd
relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents:
45190
diff
changeset
|
80 consistent behavior across Python versions and platforms. |