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 optionpull.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 --mergeandhg graft. ‘@’ still takes precedence, so what used to be marked ‘@’ still is.New
conflictlocal()andconflictother()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-hgcpas 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 newconflictparents()revset for finding the other parent during a conflict.hg rebasenow accepts repeated--sourceand--basearguments. For example,hg rebase --source 'A + B'is equivalent tohg 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 callhg 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 useui.makeprogress()instead.hg.merge()now takes actxinstead of the previousrepoandnodearguments.hg.merge()has lost itsabortargument. Please callhg.abortmerge()directly instead.hg.merge()has lost itsmergeforceargument. It should have only ever been called with the same value as theforceargument.The
*othersargument ofcmdutil.check_incompatible_arguments()changed from being varargs argument to being a single collection.