relnotes/next
author Arun Kulshreshtha <akulshreshtha@janestreet.com>
Tue, 30 Aug 2022 15:29:55 -0400
changeset 49491 c6a1beba27e9
parent 49423 a974c52fb79a
child 49530 4e70efd5fd0e
child 49577 53e4f44ba0e8
permissions -rw-r--r--
bisect: avoid copying ancestor list for non-merge commits During a bisection, hg needs to compute a list of all ancestors for every candidate commit. This is accomplished via a bottom-up traversal of the set of candidates, during which each revision's ancestor list is populated using the ancestor list of its parent(s). Previously, this involved copying the entire list, which could be very long in if the bisection range was large. To help improve this, we can observe that each candidate commit is visited exactly once, at which point its ancestor list is copied into its children's lists and then dropped. In the case of non-merge commits, a commit's ancestor list consists exactly of its parent's list plus itself. This means that we can trivially reuse the parent's existing list for one of its non-merge children, which avoids copying entirely if that commit is the parent's only child. This makes bisections over linear ranges of commits much faster. During some informal testing in the large publicly-available `mozilla-central` repository, this noticeably sped up bisections over large ranges of history: Setup: $ cd mozilla-central $ hg bisect --reset $ hg bisect --good 0 $ hg log -r tip -T '{rev}\n' 628417 Test: $ time hg bisect --bad tip --noupdate Before: real 3m35.927s user 3m35.553s sys 0m0.319s After: real 1m41.142s user 1m40.810s sys 0m0.285s
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
48804
f0081a551f37 relnotes: add 6.1
Raphaël Gomès <rgomes@octobus.net>
parents: 48669
diff changeset
     1
= Mercurial XXX =
f0081a551f37 relnotes: add 6.1
Raphaël Gomès <rgomes@octobus.net>
parents: 48669
diff changeset
     2
42271
0ed293a3f00e releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
     3
== New Features ==
48242
4d2ab365699e bookmarks: move the `mirror` option to the `paths` section
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48017
diff changeset
     4
46999
035c06f9fddf relnode: document the move to `zstd` as default compression
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46998
diff changeset
     5
== Default Format Change ==
035c06f9fddf relnode: document the move to `zstd` as default compression
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46998
diff changeset
     6
48804
f0081a551f37 relnotes: add 6.1
Raphaël Gomès <rgomes@octobus.net>
parents: 48669
diff changeset
     7
These changes affect newly created repositories (or new clones) done with
f0081a551f37 relnotes: add 6.1
Raphaël Gomès <rgomes@octobus.net>
parents: 48669
diff changeset
     8
Mercurial XXX.
47000
c3eee5ad1de9 relnote: document the use of persistent-nodemap by default for Rust build
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46999
diff changeset
     9
44367
9dab3fa64325 copy: add experimental support for marking committed copies
Martin von Zweigbergk <martinvonz@google.com>
parents: 44365
diff changeset
    10
== New Experimental Features ==
44343
8561ad49915d revset: add a revset for parents in merge state
Martin von Zweigbergk <martinvonz@google.com>
parents: 44289
diff changeset
    11
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
    12
== 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
    13
42271
0ed293a3f00e releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
    14
== Backwards Compatibility Changes ==
0ed293a3f00e releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
    15
49423
a974c52fb79a relnotes: mention chg behavior change when given --cwd
Arun Kulshreshtha <akulshreshtha@janestreet.com>
parents: 48804
diff changeset
    16
 * chg worker processes will now correctly load per-repository configuration 
a974c52fb79a relnotes: mention chg behavior change when given --cwd
Arun Kulshreshtha <akulshreshtha@janestreet.com>
parents: 48804
diff changeset
    17
   when given a both a relative `--repository` path and an alternate working
a974c52fb79a relnotes: mention chg behavior change when given --cwd
Arun Kulshreshtha <akulshreshtha@janestreet.com>
parents: 48804
diff changeset
    18
   directory via `--cwd`. A side-effect of this change is that these workers
a974c52fb79a relnotes: mention chg behavior change when given --cwd
Arun Kulshreshtha <akulshreshtha@janestreet.com>
parents: 48804
diff changeset
    19
   will now return an error if hg cannot find the current working directory,
a974c52fb79a relnotes: mention chg behavior change when given --cwd
Arun Kulshreshtha <akulshreshtha@janestreet.com>
parents: 48804
diff changeset
    20
   even when a different directory is specified via `--cwd`.
a974c52fb79a relnotes: mention chg behavior change when given --cwd
Arun Kulshreshtha <akulshreshtha@janestreet.com>
parents: 48804
diff changeset
    21
42271
0ed293a3f00e releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
    22
== Internal API Changes ==
0ed293a3f00e releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
    23
48804
f0081a551f37 relnotes: add 6.1
Raphaël Gomès <rgomes@octobus.net>
parents: 48669
diff changeset
    24
== Miscellaneous ==