relnotes/next
author Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
Thu, 13 Feb 2020 22:51:17 -0500
changeset 44372 8407031f195f
parent 44370 edaae3616ba3
child 44391 a6fb134bd086
permissions -rw-r--r--
bookmarks: prevent pushes of divergent bookmarks (foo@remote) Before this change, such bookmarks are write-only: a client can push them but not pull/read them. And because these bookmark can't be read, even pushes are limited (for instance trying to delete such a bookmark fails with a vanilla client because the client thinks the bookmark is neither on the local nor the remote). This change makes the server refuses such bookmarks, and for earlier errors, makes the client refuse to send them. I think the change of behavior is acceptable because I think this is a bug in push/pull, and I don't think we change the behavior of `hg unbundle`, because it doesn't seem that `hg bundle` ever store bookmarks (and even if it did, it would seem weird anyway to try to send divergent bookmarks). Differential Revision: https://phab.mercurial-scm.org/D8117

== New Features ==

 * `hg purge`/`hg clean` can now delete ignored files instead of
   untracked files, with the new -i flag.

 * `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.

== 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.

 * prevent pushes of divergent bookmarks (foo@remote)

== Bug Fixes  ==

 * Fix server exception when concurrent pushes delete the same bookmark

== 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 recover` does not verify the validity of the whole repository
   anymore. You can pass `--verify` or call `hg verify` if necessary.

== Internal API Changes ==

 * The deprecated `ui.progress()` has now been deleted. Please use
   `ui.makeprogress()` instead.

 * `hg.merge()` has lost its `abort` argument. Please call
   `hg.abortmerge()` directly instead.

 * The `*others` argument of `cmdutil.check_incompatible_arguments()`
   changed from being varargs argument to being a single collection.