relnotes/5.9
author Arun Kulshreshtha <akulshreshtha@janestreet.com>
Tue, 30 Aug 2022 15:29:55 -0400
changeset 49491 c6a1beba27e9
parent 48300 809e780c72e5
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:
47977
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
     1
== New Features ==
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
     2
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
     3
 * `hg config` now has a `--source` option to show where each
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
     4
   configuration value comes from.
48300
809e780c72e5 relnotes: fix wrong command name in 5.9 relnotes
Raphaël Gomès <rgomes@octobus.net>
parents: 48285
diff changeset
     5
 * Introduced a command (debug-repair-issue6528) to repair repositories affected
47977
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
     6
   by issue6528 where certain files would show up as modified even if they were
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
     7
   clean due to an issue in the copy-tracing code.
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
     8
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
     9
== Default Format Change ==
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    10
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    11
These changes affect newly created repositories (or new clone) done with
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    12
Mercurial 5.9.
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    13
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    14
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    15
== New Experimental Features ==
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    16
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    17
 * A `changelogv2` format has been introduced. It is not ready for use yet, but
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    18
   will be used later to address some of the weaknesses of the current revlog
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    19
   format.
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    20
 * Initial experiment and support for `dirstatev2`, a new dirstate format that
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    21
   addresses some of the weaknesses of the current dirstate format. Python + C
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    22
   and Rust support are being implemented, but the Rust solution is the one
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    23
   currently getting the attention for performance.
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    24
 * Initial support for `rhg status`. `rhg` is the Rust wrapper executable for hg
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    25
   that shortcuts some commands for faster execution speed.
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    26
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    27
== Bug Fixes ==
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    28
48285
6ee0244fc1cf relnotes: update release notes for upcoming 5.9.3
Raphaël Gomès <rgomes@octobus.net>
parents: 47977
diff changeset
    29
 * Fixed committing empty files with `narrow`
6ee0244fc1cf relnotes: update release notes for upcoming 5.9.3
Raphaël Gomès <rgomes@octobus.net>
parents: 47977
diff changeset
    30
 * Allow overriding `pip`'s pep517 compliance to build C or Rust extensions
6ee0244fc1cf relnotes: update release notes for upcoming 5.9.3
Raphaël Gomès <rgomes@octobus.net>
parents: 47977
diff changeset
    31
 * Fixed regression on outgoing email when not specifying revisions
6ee0244fc1cf relnotes: update release notes for upcoming 5.9.3
Raphaël Gomès <rgomes@octobus.net>
parents: 47977
diff changeset
    32
 * Fixed a regression causing bookmarks to disappear when using Rust persistent nodemap
47977
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    33
 * Fixed a regression (in 5.9.1) introduced in 5.9 when cloning repos with
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    34
   deep filenames
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    35
 * Fixed detection of directories becoming symlinks, but only when using the
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    36
   Rust extensions.
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    37
 * Fixed ignore and include not composing in the Rust status
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    38
 * `hg commit --interactive` now handles deselecting edits of a rename
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    39
 * Fixed a case where `hg evolve` gives different results when interrupted
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    40
 * Fixed a memory leak in phases computation
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    41
 * `histedit` and `shelve` don't swallow errors when updating the working copy
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    42
   anymore
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    43
 * Improve error message when detecting content-divergence with a hidden
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    44
   common predecessor
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    45
 * No longer re-order parents in filelog, see issue6533
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    46
 * Fix revisions affected by issue6533 on the fly during exchange
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    47
 * Many Windows fixes for stability and py3 compatibility improvements
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    48
 * Many other miscellaneous fixes
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    49
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    50
== Backwards Compatibility Changes ==
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    51
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    52
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    53
== Internal API Changes ==
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    54
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    55
The Dirstate API have been updated as the previous function leaked some
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    56
internal details and did not distinguish between two important cases: "We are
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    57
changing parent and need to adjust the dirstate" and "some command is changing
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    58
which file is tracked". To clarify the situation:
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    59
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    60
* the following functions have been deprecated,
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    61
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    62
  - `dirstate.add`,
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    63
  - `dirstate.normal`,
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    64
  - `dirstate.normallookup`,
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    65
  - `dirstate.merge`,
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    66
  - `dirstate.otherparent`,
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    67
  - `dirstate.remove`,
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    68
  - `dirstate.drop`,
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    69
  - `dirstateitem.__getitem__`,
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    70
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    71
* these new functions are added for the "adjusting parents" use-case:
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    72
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    73
  - `dirstate.update_file`,
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    74
  - `dirstate.update_file_p1`,
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    75
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    76
* these new function are added for the "adjusting wc file" use-case":
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    77
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    78
  - `dirstate.set_tracked`,
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    79
  - `dirstate.set_untracked`,
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    80
  - `dirstate.set_clean`,
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    81
  - `dirstate.set_possibly_dirty`,
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    82
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    83
See inline documentation of the new functions for details.
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    84
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    85
* Additionally, the following have been deprecated:
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    86
  - `urlutil.getpath` function
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    87
  - `localrepository.updatecaches`' `full` argument
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    88
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    89
* The following have been removed:
4a3de491e77b relnotes: add release notes for 5.9
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
    90
  - `revlog.revlogio` has been removed