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