1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
|
# Mercurial 5.4 (2020-04-16)
## Mercurial 5.4 release
This is an overview of the 5.4 release.
### New Features
- `hg purge`/`hg clean` can now delete ignored files instead of untracked files, with the new -i flag.
- `hg pull` now has a `--confirm` flag to prompt before applying changes. Config option `pull.confirm` is also added for that.
- `hg log` now defaults to using an '%' symbol for commits involved in unresolved merge conflicts. That includes unresolved conflicts caused by e.g. `hg update --merge` and `hg graft`. '@' still takes precedence, so what used to be marked '@' still is.
- New `conflictlocal()` and `conflictother()` revsets return the commits that are being merged, when there are conflicts. Also works for conflicts caused by e.g. `hg graft`.
- `hg copy --forget` can be used to unmark a file as copied.
- The `format.revlog-compression` configuration entry now accept a list. The first available option will be used. for example setting:
{{{
[format]
revlog-compression=zstd, zlib
}}}
Will use `zstd` compression for new repositories if available, and will simply fall back to `zlib` if not.
- `hg debugmergestate` output is now templated, which may be useful e.g. for IDEs that want to help the user resolve merge conflicts.
### New Experimental Features
- `hg copy` now supports a `--at-rev` argument to mark files as copied in the specified commit. It only works with `--after` for now (i.e., it's only useful for marking files copied using non-hg `cp` as copied).
- Use `hg copy --forget --at-rev REV` to unmark already committed copies.
### Bug Fixes
- Fix server exception when concurrent pushes delete the same bookmark
- Prevent pushes of divergent bookmarks (foo@remote)
- The push error "remote repository changed while pushing - please try again" now only happens when a concurrent push changed related heads (instead of when a concurrent pushed any revision).
### Backwards Compatibility Changes
- When `hg rebase` pauses for merge conflict resolution, the working copy will no longer have the rebased node as a second parent. You can use the new `conflictparents()` revset for finding the other parent during a conflict.
- `hg rebase` now accepts repeated `--source` and `--base` arguments. For example, `hg rebase --source 'A + B'` is equivalent to `hg rebase --source A --source B`.
This is a backwards-incompatible change because it will break overriding an alias `myrebase = rebase --source A` by `hg myrebase --source B` (it will now rebase `(A + B)::` instead of `B::`).
- `hg recover` does not verify the validity of the whole repository anymore. You can pass `--verify` or call `hg verify` if necessary.
- `hg debugmergestate` output format changed. Let us know if that is causing you problems and we'll roll it back.
- Resolved merge conflicts are now cleared by `hg commit` even if the working copy has no changes.
### Internal API Changes
- The deprecated `ui.progress()` has now been deleted. Please use `ui.makeprogress()` instead.
- `hg.merge()` now takes a `ctx` instead of the previous `repo` and `node` arguments.
- `hg.merge()` has lost its `abort` argument. Please call `hg.abortmerge()` directly instead.
- `hg.merge()` has lost its `mergeforce` argument. It should have only ever been called with the same value as the `force` argument.
- The `*others` argument of `cmdutil.check_incompatible_arguments()` changed from being varargs argument to being a single collection.
|