Mercurial 5.4 (2020-04-16)#
Mercurial 5.4 release#
This is an overview of the 5.4 release.
New Features#
- hg purge/- hg cleancan now delete ignored files instead of untracked files, with the new -i flag.
- hg pullnow has a- --confirmflag to prompt before applying changes. Config option- pull.confirmis also added for that.
- hg lognow defaults to using an ‘%’ symbol for commits involved in unresolved merge conflicts. That includes unresolved conflicts caused by e.g.- hg update --mergeand- 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 --forgetcan be used to unmark a file as copied.
- The - format.revlog-compressionconfiguration 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 debugmergestateoutput is now templated, which may be useful e.g. for IDEs that want to help the user resolve merge conflicts.
New Experimental Features#
- hg copynow supports a- --at-revargument to mark files as copied in the specified commit. It only works with- --afterfor now (i.e., it’s only useful for marking files copied using non-hg- cpas copied).
- Use - hg copy --forget --at-rev REVto 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 rebasepauses 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 rebasenow accepts repeated- --sourceand- --basearguments. 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 recoverdoes not verify the validity of the whole repository anymore. You can pass- --verifyor call- hg verifyif necessary.
- hg debugmergestateoutput 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 commiteven 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- ctxinstead of the previous- repoand- nodearguments.
- hg.merge()has lost its- abortargument. Please call- hg.abortmerge()directly instead.
- hg.merge()has lost its- mergeforceargument. It should have only ever been called with the same value as the- forceargument.
- The - *othersargument of- cmdutil.check_incompatible_arguments()changed from being varargs argument to being a single collection.