relnotes/5.4
author Raphaël Gomès <rgomes@octobus.net>
Mon, 12 Jun 2023 16:51:08 +0200
changeset 50695 1c31b343e514
parent 44781 f445a4f7e8a7
permissions -rw-r--r--
match: add `filepath:` pattern to match an exact filepath relative to the root It's useful in certain automated workflows to make sure we recurse in directories whose name conflicts with files in other revisions. In addition it makes it possible to avoid building a potentially costly regex, improving performance when the set of files to match explicitly is large. The benchmark below are run in the following configuration : # data-env-vars.name = mozilla-central-2018-08-01-zstd-sparse-revlog # benchmark.name = files # benchmark.variants.rev = tip # benchmark.variants.files = all-list-filepath-sorted # bin-env-vars.hg.flavor = no-rust It also includes timings using the re2 engine (through the `google-re2` module) to show how much can be saved by just using a better regexp engine. Pattern time (seconds) time using re2 ----------------------------------------------------------- just "." 0.4 0.4 list of "filepath:…" 1.3 1.3 list of "path:…" 25.7 3.9 list of patterns 29.7 10.4 As you can see, Without re2, using "filepath:" instead of "path:" is a huge win. With re2, it is still about three times faster to not have to build the regex.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
42298
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
44335
9f8eddd2723f purge: add -i flag to delete ignored files instead of untracked files
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents: 44269
diff changeset
     3
 * `hg purge`/`hg clean` can now delete ignored files instead of
9f8eddd2723f purge: add -i flag to delete ignored files instead of untracked files
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents: 44269
diff changeset
     4
   untracked files, with the new -i flag.
42336
604c086ddde6 log: add config for making `hg log -G` always topo-sorted
Martin von Zweigbergk <martinvonz@google.com>
parents: 42298
diff changeset
     5
44555
bd7b2c8d06cc pull: add `--confirm` flag to confirm before writing changes
Pulkit Goyal <7895pulkit@gmail.com>
parents: 44457
diff changeset
     6
 * `hg pull` now has a `--confirm` flag to prompt before applying changes.
bd7b2c8d06cc pull: add `--confirm` flag to confirm before writing changes
Pulkit Goyal <7895pulkit@gmail.com>
parents: 44457
diff changeset
     7
   Config option `pull.confirm` is also added for that.
bd7b2c8d06cc pull: add `--confirm` flag to confirm before writing changes
Pulkit Goyal <7895pulkit@gmail.com>
parents: 44457
diff changeset
     8
44379
14d0e89520a2 graphlog: use '%' for other context in merge conflict
Martin von Zweigbergk <martinvonz@google.com>
parents: 44377
diff changeset
     9
 * `hg log` now defaults to using an '%' symbol for commits involved
14d0e89520a2 graphlog: use '%' for other context in merge conflict
Martin von Zweigbergk <martinvonz@google.com>
parents: 44377
diff changeset
    10
    in unresolved merge conflicts. That includes unresolved conflicts
14d0e89520a2 graphlog: use '%' for other context in merge conflict
Martin von Zweigbergk <martinvonz@google.com>
parents: 44377
diff changeset
    11
    caused by e.g. `hg update --merge` and `hg graft`. '@' still takes
14d0e89520a2 graphlog: use '%' for other context in merge conflict
Martin von Zweigbergk <martinvonz@google.com>
parents: 44377
diff changeset
    12
    precedence, so what used to be marked '@' still is.
14d0e89520a2 graphlog: use '%' for other context in merge conflict
Martin von Zweigbergk <martinvonz@google.com>
parents: 44377
diff changeset
    13
14d0e89520a2 graphlog: use '%' for other context in merge conflict
Martin von Zweigbergk <martinvonz@google.com>
parents: 44377
diff changeset
    14
 * New `conflictlocal()` and `conflictother()` revsets return the
44377
8561ad49915d revset: add a revset for parents in merge state
Martin von Zweigbergk <martinvonz@google.com>
parents: 44335
diff changeset
    15
   commits that are being merged, when there are conflicts. Also works
8561ad49915d revset: add a revset for parents in merge state
Martin von Zweigbergk <martinvonz@google.com>
parents: 44335
diff changeset
    16
   for conflicts caused by e.g. `hg graft`.
8561ad49915d revset: add a revset for parents in merge state
Martin von Zweigbergk <martinvonz@google.com>
parents: 44335
diff changeset
    17
44398
8be0c63535b5 copy: add option to unmark file as copied
Martin von Zweigbergk <martinvonz@google.com>
parents: 44381
diff changeset
    18
 * `hg copy --forget` can be used to unmark a file as copied.
8be0c63535b5 copy: add option to unmark file as copied
Martin von Zweigbergk <martinvonz@google.com>
parents: 44381
diff changeset
    19
44422
a6fb134bd086 revlog-compression: release note entry for update the config to be a list
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44406
diff changeset
    20
 * The `format.revlog-compression` configuration entry now accept a list. The
a6fb134bd086 revlog-compression: release note entry for update the config to be a list
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44406
diff changeset
    21
   first available option will be used. for example setting::
a6fb134bd086 revlog-compression: release note entry for update the config to be a list
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44406
diff changeset
    22
a6fb134bd086 revlog-compression: release note entry for update the config to be a list
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44406
diff changeset
    23
     [format]
a6fb134bd086 revlog-compression: release note entry for update the config to be a list
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44406
diff changeset
    24
     revlog-compression=zstd, zlib
a6fb134bd086 revlog-compression: release note entry for update the config to be a list
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44406
diff changeset
    25
a6fb134bd086 revlog-compression: release note entry for update the config to be a list
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44406
diff changeset
    26
   Will use `zstd` compression for new repositories is available, and will
a6fb134bd086 revlog-compression: release note entry for update the config to be a list
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44406
diff changeset
    27
   simply fall back to `zlib` if not.
a6fb134bd086 revlog-compression: release note entry for update the config to be a list
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44406
diff changeset
    28
44427
acbfa31cfaf2 debugmergestate: make templated
Martin von Zweigbergk <martinvonz@google.com>
parents: 44423
diff changeset
    29
 * `hg debugmergestate` output is now templated, which may be useful
acbfa31cfaf2 debugmergestate: make templated
Martin von Zweigbergk <martinvonz@google.com>
parents: 44423
diff changeset
    30
   e.g. for IDEs that want to help the user resolve merge conflicts.
acbfa31cfaf2 debugmergestate: make templated
Martin von Zweigbergk <martinvonz@google.com>
parents: 44423
diff changeset
    31
acbfa31cfaf2 debugmergestate: make templated
Martin von Zweigbergk <martinvonz@google.com>
parents: 44423
diff changeset
    32
44401
9dab3fa64325 copy: add experimental support for marking committed copies
Martin von Zweigbergk <martinvonz@google.com>
parents: 44399
diff changeset
    33
== New Experimental Features ==
44377
8561ad49915d revset: add a revset for parents in merge state
Martin von Zweigbergk <martinvonz@google.com>
parents: 44335
diff changeset
    34
44401
9dab3fa64325 copy: add experimental support for marking committed copies
Martin von Zweigbergk <martinvonz@google.com>
parents: 44399
diff changeset
    35
 * `hg copy` now supports a `--at-rev` argument to mark files as
9dab3fa64325 copy: add experimental support for marking committed copies
Martin von Zweigbergk <martinvonz@google.com>
parents: 44399
diff changeset
    36
   copied in the specified commit. It only works with `--after` for
9dab3fa64325 copy: add experimental support for marking committed copies
Martin von Zweigbergk <martinvonz@google.com>
parents: 44399
diff changeset
    37
   now (i.e., it's only useful for marking files copied using non-hg
9dab3fa64325 copy: add experimental support for marking committed copies
Martin von Zweigbergk <martinvonz@google.com>
parents: 44399
diff changeset
    38
   `cp` as copied).
42336
604c086ddde6 log: add config for making `hg log -G` always topo-sorted
Martin von Zweigbergk <martinvonz@google.com>
parents: 42298
diff changeset
    39
44399
7c4b98a4e536 copy: add experimetal support for unmarking committed copies
Martin von Zweigbergk <martinvonz@google.com>
parents: 44398
diff changeset
    40
 * Use `hg copy --forget --at-rev REV` to unmark already committed
7c4b98a4e536 copy: add experimetal support for unmarking committed copies
Martin von Zweigbergk <martinvonz@google.com>
parents: 44398
diff changeset
    41
   copies.
7c4b98a4e536 copy: add experimetal support for unmarking committed copies
Martin von Zweigbergk <martinvonz@google.com>
parents: 44398
diff changeset
    42
42298
0ed293a3f00e releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
    43
== Bug Fixes  ==
0ed293a3f00e releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
    44
44404
edaae3616ba3 bookmarks: avoid traceback when two pushes race to delete the same bookmark
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents: 44403
diff changeset
    45
 * Fix server exception when concurrent pushes delete the same bookmark
42298
0ed293a3f00e releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
    46
44423
efd73cdcfbac relnotes: move entry to the right spot
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents: 44422
diff changeset
    47
 * Prevent pushes of divergent bookmarks (foo@remote)
efd73cdcfbac relnotes: move entry to the right spot
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents: 44422
diff changeset
    48
44439
edc8504bc26b exchange: turn on option that makes concurrent pushes work better
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents: 44429
diff changeset
    49
 * The push error "remote repository changed while pushing - please
edc8504bc26b exchange: turn on option that makes concurrent pushes work better
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents: 44429
diff changeset
    50
   try again" now only happens when a concurrent push changed related
edc8504bc26b exchange: turn on option that makes concurrent pushes work better
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents: 44429
diff changeset
    51
   heads (instead of when a concurrent pushed any revision).
edc8504bc26b exchange: turn on option that makes concurrent pushes work better
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents: 44429
diff changeset
    52
edc8504bc26b exchange: turn on option that makes concurrent pushes work better
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents: 44429
diff changeset
    53
42298
0ed293a3f00e releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
    54
== Backwards Compatibility Changes ==
0ed293a3f00e releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
    55
44381
9c9cfecd4600 rebase: don't use rebased node as dirstate p2 (BC)
Martin von Zweigbergk <martinvonz@google.com>
parents: 44379
diff changeset
    56
 * When `hg rebase` pauses for merge conflict resolution, the working
9c9cfecd4600 rebase: don't use rebased node as dirstate p2 (BC)
Martin von Zweigbergk <martinvonz@google.com>
parents: 44379
diff changeset
    57
   copy will no longer have the rebased node as a second parent. You
9c9cfecd4600 rebase: don't use rebased node as dirstate p2 (BC)
Martin von Zweigbergk <martinvonz@google.com>
parents: 44379
diff changeset
    58
   can use the new `conflictparents()` revset for finding the other
9c9cfecd4600 rebase: don't use rebased node as dirstate p2 (BC)
Martin von Zweigbergk <martinvonz@google.com>
parents: 44379
diff changeset
    59
   parent during a conflict.
9c9cfecd4600 rebase: don't use rebased node as dirstate p2 (BC)
Martin von Zweigbergk <martinvonz@google.com>
parents: 44379
diff changeset
    60
44566
f63598aa1c4b rebase: accept multiple --base arguments (BC)
Martin von Zweigbergk <martinvonz@google.com>
parents: 44565
diff changeset
    61
 * `hg rebase` now accepts repeated `--source` and `--base`
f63598aa1c4b rebase: accept multiple --base arguments (BC)
Martin von Zweigbergk <martinvonz@google.com>
parents: 44565
diff changeset
    62
   arguments. For example, `hg rebase --source 'A + B'` is equivalent
f63598aa1c4b rebase: accept multiple --base arguments (BC)
Martin von Zweigbergk <martinvonz@google.com>
parents: 44565
diff changeset
    63
   to `hg rebase --source A --source B`. This is a
f63598aa1c4b rebase: accept multiple --base arguments (BC)
Martin von Zweigbergk <martinvonz@google.com>
parents: 44565
diff changeset
    64
   backwards-incompatible change because it will break overriding an
f63598aa1c4b rebase: accept multiple --base arguments (BC)
Martin von Zweigbergk <martinvonz@google.com>
parents: 44565
diff changeset
    65
   alias `myrebase = rebase --source A` by `hg myrebase --source B`
f63598aa1c4b rebase: accept multiple --base arguments (BC)
Martin von Zweigbergk <martinvonz@google.com>
parents: 44565
diff changeset
    66
   (it will now rebase `(A + B)::` instead of `B::`).
44565
05654ea5137c rebase: accept multiple --source arguments (BC)
Martin von Zweigbergk <martinvonz@google.com>
parents: 44555
diff changeset
    67
44403
815c63526d1d relnotes: add entry about previous `hg recover` change
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents: 44401
diff changeset
    68
 * `hg recover` does not verify the validity of the whole repository
815c63526d1d relnotes: add entry about previous `hg recover` change
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents: 44401
diff changeset
    69
   anymore. You can pass `--verify` or call `hg verify` if necessary.
42948
c2676b5a9f59 narrow: don't hexify paths and double-hexify known nodes on wire (BC)
Martin von Zweigbergk <martinvonz@google.com>
parents: 42939
diff changeset
    70
44427
acbfa31cfaf2 debugmergestate: make templated
Martin von Zweigbergk <martinvonz@google.com>
parents: 44423
diff changeset
    71
 * `hg debugmergestate` output format changed. Let us know if that is
acbfa31cfaf2 debugmergestate: make templated
Martin von Zweigbergk <martinvonz@google.com>
parents: 44423
diff changeset
    72
   causing you problems and we'll roll it back.
acbfa31cfaf2 debugmergestate: make templated
Martin von Zweigbergk <martinvonz@google.com>
parents: 44423
diff changeset
    73
44457
6a34e438461b commit: clear resolved mergestate even if working copy is clean
Martin von Zweigbergk <martinvonz@google.com>
parents: 44454
diff changeset
    74
 * Resolved merge conflicts are now cleared by `hg commit` even if the
6a34e438461b commit: clear resolved mergestate even if working copy is clean
Martin von Zweigbergk <martinvonz@google.com>
parents: 44454
diff changeset
    75
   working copy has no changes.
6a34e438461b commit: clear resolved mergestate even if working copy is clean
Martin von Zweigbergk <martinvonz@google.com>
parents: 44454
diff changeset
    76
44427
acbfa31cfaf2 debugmergestate: make templated
Martin von Zweigbergk <martinvonz@google.com>
parents: 44423
diff changeset
    77
42298
0ed293a3f00e releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
    78
== Internal API Changes ==
0ed293a3f00e releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
    79
44239
df2162672d24 progress: delete deprecated ui.progress()
Martin von Zweigbergk <martinvonz@google.com>
parents: 44133
diff changeset
    80
 * The deprecated `ui.progress()` has now been deleted. Please use
df2162672d24 progress: delete deprecated ui.progress()
Martin von Zweigbergk <martinvonz@google.com>
parents: 44133
diff changeset
    81
   `ui.makeprogress()` instead.
44253
bd4f666b55a7 merge: drop now-unused "abort" argument from hg.merge()
Martin von Zweigbergk <martinvonz@google.com>
parents: 44239
diff changeset
    82
44454
2f290136b7d6 merge: make hg.merge() take a context instead of a node
Martin von Zweigbergk <martinvonz@google.com>
parents: 44439
diff changeset
    83
 * `hg.merge()` now takes a `ctx` instead of the previous `repo` and
2f290136b7d6 merge: make hg.merge() take a context instead of a node
Martin von Zweigbergk <martinvonz@google.com>
parents: 44439
diff changeset
    84
   `node` arguments.
2f290136b7d6 merge: make hg.merge() take a context instead of a node
Martin von Zweigbergk <martinvonz@google.com>
parents: 44439
diff changeset
    85
44253
bd4f666b55a7 merge: drop now-unused "abort" argument from hg.merge()
Martin von Zweigbergk <martinvonz@google.com>
parents: 44239
diff changeset
    86
 * `hg.merge()` has lost its `abort` argument. Please call
bd4f666b55a7 merge: drop now-unused "abort" argument from hg.merge()
Martin von Zweigbergk <martinvonz@google.com>
parents: 44239
diff changeset
    87
   `hg.abortmerge()` directly instead.
44269
d4c1501225c4 cmdutil: change check_incompatible_arguments() *arg to single iterable
Martin von Zweigbergk <martinvonz@google.com>
parents: 44253
diff changeset
    88
44429
ddbc296a1f48 merge: drop redundant mergeforce argument from hg.merge()
Martin von Zweigbergk <martinvonz@google.com>
parents: 44427
diff changeset
    89
 * `hg.merge()` has lost its `mergeforce` argument. It should have
ddbc296a1f48 merge: drop redundant mergeforce argument from hg.merge()
Martin von Zweigbergk <martinvonz@google.com>
parents: 44427
diff changeset
    90
   only ever been called with the same value as the `force` argument.
ddbc296a1f48 merge: drop redundant mergeforce argument from hg.merge()
Martin von Zweigbergk <martinvonz@google.com>
parents: 44427
diff changeset
    91
44269
d4c1501225c4 cmdutil: change check_incompatible_arguments() *arg to single iterable
Martin von Zweigbergk <martinvonz@google.com>
parents: 44253
diff changeset
    92
 * The `*others` argument of `cmdutil.check_incompatible_arguments()`
d4c1501225c4 cmdutil: change check_incompatible_arguments() *arg to single iterable
Martin von Zweigbergk <martinvonz@google.com>
parents: 44253
diff changeset
    93
   changed from being varargs argument to being a single collection.