changeset 3057:cb8ae3cb0bbc

branching: merge with stable
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Tue, 10 Oct 2017 22:40:41 +0200
parents 774b4ea6ca58 (diff) 9360d7ad7270 (current diff)
children 02b220984b01
files CHANGELOG README hgext3rd/evolve/metadata.py hgext3rd/evolve/templatekw.py hgext3rd/topic/__init__.py tests/test-evolve-templates.t
diffstat 62 files changed, 4127 insertions(+), 2656 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CHANGELOG	Tue Oct 10 22:40:41 2017 +0200
@@ -0,0 +1,609 @@
+Changelog
+=========
+
+6.7.1 -- 2017-10-10
+-------------------
+
+  * obsfate: fix case were current user would disapear from the user list
+
+topic (0.3.1)
+
+  * stack: fix evolution preview for simple split.
+  * fix a performance regression affecting all transactions.
+    (the more non public changeset (hidden included), the slower)
+
+6.7.0 -- 2017-09-27
+-------------------
+
+  * compatibility with change in future 4.4 at this release date,
+  * documentation: improvement to content, wording and graphs,
+  * obslog: improved templatability,
+  * obslog/log: improve verb used to describe and evolution,
+  * pstatus/pdiff: update to full command. They now appears in the help,
+  * uncommit: add a --interactive option (4.3+ only).
+
+topic (0.3.0)
+
+  * push: add a --topic option to mirror --bookmark and --branch,
+  * stack: improve display of interleaved topic,
+  * stack: improve display of merge commit,
+  * topic: add a new 'debugconvertbookmark' commands (4.3+ only),
+    It helps migrating from bookmark feature branch to topic feature branch,
+  * topic: --age flag also shows the user who last touched the topic,
+  * topic: be more informative about topic activation and deactivation,
+  * topic: gain a --current flag,
+  * topic: small clarification and cleanup on various output.
+
+6.6.0 -- 2017-07-25
+-------------------
+
+  - amend: add a --extract flag to move change back to the working copy,
+    (same as uncommit, but accessible through the amend commit)
+  - split: now properly refuse to split public changeset,
+  - commands: unify and improve the pre-rewrite validation and error message,
+  - uncommit: add support for --current-date and --current-user option,
+  - fold: add support for --current-date and --current-user option,
+  - metaedit: add support for --current-date and --current-user option,
+  - split: add support for --current-date and --current-user option,
+  - compat: use various new API instead of the one deprecated in 4.3,
+    (when available)
+  - documentation: various minor documentation update.
+
+topic (0.2.0):
+
+  - topic: add --age option to sort topic by the most recently touched,
+  - topic: add a 't0' to access the root of a topic while keeping it active,
+  - topic: allow 'hg prev' to me move to 't0',
+  - topic: add a config option to enforce topic on new commit,
+    (experimental.enforce-topic)
+  - topic: make command names valid as expected, even if ui.strict=true.
+
+6.5.0 -- 2017-07-02
+-------------------
+
+features:
+
+ - obslog: gain a --patch flag to display changes introduced by the evolution
+  (Currently limited to in simple case only)
+ - log: display obsolescence fate by default, (future 4.3 only)
+ - doc: various minor improvement.
+
+bugfixes:
+
+ - evolve: fix branch preservation for merge,
+ - obsfate: improve support for advanced template reformating,
+ - split: preserve author of the splitted changeset.
+ - grab: properly fix hg executable on windows.
+
+topic (0.1.0):
+
+ - stack: also show the unstable status for the current changeset, (issue5553)
+ - stack: properly abort when and unknown topic is requested,
+ - stack: add basic and raw support for named branches,
+ - topic: changing topic on revs no longer adds extra instability, (issue5441)
+ - topic: topics: rename '--change' flag to '--rev' flag,
+ - topic: multiple large performance improvements,
+ - topic: various small output improvement,
+ - topic: improved topic preservation for various commands.
+
+
+6.4.0 -- 2017-06-16
+-------------------
+
+ - template: signifiant improvement to the '{obsfate}' template (now 4.2+ only)
+ - template: fix 'successors' and 'precursors' template to expose hex-node
+ - effect flag: the experiment is now active by default,
+   (see 'hg help -e evolve' to opt out)
+ - effect flag: fix a small bug related to hidden changeset,
+ - obscache: reduce impact on large repository
+ - obshashrange: install a '.max-revs' option see extension help for details
+
+6.3.1 -- 2017-06-01
+-------------------
+
+ - also backport the "revelant-markers" fix when using "evolve.serveronly"
+
+6.3.0 -- 2017-05-31
+-------------------
+
+ - olog: add an 'obslog' alias
+ - olog: add an '--all' option to show the whole obsolescence history tree.
+ - evolution: add an experiment to track the effect of rewrites.
+   (See hg help - evolve for details)
+ - exchange: fix the "relevant-markers" algorithm to include inline prune.
+   This will impact discovery of obsmarkers between server and client if one
+   still uses the old algorithm. Please upgrade both clients and servers as
+   soon as possible.
+   (See changeset 176d1a0ce385 in core Mercurial for details)
+ - obsdiscovery: add a config flag to disable all obsmarkers discovery
+   (See hg help - evolve for details)
+ - template: add a 'precursors' template that display the closests precursors of changesets
+ - template: add a 'successors' template that display the closests successors of changesets
+ - template: add a 'obsfate' template that display how a changeset has evolved
+ - new discovery experiment: add options to restrict memory consumption on
+   large repository (see "hg help -e evolve" for details).
+ - evolve: fix --rev handling in --list mode
+
+6.2.1 -- 2017-05-23
+-------------------
+
+ - prune: fix a crash related to color handling,
+ - next: fix a crash related to color handling,
+ - discovery: document the 'obshashrange' experiment,
+ - cache: reduce the warming load in case of reset,
+ - cache: add a 'experimental.obshashcache.warm-cache' option to allow
+   disabling post transaction cache warming.
+
+6.2.0 -- 2017-05-18
+-------------------
+
+ - olog: a new command to inspect the obs-history of a changeset (hg-4.0 + only),
+ - topic: have thg display topic name if possible,
+ - blackbox: log more information about discovery and cache computation,
+ - obscache: more efficient update in the (rare) case of a transaction adding
+   markers without changesets,
+ - obscache: fix more cache invalidation propagation,
+ - obscache: also enable the new cache (from 6.1.0) for 'evolve.server-only',
+ - obshashrange-cache: update incrementally in the (common) case of a
+   transaction not affecting existing range,
+ - obshashrange-cache: keep the cache warm after each transaction,
+ - topic: now requires Mercurial 4.0 or above,
+ - stack: now display if current revision is in bad state (issue5533),
+ - stack: fix json output to be valid json.
+
+6.1.0 -- 2017-05-03
+-------------------
+
+ - improve message about obsolete working copy parent,
+ - improve message issued  when accessing hidden nodes (4.2 only),
+ - introduce a new caches to reduce the impact of evolution on read-only commands,
+ - add a 'experimental.auto-publish' config. See `hg help -e evolve` for details.
+ - fix the propagation of some some cache invalidation,
+
+6.0.1 -- 2017-04-20
+-------------------
+
+ - template: adapt to change in 4.2,
+ - fix 'debugrecordpruneparents' (outdated API usage)
+ - checkheads: give priority to updated 4.2 code,
+ - serveronly: fix repository initialization.
+
+6.0.0 -- 2017-03-31
+-------------------
+
+- push: improved detection of obsoleted remote branch (issue4354),
+- drop compatibility for Mercurial < 3.8,
+- removed old (unpackaged) pushexperiment extension,
+- move all extensions in the official 'hgext3rd' namespace package,
+- add the "topic" experimental extensions. See the README.topic file for details
+- officially ship 'evolve.serveronly' extensions. That extensions contains
+  only the part related to exchange and is intended to be used by server.
+
+  Using the extension will enable evolution, use 'experimental.evolution=!'
+  to disable obsmarkers echange.  The old '__temporary__.advertiseobsolete'
+  option is no longer supported.
+
+- a new prototype of obsmarker discovery is available. The prototype is still
+  at early stage and not recommended for production.
+  Examples of current limitations:
+
+  - write access to the repo is highly recommanded for all operation,
+  - large memory footprint,
+  - initial caching is slow,
+  - unusable on large repo (because of various issue pointed earlier),
+  - likely to constains various bugs.
+
+  It can be tested by setting `experimental.obshashrange=1` on both client and
+  server. It is recommanded to get in touch with the evolve maintainer if you
+  decide to test it.
+
+- the 'debugrecordpruneparents' have been moved into the 'evolve.legacy'
+  separate extension. enable that extentions if you need to convert/update
+  markers in an old repository.
+
+5.6.1 -- 2017-02-28
+-------------------
+
+- fix a crash that sometime happened when evolving merges.
+
+5.6.0 -- 2017-02-01
+-------------------
+
+- compatibility with Mercurial 4.1.
+- improvement of prune error message.
+- fold: require --from flag for folding revisions to working copy
+- fix crash when trying to fold an empty revision set (issue5453)
+- uncommit: preserve copy information of remaining files (issue5403)
+
+5.5.0 -- 2016-10-30
+-------------------
+
+- The {obsolete} template now yield "obsolete" or "".
+- compatibility with Mercurial 4.0
+- Fix erroneous manifest computation when solving 'bumped' changeset.
+- split: avoid crash on empty commit (issue5191),
+- next: improve locking to avoid issue with working copy parent (issue5244)
+- prev: improve locking to avoid issue with working copy parent (issue5244)
+- evolve: fix abort suggestion to include '.' in 'hg update -C .'
+
+5.4.1 -- 2016-08-01
+-------------------
+
+ - compat with Mercurial 3.9
+
+5.4.0 -- 2016-05-06
+-------------------
+
+- Some collaboration with the topic experimental extensions,
+  - hg evolve --all with consider all troubles in your current topic,
+  - preserve 'topic' during evolve,
+  - 'next' and 'prev' restrict themself to the current topic by default,
+- remove the dangerous 'kill' alias for 'prune' (because 'hg kill -1' without
+  the leading 'hg' will give you an hardtime)
+- during 'hg evolve' skip unsupported merge instead of aborting
+- various documentation fix and update
+- hg summary now suggest 'hg evolve --continue when appropriate`
+- compatibility with Mercurial 3.8 'hgext' namespace package.
+- small improvement to the `hg split` instruction
+- add a 'metaedit' command to rewrite changeset meta data.
+
+5.3.0 -- 2016-02-11
+-------------------
+
+- split: add a new command to split changesets,
+- tests: drop our copy of 'run-tests.py' use core one instead,
+- bookmark: do all bookmark movement within a transaction.
+- evolve: compatibility with Mercurial 3.7
+- evolve: support merge with a single obsolete parent (hg-3.7+ only)
+- evolve: prevent added file to be marked as unknown if evolve fails (issue4966)
+- evolve: stop relying on graftstate file for save evolve state
+          (for `hg evolve --continue`)
+- evolve: fix divergence resolution when it result in an empty commit
+          (issue4950) (hg-3.5+ only)
+- no longer lock the repository for `hg parents` (issue4895)
+- updated help for the `evolve` command
+
+5.2.1 -- 2015-11-02
+-------------------
+
+- add compatibility with Mercurial 3.6
+- prune: fixed possible issue with lock and bookmark
+- next/prev: fixed possible issue with lock and bookmark
+- add some progress data during changesets discovery
+- take advantage of dirstate/transaction collaboration
+
+5.2.0 -- 2015-06-25
+-------------------
+
+- evolve: gain a --rev option to control what revisions to evolve (issue4391)
+- evolve: revision are processed in the order they stack on destination
+- evolve: properly skip unstable revision with non-evolved unstable parent
+- evolve: gain --unstable --divergent --bumped flag to select the trouble
+- evolve: issue more useful error message and hint when evolve has nothing to
+          do as invocated.
+- evolve: bare `hg evolve` commands now abort when multiple changesets could be
+          a target.
+- evolve: `hg evolve --all` only evolve changeset that will end up as
+          descendant of the current working copy. The old behavior of `--all`
+          in now in `--all --any`.
+- evolve: add a 'experimental.evolutioncommands' for fine grained commands
+          enabling
+- next/prev: requires `--merge` to move with uncommitted changes
+- next: significantly reword error messages
+- next: add a --evolve flag to evolve aspiring children when on a head
+
+5.1.5 -- 2015-06-23
+-------------------
+
+- minor documentation cleanup
+- support -i option for `hg amend` if commit supports it (3.4)
+- fix the `debugrecordpruneparents` utility
+- fix some possible crash during command abort (release nonexistent transaction)
+- fix simple4server bug tracker URL
+- compatibility with bookmark API change in future Mercurial 3.5
+- prune no longer move the active bookmark for no reason (issue4559)
+- evolve: stop reporting divergence base as missing when we actually have it
+- significant performance improvement for all revsets.
+- provide a hint of how to update to the successor of an obsolete working copy
+  parent.
+
+5.1.4 -- 2015-04-23
+-------------------
+
+- significant documentation update
+- fix issue4616: pulling with bundle2 would crash if common marker when
+  discovered on non-served changesets.
+- fix the debugobsrelsethashtree command
+
+5.1.3 -- 2015-04-20
+-------------------
+
+- discovery: fix misbehaving discovery across python version
+- pull: properly install the bundle2 par generator
+  (avoid sending all markers for each pull)
+- commit: avoid potential deadlock (acquires wlock before lock)
+- graft: avoid potential deadlock (acquires wlock before lock)
+
+5.1.2 -- 2015-04-01
+-------------------
+
+- evolve: prevent a crash in httpclient_pushobsmarkers() when pushing
+
+5.1.1 -- 2015-03-05
+-------------------
+
+- debugobsconvert: fix invalid markers during conversion
+- discovery: cache some of the obs hash computation to improve performance (issue4518)
+- revset: fix some crash with (issue4515)
+
+5.1 -- 2015-01-30
+-------------------
+
+- evolve: explicitly disable bookmark on evolve (issue4432)
+- evolve: don't abort Mercurial on version mismatch
+- compatibility with mercurial 3.3
+
+5.0.2 -- 2014-12-14
+-------------------
+
+- evolve: remove dependency to the rebase extension
+
+5.0.1 -- 2014-11-25
+-------------------
+
+- amend: fix --logfile argument
+- evolve: preserve branch change when evolving
+- evolve: fix potential crash while solving `bumped` changesets.
+- uncommit: abort when rev specifies the current changeset
+- evolve: various message improvement
+- evolve: fix selection of changeset to evolve from the middle of a stack (issue4434)
+- evolve: make next/prev only move bookmarks optionally
+- evolve: tell user which "base of divergent changeset" is not found
+
+5.0.0 -- 2014-10-22
+-------------------
+
+- drop compat with Mercurial pre 3.2
+- uncommit: add a --rev argument
+- evolve: add a `working directory now at xxxxxxxxxx` message
+- evolve: automatically translate obsolete hashes when evolving
+- properly skip marker creating if patch apply cleanly
+- prune: work around a massive slowdown from lazy revset
+- grab: "fix" the grab alias on window
+
+- fix an issue where prune performance were quadratic with the number of
+  changesets pruned.
+- pull: use discovery to pull less obsmarkers through bundle2
+
+
+4.1.0 -- 2014-08-08
+-------------------
+
+- amend: add -D/--current-date option
+- amend: add -U/--current-user option
+- evolve: add a --tool option
+- evolve: add a --confirm option
+- mark "commit -o", "graft -o" and "graft -O" as deprecated since they are
+  unlikely to eventually make it into core.
+- push obsmarkers and phases in the same transaction than changesets
+  (when using hg >= 3.1 and bundle2-exp is enabled)
+- hide message about the obsolescence marker exchange behind a
+  `experimental.verbose-obsolescence-exchange` variable (default to False).
+
+4.0.1 -- 2014-08-08
+-------------------
+
+- createmarkers() accept an iterable (for compat with other extension)
+
+4.0.0 -- 2014-06-03
+-------------------
+
+- require Mercurial version 3.0.1 or above
+- some compatibility fixes with future 3.1.0
+- deprecated `gup` and `gdown` in favor of prev and next
+- record parent of pruned parent at prune time
+- added a `debugobsstorestat` command to gather data on obsmarker content.
+- added a `debugrecordpruneparents` command to upgrade existing prune marker
+  with parent information. Please run it once per repo after upgrading.
+- improvement to obsolescence marker exchange:
+  - added progress when pushing obsmarkers
+  - added multiple output during obsolescence markers exchange
+  - only push markers relevant to pushed subset
+  - add a new experimental way to exchange marker (when server support):
+
+    - added progress when pulling obsmarkers
+    - only pull markers relevant to pulled subset
+    - avoid exchanging common markers in some case
+    - use bundle2 as transport when available.
+
+ - add a hook related to the new commands
+
+3.3.2 -- 2014-05-14
+-------------------
+
+- fix a bug where evolve were creating changeset with 2 parents on windows
+  (fix issues #16, #35 and #42)
+- adds a --obsolete flag to import (requires Mercurial 3.0)
+- prune: update to successor rather than parent when pruning '.' with -s
+- fold: add missing --message and --logfile option
+- fold: add squash as an alias
+
+3.3.1 -- 2014-04-23
+-------------------
+
+- various language fix
+- active bookmark now move when using prev/next (#37)
+- fix some preservation of rename information on evolve (#33)
+- abort when evolve tries to move a node on top of itself (will helps on the #35 front)
+- fold: enable --date and --user options
+
+3.3.0 -- 2014-03-04
+-------------------
+
+- raise Mercurial's minimal requirement to 2.7
+- drop `latercomer` and `conflicting` compatibility. Those old alias are
+  deprecated for a long time now.
+- add verbose hint about how to handle corner case by hand.
+  This should help people until evolve is able to to it itself.
+- removed the qsync extension. The only user I knew about (logilab) is not
+  using it anymore. It not compatible with coming Mercurial version 2.9.
+- add progress indicator for long evolve command
+- report troubles creation from `hg import`
+
+3.2.0 -- 2013-11-15
+-------------------
+
+- conform to the Mercurial custom of lowercase messages
+- added a small extension to experiment with obsolescence marker push
+- amend: drop the deprecated note option
+- amend: use core mechanism for amend (fix multiple bugs)
+- parents command: add "working directory parent is obsolete" message
+- evolve command: allow updating to the successor if the parent is
+  obsolete
+- gdown and gup commands: add next and previous alias, respectively
+- make grab aliases compatible with Mercurial 2.8
+- Tested with 2.6, 2.7 and 2.8
+
+3.1.0 -- 2013-02-11
+-------------------
+
+- amend: drop deprecated --change option for amend
+- alias: add a grab alias to be used instead of graft -O
+- touch: add a --duplicate option to *not* obsolete the old version
+- touch: fix touching multiple revision at the same time
+- evolve: add a --all option
+- prune: various minor improvements
+- prune: add option to prune a specific bookmark
+- prune: add -u and -d option to control metadata
+
+3.0.0 -- 2013-02-02
+-------------------
+
+- compatibility with 2.5
+
+2.2.0 --
+-------------------
+
+- make evolve smarter at picking next troubled to solved without --any
+
+2.1.0 -- 2012-12-03
+-------------------
+
+- qsync fixes
+- have qfold ask for commit message
+
+2.0.0 -- 2012-10-26
+-------------------
+
+- compat with mercurial 2.4
+
+1.1.0 -- 2012-10-26
+-------------------
+
+- fix troubles creation reporting from rebase
+- rename latecomer to bumped
+- renamed conflicting to divergent
+- smarter divergent handling
+
+1.0.2 -- 2012-09-19
+-------------------
+
+- fix hg fold bug
+- fix hg pull --rebase
+- fix detection of conflict with external tools
+- adapt to core movement (caches and --amend)
+
+1.0.1 -- 2012-08-31
+-------------------
+
+- documentation improvement
+- fix a performance bug with hgweb
+
+1.0 -- 2012-08-29
+-------------------
+
+- Align with Mercurial version 2.3 (drop 2.2 support).
+- stabilize handle killed parent
+- stabilize handle late comer
+- stabilize handle conflicting
+- stabilize get a --continue switch
+- merge and update ignore extinct changeset in most case.
+- new "troubled()" revset
+- summary now reports troubles changesets
+- new touch command
+- new fold command
+- new basic olog alias
+
+- rebase refuse to work on public changeset again
+- rebase explicitly state that there is nothing to rebase because everything is
+  extinct() when that happen.
+- amend now cleanly abort when --change switch is misused
+
+
+0.7 -- 2012-08-06
+-------------------
+
+- hook: work around insanely huge value in obsolete pushkey call
+- pushkey: properly handle abort during obsolete markers push
+- amend: wrap the whole process in a single transaction.
+- evolve: tweak and add EOL to kill warning
+- obsolete: fix doc, rebase no longer aborts with --keep
+- obsolete/evolve: fix grammar in prerequisite messages
+- evolve: avoid duplication in graft wrapper
+- evolve: graft --continue is optional, test
+
+0.6 -- 2012-07-31
+-------------------
+
+- obsolete: change warning output to match mercurial core on
+- qsync: ignore nonexistent nodes
+- make compat server both compatible with "dump" and "dump%i" version
+
+0.5 -- 2012-07-16
+-------------------
+
+- obsolete: Detect conflicting changeset!
+- obsolete: adapt to core: marker are written in transaction now
+- evolve: add the solve alias to obsolete
+- doc: big update of terms and summary of the concept
+- evolve: switch the official name for "kill" to prune
+
+
+0.4.1 -- 2012-07-10
+-------------------
+
+- [convert] properly exclude null successors from conversion
+- Ignore buggy marker in newerversion
+
+
+0.4.0 -- 2012-07-06
+-------------------
+
+- obsolete: public changeset are no longer latecomer.
+- obsolete: move to official binary format
+- adapt for new mercurial
+- obsolete: we are not compatible with 2.1 any more
+
+0.3.0 -- 2012-06-27
+-------------------
+
+- obsolete:  Add "latecomer" error detection (stabilize does not handle resolution yet)
+- evolve:    Introduce a new `uncommit` command to remove change from a changeset
+- rebase:    allow the use of --keep again
+- commit:    --amend option create obsolete marker (but still strip)
+- obsolete:  fewer marker are created when collapsing revision.
+- revset:    add, successors(), allsuccessors(), precursors(), allprecursors(),
+             latecomer() and hidden()
+- evolve:    add `prune` alias to `kill`.
+- stabilize: clearly state that stabilize does not handle conflict
+- template:  add an {obsolete} keyword
+
+0.2.0 -- 2012-06-20
+-------------------
+
+- stabilize: improve choice of the next changeset to stabilize
+- stabilize: improve resolution of several corner case
+- rebase:    handle removing empty changesets
+- rebase:    handle --collapse
+- evolve:   add `obsolete` alias to `kill`
+- evolve:   add `evolve` alias to `stabilize`
--- a/MANIFEST.in	Tue Oct 10 21:12:14 2017 +0200
+++ b/MANIFEST.in	Tue Oct 10 22:40:41 2017 +0200
@@ -18,9 +18,10 @@
 include hgext3rd/__init__.py
 include hgext3rd/evolve/*.py
 include hgext3rd/topic/*.py
+include hgext3rd/topic/README
 include MANIFEST.in
 include README
-include README-topic
+include CHANGELOG
 include setup.py
 include tests/*.py
 include tests/*.sh
--- a/README	Tue Oct 10 21:12:14 2017 +0200
+++ b/README	Tue Oct 10 22:40:41 2017 +0200
@@ -117,613 +117,3 @@
 In addition, we have compatibility branches to check tests on older version of
 Mercurial. They are the "mercurial-x.y" branches. They are used to apply
 expected test change only, no code change should happen there.
-
-Changelog
-=========
-
-6.7.1 -- 2017-10-10
--------------------
-
-  * obsfate: fix case were current user would disapear from the user list
-
-topic (0.3.1)
-
-  * stack: fix evolution preview for simple split.
-  * fix a performance regression affecting all transactions.
-    (the more non public changeset (hidden included), the slower)
-
-6.7.0 -- 2017-09-27
--------------------
-
-  * compatibility with change in future 4.4 at this release date,
-  * documentation: improvement to content, wording and graphs,
-  * obslog: improved templatability,
-  * obslog/log: improve verb used to describe and evolution,
-  * pstatus/pdiff: update to full command. They now appears in the help,
-  * uncommit: add a --interactive option (4.3+ only).
-
-topic (0.3.0)
-
-  * push: add a --topic option to mirror --bookmark and --branch,
-  * stack: improve display of interleaved topic,
-  * stack: improve display of merge commit,
-  * topic: add a new 'debugconvertbookmark' commands (4.3+ only),
-    It helps migrating from bookmark feature branch to topic feature branch,
-  * topic: --age flag also shows the user who last touched the topic,
-  * topic: be more informative about topic activation and deactivation,
-  * topic: gain a --current flag,
-  * topic: small clarification and cleanup on various output.
-
-6.6.0 -- 2017-07-25
--------------------
-
-  - amend: add a --extract flag to move change back to the working copy,
-    (same as uncommit, but accessible through the amend commit)
-  - split: now properly refuse to split public changeset,
-  - commands: unify and improve the pre-rewrite validation and error message,
-  - uncommit: add support for --current-date and --current-user option,
-  - fold: add support for --current-date and --current-user option,
-  - metaedit: add support for --current-date and --current-user option,
-  - split: add support for --current-date and --current-user option,
-  - compat: use various new API instead of the one deprecated in 4.3,
-    (when available)
-  - documentation: various minor documentation update.
-
-topic (0.2.0):
-
-  - topic: add --age option to sort topic by the most recently touched,
-  - topic: add a 't0' to access the root of a topic while keeping it active,
-  - topic: allow 'hg prev' to me move to 't0',
-  - topic: add a config option to enforce topic on new commit,
-    (experimental.enforce-topic)
-  - topic: make command names valid as expected, even if ui.strict=true.
-
-6.5.0 -- 2017-07-02
--------------------
-
-features:
-
- - obslog: gain a --patch flag to display changes introduced by the evolution
-  (Currently limited to in simple case only)
- - log: display obsolescence fate by default, (future 4.3 only)
- - doc: various minor improvement.
-
-bugfixes:
-
- - evolve: fix branch preservation for merge,
- - obsfate: improve support for advanced template reformating,
- - split: preserve author of the splitted changeset.
- - grab: properly fix hg executable on windows.
-
-topic (0.1.0):
-
- - stack: also show the unstable status for the current changeset, (issue5553)
- - stack: properly abort when and unknown topic is requested,
- - stack: add basic and raw support for named branches,
- - topic: changing topic on revs no longer adds extra instability, (issue5441)
- - topic: topics: rename '--change' flag to '--rev' flag,
- - topic: multiple large performance improvements,
- - topic: various small output improvement,
- - topic: improved topic preservation for various commands.
-
-
-6.4.0 -- 2017-06-16
--------------------
-
- - template: signifiant improvement to the '{obsfate}' template (now 4.2+ only)
- - template: fix 'successors' and 'precursors' template to expose hex-node
- - effect flag: the experiment is now active by default,
-   (see 'hg help -e evolve' to opt out)
- - effect flag: fix a small bug related to hidden changeset,
- - obscache: reduce impact on large repository
- - obshashrange: install a '.max-revs' option see extension help for details
-
-6.3.1 -- 2017-06-01
--------------------
-
- - also backport the "revelant-markers" fix when using "evolve.serveronly"
-
-6.3.0 -- 2017-05-31
--------------------
-
- - olog: add an 'obslog' alias
- - olog: add an '--all' option to show the whole obsolescence history tree.
- - evolution: add an experiment to track the effect of rewrites.
-   (See hg help - evolve for details)
- - exchange: fix the "relevant-markers" algorithm to include inline prune.
-   This will impact discovery of obsmarkers between server and client if one
-   still uses the old algorithm. Please upgrade both clients and servers as
-   soon as possible.
-   (See changeset 176d1a0ce385 in core Mercurial for details)
- - obsdiscovery: add a config flag to disable all obsmarkers discovery
-   (See hg help - evolve for details)
- - template: add a 'precursors' template that display the closests precursors of changesets
- - template: add a 'successors' template that display the closests successors of changesets
- - template: add a 'obsfate' template that display how a changeset has evolved
- - new discovery experiment: add options to restrict memory consumption on
-   large repository (see "hg help -e evolve" for details).
- - evolve: fix --rev handling in --list mode
-
-6.2.1 -- 2017-05-23
--------------------
-
- - prune: fix a crash related to color handling,
- - next: fix a crash related to color handling,
- - discovery: document the 'obshashrange' experiment,
- - cache: reduce the warming load in case of reset,
- - cache: add a 'experimental.obshashcache.warm-cache' option to allow
-   disabling post transaction cache warming.
-
-6.2.0 -- 2017-05-18
--------------------
-
- - olog: a new command to inspect the obs-history of a changeset (hg-4.0 + only),
- - topic: have thg display topic name if possible,
- - blackbox: log more information about discovery and cache computation,
- - obscache: more efficient update in the (rare) case of a transaction adding
-   markers without changesets,
- - obscache: fix more cache invalidation propagation,
- - obscache: also enable the new cache (from 6.1.0) for 'evolve.server-only',
- - obshashrange-cache: update incrementally in the (common) case of a
-   transaction not affecting existing range,
- - obshashrange-cache: keep the cache warm after each transaction,
- - topic: now requires Mercurial 4.0 or above,
- - stack: now display if current revision is in bad state (issue5533),
- - stack: fix json output to be valid json.
-
-6.1.0 -- 2017-05-03
--------------------
-
- - improve message about obsolete working copy parent,
- - improve message issued  when accessing hidden nodes (4.2 only),
- - introduce a new caches to reduce the impact of evolution on read-only commands,
- - add a 'experimental.auto-publish' config. See `hg help -e evolve` for details.
- - fix the propagation of some some cache invalidation,
-
-6.0.1 -- 2017-04-20
--------------------
-
- - template: adapt to change in 4.2,
- - fix 'debugrecordpruneparents' (outdated API usage)
- - checkheads: give priority to updated 4.2 code,
- - serveronly: fix repository initialization.
-
-6.0.0 -- 2017-03-31
--------------------
-
-- push: improved detection of obsoleted remote branch (issue4354),
-- drop compatibility for Mercurial < 3.8,
-- removed old (unpackaged) pushexperiment extension,
-- move all extensions in the official 'hgext3rd' namespace package,
-- add the "topic" experimental extensions. See the README.topic file for details
-- officially ship 'evolve.serveronly' extensions. That extensions contains
-  only the part related to exchange and is intended to be used by server.
-
-  Using the extension will enable evolution, use 'experimental.evolution=!'
-  to disable obsmarkers echange.  The old '__temporary__.advertiseobsolete'
-  option is no longer supported.
-
-- a new prototype of obsmarker discovery is available. The prototype is still
-  at early stage and not recommended for production.
-  Examples of current limitations:
-
-  - write access to the repo is highly recommanded for all operation,
-  - large memory footprint,
-  - initial caching is slow,
-  - unusable on large repo (because of various issue pointed earlier),
-  - likely to constains various bugs.
-
-  It can be tested by setting `experimental.obshashrange=1` on both client and
-  server. It is recommanded to get in touch with the evolve maintainer if you
-  decide to test it.
-
-- the 'debugrecordpruneparents' have been moved into the 'evolve.legacy'
-  separate extension. enable that extentions if you need to convert/update
-  markers in an old repository.
-
-5.6.1 -- 2017-02-28
--------------------
-
-- fix a crash that sometime happened when evolving merges.
-
-5.6.0 -- 2017-02-01
--------------------
-
-- compatibility with Mercurial 4.1.
-- improvement of prune error message.
-- fold: require --from flag for folding revisions to working copy
-- fix crash when trying to fold an empty revision set (issue5453)
-- uncommit: preserve copy information of remaining files (issue5403)
-
-5.5.0 -- 2016-10-30
--------------------
-
-- The {obsolete} template now yield "obsolete" or "".
-- compatibility with Mercurial 4.0
-- Fix erroneous manifest computation when solving 'bumped' changeset.
-- split: avoid crash on empty commit (issue5191),
-- next: improve locking to avoid issue with working copy parent (issue5244)
-- prev: improve locking to avoid issue with working copy parent (issue5244)
-- evolve: fix abort suggestion to include '.' in 'hg update -C .'
-
-5.4.1 -- 2016-08-01
--------------------
-
- - compat with Mercurial 3.9
-
-5.4.0 -- 2016-05-06
--------------------
-
-- Some collaboration with the topic experimental extensions,
-  - hg evolve --all with consider all troubles in your current topic,
-  - preserve 'topic' during evolve,
-  - 'next' and 'prev' restrict themself to the current topic by default,
-- remove the dangerous 'kill' alias for 'prune' (because 'hg kill -1' without
-  the leading 'hg' will give you an hardtime)
-- during 'hg evolve' skip unsupported merge instead of aborting
-- various documentation fix and update
-- hg summary now suggest 'hg evolve --continue when appropriate`
-- compatibility with Mercurial 3.8 'hgext' namespace package.
-- small improvement to the `hg split` instruction
-- add a 'metaedit' command to rewrite changeset meta data.
-
-5.3.0 -- 2016-02-11
--------------------
-
-- split: add a new command to split changesets,
-- tests: drop our copy of 'run-tests.py' use core one instead,
-- bookmark: do all bookmark movement within a transaction.
-- evolve: compatibility with Mercurial 3.7
-- evolve: support merge with a single obsolete parent (hg-3.7+ only)
-- evolve: prevent added file to be marked as unknown if evolve fails (issue4966)
-- evolve: stop relying on graftstate file for save evolve state
-          (for `hg evolve --continue`)
-- evolve: fix divergence resolution when it result in an empty commit
-          (issue4950) (hg-3.5+ only)
-- no longer lock the repository for `hg parents` (issue4895)
-- updated help for the `evolve` command
-
-5.2.1 -- 2015-11-02
--------------------
-
-- add compatibility with Mercurial 3.6
-- prune: fixed possible issue with lock and bookmark
-- next/prev: fixed possible issue with lock and bookmark
-- add some progress data during changesets discovery
-- take advantage of dirstate/transaction collaboration
-
-5.2.0 -- 2015-06-25
--------------------
-
-- evolve: gain a --rev option to control what revisions to evolve (issue4391)
-- evolve: revision are processed in the order they stack on destination
-- evolve: properly skip unstable revision with non-evolved unstable parent
-- evolve: gain --unstable --divergent --bumped flag to select the trouble
-- evolve: issue more useful error message and hint when evolve has nothing to
-          do as invocated.
-- evolve: bare `hg evolve` commands now abort when multiple changesets could be
-          a target.
-- evolve: `hg evolve --all` only evolve changeset that will end up as
-          descendant of the current working copy. The old behavior of `--all`
-          in now in `--all --any`.
-- evolve: add a 'experimental.evolutioncommands' for fine grained commands
-          enabling
-- next/prev: requires `--merge` to move with uncommitted changes
-- next: significantly reword error messages
-- next: add a --evolve flag to evolve aspiring children when on a head
-
-5.1.5 -- 2015-06-23
--------------------
-
-- minor documentation cleanup
-- support -i option for `hg amend` if commit supports it (3.4)
-- fix the `debugrecordpruneparents` utility
-- fix some possible crash during command abort (release nonexistent transaction)
-- fix simple4server bug tracker URL
-- compatibility with bookmark API change in future Mercurial 3.5
-- prune no longer move the active bookmark for no reason (issue4559)
-- evolve: stop reporting divergence base as missing when we actually have it
-- significant performance improvement for all revsets.
-- provide a hint of how to update to the successor of an obsolete working copy
-  parent.
-
-5.1.4 -- 2015-04-23
--------------------
-
-- significant documentation update
-- fix issue4616: pulling with bundle2 would crash if common marker when
-  discovered on non-served changesets.
-- fix the debugobsrelsethashtree command
-
-5.1.3 -- 2015-04-20
--------------------
-
-- discovery: fix misbehaving discovery across python version
-- pull: properly install the bundle2 par generator
-  (avoid sending all markers for each pull)
-- commit: avoid potential deadlock (acquires wlock before lock)
-- graft: avoid potential deadlock (acquires wlock before lock)
-
-5.1.2 -- 2015-04-01
--------------------
-
-- evolve: prevent a crash in httpclient_pushobsmarkers() when pushing
-
-5.1.1 -- 2015-03-05
--------------------
-
-- debugobsconvert: fix invalid markers during conversion
-- discovery: cache some of the obs hash computation to improve performance (issue4518)
-- revset: fix some crash with (issue4515)
-
-5.1 -- 2015-01-30
--------------------
-
-- evolve: explicitly disable bookmark on evolve (issue4432)
-- evolve: don't abort Mercurial on version mismatch
-- compatibility with mercurial 3.3
-
-5.0.2 -- 2014-12-14
--------------------
-
-- evolve: remove dependency to the rebase extension
-
-5.0.1 -- 2014-11-25
--------------------
-
-- amend: fix --logfile argument
-- evolve: preserve branch change when evolving
-- evolve: fix potential crash while solving `bumped` changesets.
-- uncommit: abort when rev specifies the current changeset
-- evolve: various message improvement
-- evolve: fix selection of changeset to evolve from the middle of a stack (issue4434)
-- evolve: make next/prev only move bookmarks optionally
-- evolve: tell user which "base of divergent changeset" is not found
-
-5.0.0 -- 2014-10-22
--------------------
-
-- drop compat with Mercurial pre 3.2
-- uncommit: add a --rev argument
-- evolve: add a `working directory now at xxxxxxxxxx` message
-- evolve: automatically translate obsolete hashes when evolving
-- properly skip marker creating if patch apply cleanly
-- prune: work around a massive slowdown from lazy revset
-- grab: "fix" the grab alias on window
-
-- fix an issue where prune performance were quadratic with the number of
-  changesets pruned.
-- pull: use discovery to pull less obsmarkers through bundle2
-
-
-4.1.0 -- 2014-08-08
--------------------
-
-- amend: add -D/--current-date option
-- amend: add -U/--current-user option
-- evolve: add a --tool option
-- evolve: add a --confirm option
-- mark "commit -o", "graft -o" and "graft -O" as deprecated since they are
-  unlikely to eventually make it into core.
-- push obsmarkers and phases in the same transaction than changesets
-  (when using hg >= 3.1 and bundle2-exp is enabled)
-- hide message about the obsolescence marker exchange behind a
-  `experimental.verbose-obsolescence-exchange` variable (default to False).
-
-4.0.1 -- 2014-08-08
--------------------
-
-- createmarkers() accept an iterable (for compat with other extension)
-
-4.0.0 -- 2014-06-03
--------------------
-
-- require Mercurial version 3.0.1 or above
-- some compatibility fixes with future 3.1.0
-- deprecated `gup` and `gdown` in favor of prev and next
-- record parent of pruned parent at prune time
-- added a `debugobsstorestat` command to gather data on obsmarker content.
-- added a `debugrecordpruneparents` command to upgrade existing prune marker
-  with parent information. Please run it once per repo after upgrading.
-- improvement to obsolescence marker exchange:
-  - added progress when pushing obsmarkers
-  - added multiple output during obsolescence markers exchange
-  - only push markers relevant to pushed subset
-  - add a new experimental way to exchange marker (when server support):
-
-    - added progress when pulling obsmarkers
-    - only pull markers relevant to pulled subset
-    - avoid exchanging common markers in some case
-    - use bundle2 as transport when available.
-
- - add a hook related to the new commands
-
-3.3.2 -- 2014-05-14
--------------------
-
-- fix a bug where evolve were creating changeset with 2 parents on windows
-  (fix issues #16, #35 and #42)
-- adds a --obsolete flag to import (requires Mercurial 3.0)
-- prune: update to successor rather than parent when pruning '.' with -s
-- fold: add missing --message and --logfile option
-- fold: add squash as an alias
-
-3.3.1 -- 2014-04-23
--------------------
-
-- various language fix
-- active bookmark now move when using prev/next (#37)
-- fix some preservation of rename information on evolve (#33)
-- abort when evolve tries to move a node on top of itself (will helps on the #35 front)
-- fold: enable --date and --user options
-
-3.3.0 -- 2014-03-04
--------------------
-
-- raise Mercurial's minimal requirement to 2.7
-- drop `latercomer` and `conflicting` compatibility. Those old alias are
-  deprecated for a long time now.
-- add verbose hint about how to handle corner case by hand.
-  This should help people until evolve is able to to it itself.
-- removed the qsync extension. The only user I knew about (logilab) is not
-  using it anymore. It not compatible with coming Mercurial version 2.9.
-- add progress indicator for long evolve command
-- report troubles creation from `hg import`
-
-3.2.0 -- 2013-11-15
--------------------
-
-- conform to the Mercurial custom of lowercase messages
-- added a small extension to experiment with obsolescence marker push
-- amend: drop the deprecated note option
-- amend: use core mechanism for amend (fix multiple bugs)
-- parents command: add "working directory parent is obsolete" message
-- evolve command: allow updating to the successor if the parent is
-  obsolete
-- gdown and gup commands: add next and previous alias, respectively
-- make grab aliases compatible with Mercurial 2.8
-- Tested with 2.6, 2.7 and 2.8
-
-3.1.0 -- 2013-02-11
--------------------
-
-- amend: drop deprecated --change option for amend
-- alias: add a grab alias to be used instead of graft -O
-- touch: add a --duplicate option to *not* obsolete the old version
-- touch: fix touching multiple revision at the same time
-- evolve: add a --all option
-- prune: various minor improvements
-- prune: add option to prune a specific bookmark
-- prune: add -u and -d option to control metadata
-
-3.0.0 -- 2013-02-02
--------------------
-
-- compatibility with 2.5
-
-2.2.0 --
--------------------
-
-- make evolve smarter at picking next troubled to solved without --any
-
-2.1.0 -- 2012-12-03
--------------------
-
-- qsync fixes
-- have qfold ask for commit message
-
-2.0.0 -- 2012-10-26
--------------------
-
-- compat with mercurial 2.4
-
-1.1.0 -- 2012-10-26
--------------------
-
-- fix troubles creation reporting from rebase
-- rename latecomer to bumped
-- renamed conflicting to divergent
-- smarter divergent handling
-
-1.0.2 -- 2012-09-19
--------------------
-
-- fix hg fold bug
-- fix hg pull --rebase
-- fix detection of conflict with external tools
-- adapt to core movement (caches and --amend)
-
-1.0.1 -- 2012-08-31
--------------------
-
-- documentation improvement
-- fix a performance bug with hgweb
-
-1.0 -- 2012-08-29
--------------------
-
-- Align with Mercurial version 2.3 (drop 2.2 support).
-- stabilize handle killed parent
-- stabilize handle late comer
-- stabilize handle conflicting
-- stabilize get a --continue switch
-- merge and update ignore extinct changeset in most case.
-- new "troubled()" revset
-- summary now reports troubles changesets
-- new touch command
-- new fold command
-- new basic olog alias
-
-- rebase refuse to work on public changeset again
-- rebase explicitly state that there is nothing to rebase because everything is
-  extinct() when that happen.
-- amend now cleanly abort when --change switch is misused
-
-
-0.7 -- 2012-08-06
--------------------
-
-- hook: work around insanely huge value in obsolete pushkey call
-- pushkey: properly handle abort during obsolete markers push
-- amend: wrap the whole process in a single transaction.
-- evolve: tweak and add EOL to kill warning
-- obsolete: fix doc, rebase no longer aborts with --keep
-- obsolete/evolve: fix grammar in prerequisite messages
-- evolve: avoid duplication in graft wrapper
-- evolve: graft --continue is optional, test
-
-0.6 -- 2012-07-31
--------------------
-
-- obsolete: change warning output to match mercurial core on
-- qsync: ignore nonexistent nodes
-- make compat server both compatible with "dump" and "dump%i" version
-
-0.5 -- 2012-07-16
--------------------
-
-- obsolete: Detect conflicting changeset!
-- obsolete: adapt to core: marker are written in transaction now
-- evolve: add the solve alias to obsolete
-- doc: big update of terms and summary of the concept
-- evolve: switch the official name for "kill" to prune
-
-
-0.4.1 -- 2012-07-10
--------------------
-
-- [convert] properly exclude null successors from conversion
-- Ignore buggy marker in newerversion
-
-
-0.4.0 -- 2012-07-06
--------------------
-
-- obsolete: public changeset are no longer latecomer.
-- obsolete: move to official binary format
-- adapt for new mercurial
-- obsolete: we are not compatible with 2.1 any more
-
-0.3.0 -- 2012-06-27
--------------------
-
-- obsolete:  Add "latecomer" error detection (stabilize does not handle resolution yet)
-- evolve:    Introduce a new `uncommit` command to remove change from a changeset
-- rebase:    allow the use of --keep again
-- commit:    --amend option create obsolete marker (but still strip)
-- obsolete:  fewer marker are created when collapsing revision.
-- revset:    add, successors(), allsuccessors(), precursors(), allprecursors(),
-             latecomer() and hidden()
-- evolve:    add `prune` alias to `kill`.
-- stabilize: clearly state that stabilize does not handle conflict
-- template:  add an {obsolete} keyword
-
-0.2.0 -- 2012-06-20
--------------------
-
-- stabilize: improve choice of the next changeset to stabilize
-- stabilize: improve resolution of several corner case
-- rebase:    handle removing empty changesets
-- rebase:    handle --collapse
-- evolve:   add `obsolete` alias to `kill`
-- evolve:   add `evolve` alias to `stabilize`
--- a/README-topic	Tue Oct 10 21:12:14 2017 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-Topic Extension
-================
-
-This packages also provides the ``topic`` experiment in an independent
-extension. It implements a new experimental concept to provide lightweight
-feature branches for the mutable parts of the history. The experiments is still
-at an early stage and have significant usability and performance issues when
-enabled.
-
-How to Install
-==============
-
-The ``topic`` extension is included into the ``evolve` package, so the same instruction apply.
-
-Using Pip
----------
-
-You can install the latest version using pip::
-
-    $ pip install --user hg-evolve
-
-Then just enable it in you hgrc::
-
-    $ hg config --edit # adds the two line below:
-    [extensions]
-    topic =
-
-From Source
------------
-
-To install a local version from source::
-
-    $ hg clone https://www.mercurial-scm.org/repo/evolve/
-    $ cd evolve
-    $ make install-home
-
-Enable
-------
-
-The topic extensions is included in the evolve package. See the install instruction for evolve.
-
-Then enable it in you configuration::
-
-    $ hg config --edit # adds the two line below:
-    [extensions]
-    topic =
-
-Documentation
--------------
-
-* See 'hg help -e topic' for a generic help.
-* See 'hg help topics' and 'hg help stack' for help on specific commands.
-* See the 'tests/test-topic-tutorial.t' file for a quick tutorial.
--- a/hgext3rd/evolve/legacy.py	Tue Oct 10 21:12:14 2017 +0200
+++ b/hgext3rd/evolve/legacy.py	Tue Oct 10 22:40:41 2017 +0200
@@ -129,16 +129,16 @@
                     del oldmark['reason']  # unused until then
                     oldobject = str(oldmark.pop('object'))
                     oldsubjects = [str(s) for s in oldmark.pop('subjects', [])]
-                    LOOKUP_ERRORS = (error.RepoLookupError, error.LookupError)
+                    lookup_errors = (error.RepoLookupError, error.LookupError)
                     if len(oldobject) != 40:
                         try:
                             oldobject = repo[oldobject].node()
-                        except LOOKUP_ERRORS:
+                        except lookup_errors:
                             pass
                     if any(len(s) != 40 for s in oldsubjects):
                         try:
                             oldsubjects = [repo[s].node() for s in oldsubjects]
-                        except LOOKUP_ERRORS:
+                        except lookup_errors:
                             pass
 
                     oldmark['date'] = '%i %i' % tuple(oldmark['date'])
--- a/hgext3rd/evolve/metadata.py	Tue Oct 10 21:12:14 2017 +0200
+++ b/hgext3rd/evolve/metadata.py	Tue Oct 10 22:40:41 2017 +0200
@@ -5,7 +5,7 @@
 # This software may be used and distributed according to the terms of the
 # GNU General Public License version 2 or any later version.
 
-__version__ = '6.7.1'
+__version__ = '6.8.0.dev'
 testedwith = '3.8.4 3.9.2 4.0.2 4.1.3 4.2.3 4.3.2'
 minimumhgversion = '3.8'
 buglink = 'https://bz.mercurial-scm.org/'
--- a/hgext3rd/evolve/obscache.py	Tue Oct 10 21:12:14 2017 +0200
+++ b/hgext3rd/evolve/obscache.py	Tue Oct 10 22:40:41 2017 +0200
@@ -111,9 +111,12 @@
 
     return obsstore
 
-if obsolete._readmarkers.__code__.co_argcount > 1:
+if obsolete._fm0readmarkers.__code__.co_argcount > 1:
     # hg-4.3+ has the "offset" parameter, and _fm?readmarkers also have an
     # extra "stop" parameter
+    # Note that _readmarkers is wrapped by @util.nogc, so its co_argcount is
+    # misleadingly 0. So we check _fm0readmarkers instead, which increased its
+    # argument count in the same changeset (5d3ba439).
     _readmarkers = obsolete._readmarkers
 else:
     # XXX copied as is from Mercurial 4.2 and added the "offset" parameters
--- a/hgext3rd/evolve/obshistory.py	Tue Oct 10 21:12:14 2017 +0200
+++ b/hgext3rd/evolve/obshistory.py	Tue Oct 10 22:40:41 2017 +0200
@@ -132,7 +132,7 @@
     succ = successors[0]
 
     if succ not in repo:
-        return False, "succ is unknown locally"
+        return False, "successor is unknown locally"
 
     # Check that both node and succ have the same parents
     nodep1, nodep2 = repo[node].p1(), repo[node].p2()
@@ -498,7 +498,7 @@
                 fm.plain("\n")
                 fm.plain(contentpatch)
         else:
-            patch = "    (No patch available yet, %s)" % _patchavailable[1]
+            patch = "    (No patch available, %s)" % _patchavailable[1]
             fm.plain("\n")
             # TODO: should be in json too
             fm.plain(patch)
--- a/hgext3rd/evolve/templatekw.py	Tue Oct 10 21:12:14 2017 +0200
+++ b/hgext3rd/evolve/templatekw.py	Tue Oct 10 22:40:41 2017 +0200
@@ -191,6 +191,13 @@
     # Verb
     line.append(obsfateline['verb'])
 
+    # Successors
+    successors = obsfateline["successors"]
+
+    if successors:
+        fmtsuccessors = map(lambda s: s[:12], successors)
+        line.append(" as %s" % ", ".join(fmtsuccessors))
+
     # Users
     if (verbose or normal) and 'users' in obsfateline:
         users = obsfateline['users']
@@ -205,13 +212,6 @@
         if users:
             line.append(" by %s" % ", ".join(users))
 
-    # Successors
-    successors = obsfateline["successors"]
-
-    if successors:
-        fmtsuccessors = map(lambda s: s[:12], successors)
-        line.append(" as %s" % ", ".join(fmtsuccessors))
-
     # Date
     if verbose:
         min_date = obsfateline['min_date']
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hgext3rd/topic/README	Tue Oct 10 22:40:41 2017 +0200
@@ -0,0 +1,53 @@
+Topic Extension
+================
+
+This packages also provides the ``topic`` experiment in an independent
+extension. It implements a new experimental concept to provide lightweight
+feature branches for the mutable parts of the history. The experiments is still
+at an early stage and have significant usability and performance issues when
+enabled.
+
+How to Install
+==============
+
+The ``topic`` extension is included into the ``evolve` package, so the same instruction apply.
+
+Using Pip
+---------
+
+You can install the latest version using pip::
+
+    $ pip install --user hg-evolve
+
+Then just enable it in you hgrc::
+
+    $ hg config --edit # adds the two line below:
+    [extensions]
+    topic =
+
+From Source
+-----------
+
+To install a local version from source::
+
+    $ hg clone https://www.mercurial-scm.org/repo/evolve/
+    $ cd evolve
+    $ make install-home
+
+Enable
+------
+
+The topic extensions is included in the evolve package. See the install instruction for evolve.
+
+Then enable it in you configuration::
+
+    $ hg config --edit # adds the two line below:
+    [extensions]
+    topic =
+
+Documentation
+-------------
+
+* See 'hg help -e topic' for a generic help.
+* See 'hg help topics' and 'hg help stack' for help on specific commands.
+* See the 'tests/test-topic-tutorial.t' file for a quick tutorial.
--- a/hgext3rd/topic/__init__.py	Tue Oct 10 21:12:14 2017 +0200
+++ b/hgext3rd/topic/__init__.py	Tue Oct 10 22:40:41 2017 +0200
@@ -48,6 +48,21 @@
 
 Be aware that this extension is still an experiment, commands and other features
 are likely to be change/adjusted/dropped over time as we refine the concept.
+
+topic-mode
+==========
+
+The topic extension can be configured to ensure the user do not forget to add
+a topic when committing a new topic::
+
+    [experimental]
+    # behavior when commit is made without an active topic
+    topic-mode = ignore # do nothing special (default)
+    topic-mode = warning # print a warning
+    topic-mode = enforce # abort the commit (except for merge)
+    topic-mode = enforce-all # abort the commit (even for merge)
+    topic-mode = random # use a randomized generated topic (except for merge)
+    topic-mode = random-all # use a randomized generated topic (even for merge)
 """
 
 from __future__ import absolute_import
@@ -88,6 +103,7 @@
     stack,
     topicmap,
     discovery,
+    randomname
 )
 
 if util.safehasattr(registrar, 'command'):
@@ -122,7 +138,8 @@
               'topic.active': 'green',
              }
 
-__version__ = '0.3.1'
+__version__ = '0.4.0.dev'
+
 testedwith = '4.0.2 4.1.3 4.2.3 4.3.3'
 minimumhgversion = '4.0'
 buglink = 'https://bz.mercurial-scm.org/'
@@ -702,25 +719,38 @@
         p1 = c.p1().node()
         p2 = c.p2().node()
         if p1 in successors:
-            p1 = successors[p1]
+            p1 = successors[p1][0]
         if p2 in successors:
-            p2 = successors[p2]
-        mc = context.memctx(
-            repo, (p1, p2), c.description(),
-            c.files(), filectxfn,
-            user=c.user(), date=c.date(), extra=fixedextra)
-        newnode = repo.commitctx(mc)
-        successors[c.node()] = newnode
+            p2 = successors[p2][0]
+        mc = context.memctx(repo,
+                            (p1, p2),
+                            c.description(),
+                            c.files(),
+                            filectxfn,
+                            user=c.user(),
+                            date=c.date(),
+                            extra=fixedextra)
+
+        # phase handling
+        commitphase = c.phase()
+        overrides = {('phases', 'new-commit'): commitphase}
+        with repo.ui.configoverride(overrides, 'changetopic'):
+            newnode = repo.commitctx(mc)
+
+        successors[c.node()] = (newnode,)
         ui.debug('new node id is %s\n' % node.hex(newnode))
-        obsolete.createmarkers(repo, [(c, (repo[newnode],))])
         rewrote += 1
+
+    # create obsmarkers and move bookmarks
+    scmutil.cleanupnodes(repo, successors, 'changetopics')
+
     # move the working copy too
     wctx = repo[None]
     # in-progress merge is a bit too complex for now.
     if len(wctx.parents()) == 1:
         newid = successors.get(wctx.p1().node())
         if newid is not None:
-            hg.update(repo, newid, quietempty=True)
+            hg.update(repo, newid[0], quietempty=True)
     return rewrote
 
 def _listtopics(ui, repo, opts):
@@ -875,18 +905,66 @@
     # i18n: column positioning for "hg summary"
     ui.write(_("topic:  %s\n") % ui.label(t, 'topic.active'))
 
+_validmode = [
+    'ignore',
+    'warning',
+    'enforce',
+    'enforce-all',
+    'random',
+    'random-all',
+]
+
+def _configtopicmode(ui):
+    """ Parse the config to get the topicmode
+    """
+    topicmode = ui.config('experimental', 'topic-mode', default=None)
+
+    # Fallback to read enforce-topic
+    if topicmode is None:
+        enforcetopic = ui.configbool('experimental', 'enforce-topic')
+        if enforcetopic:
+            topicmode = "enforce"
+    if topicmode not in _validmode:
+        topicmode = _validmode[0]
+
+    return topicmode
+
 def commitwrap(orig, ui, repo, *args, **opts):
     with repo.wlock():
-        enforcetopic = ui.configbool('experimental', 'enforce-topic')
+        topicmode = _configtopicmode(ui)
+        ismergecommit = len(repo[None].parents()) == 2
+
+        notopic = not repo.currenttopic
+        mayabort = (topicmode == "enforce" and not ismergecommit)
+        maywarn = (topicmode == "warning"
+                   or (topicmode == "enforce" and ismergecommit))
+
+        mayrandom = False
+        if topicmode == "random":
+            mayrandom = not ismergecommit
+        elif topicmode == "random-all":
+            mayrandom = True
+
+        if topicmode == 'enforce-all':
+            ismergecommit = False
+            mayabort = True
+            maywarn = False
+
+        hint = _("see 'hg help -e topic.topic-mode' for details")
         if opts.get('topic'):
             t = opts['topic']
             with repo.vfs.open('topic', 'w') as f:
                 f.write(t)
-        elif not repo.currenttopic and enforcetopic:
+        elif notopic and mayabort:
             msg = _("no active topic")
-            hint = _("set a current topic or use '--config " +
-                     "experimental.enforce-topic=no' to commit without a topic")
             raise error.Abort(msg, hint=hint)
+        elif notopic and maywarn:
+            ui.warn(_("warning: new draft commit without topic\n"))
+            if not ui.quiet:
+                ui.warn(("(%s)") % hint)
+        elif notopic and mayrandom:
+            with repo.vfs.open('topic', 'w') as f:
+                f.write(randomname.randomtopicname(ui))
         return orig(ui, repo, *args, **opts)
 
 def committextwrap(orig, repo, ctx, subs, extramsg):
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hgext3rd/topic/randomname.py	Tue Oct 10 22:40:41 2017 +0200
@@ -0,0 +1,1012 @@
+# randomname.py - topic extension
+#
+# This software may be used and distributed according to the terms of the
+# GNU General Public License version 2 or any later version.
+"""random topic generator utils
+"""
+
+import random
+
+animals = [
+    'aardvark',
+    'albatross',
+    'alligator',
+    'alpaca',
+    'ant',
+    'anteater',
+    'antelope',
+    'ape',
+    'armadillo',
+    'ass',
+    'baboon',
+    'badger',
+    'barracuda',
+    'bat',
+    'bear',
+    'beaver',
+    'bee',
+    'beetle',
+    'bison',
+    'boar',
+    'buffalo',
+    'bushbaby',
+    'bustard',
+    'butterfly',
+    'camel',
+    'capuchin',
+    'carabao',
+    'caribou',
+    'cat',
+    'caterpillar',
+    'cattle',
+    'chameleon',
+    'chamois',
+    'cheetah',
+    'chicken',
+    'chimpanzee',
+    'chinchilla',
+    'chipmunk',
+    'chough',
+    'cicada',
+    'clam',
+    'cobra',
+    'cockroach',
+    'cod',
+    'cormorant',
+    'coyote',
+    'crab',
+    'crane',
+    'cricket',
+    'crocodile',
+    'crow',
+    'curlew',
+    'deer',
+    'dinosaur',
+    'dog',
+    'dogfish',
+    'dolphin',
+    'donkey',
+    'dotterel',
+    'dove',
+    'dragon',
+    'dragonfly',
+    'duck',
+    'dugong',
+    'dunlin',
+    'eagle',
+    'echidna',
+    'eel',
+    'eland',
+    'elephant',
+    'elk',
+    'emu',
+    'falcon',
+    'ferret',
+    'finch',
+    'fish',
+    'flamingo',
+    'fly',
+    'fox',
+    'frog',
+    'gaur',
+    'gazelle',
+    'gecko',
+    'gerbil',
+    'giraffe',
+    'gnat',
+    'gnu',
+    'goat',
+    'goldfish',
+    'goose',
+    'gorilla',
+    'goshawk',
+    'grasshopper',
+    'grouse',
+    'guanaco',
+    'guinea',
+    'gull',
+    'hamster',
+    'hare',
+    'hawk',
+    'hedgehog',
+    'heron',
+    'herring',
+    'hippopotamus',
+    'hornet',
+    'horse',
+    'horsecrab',
+    'hound',
+    'hummingbird',
+    'hyena',
+    'hyrax',
+    'ibex',
+    'ibis',
+    'iguana',
+    'impala',
+    'insect',
+    'jackal',
+    'jaguar',
+    'jay',
+    'jellyfish',
+    'kangaroo',
+    'koala',
+    'kouprey',
+    'kudu',
+    'lapwing',
+    'lark',
+    'lemming',
+    'lemur',
+    'leopard',
+    'lion',
+    'lizard',
+    'llama',
+    'lobster',
+    'locust',
+    'loris',
+    'louse',
+    'lynx',
+    'lyrebird',
+    'magpie',
+    'mallard',
+    'mammoth',
+    'manatee',
+    'marten',
+    'meerkat',
+    'mink',
+    'minnow',
+    'mole',
+    'mongoose',
+    'monkey',
+    'moose',
+    'mosquito',
+    'mouse',
+    'mule',
+    'muskrat',
+    'narwhal',
+    'newt',
+    'nightingale',
+    'numbat',
+    'octopus',
+    'okapi',
+    'opossum',
+    'oryx',
+    'ostrich',
+    'otter',
+    'owl',
+    'ox',
+    'oyster',
+    'panda',
+    'panther',
+    'parrot',
+    'partridge',
+    'peacock',
+    'peafowl',
+    'pelican',
+    'penguin',
+    'pheasant',
+    'pig',
+    'pigeon',
+    'platypus',
+    'pony',
+    'porcupine',
+    'porpoise',
+    'prairie',
+    'puffin',
+    'pug',
+    'quagga',
+    'quail',
+    'quelea',
+    'rabbit',
+    'raccoon',
+    'ram',
+    'rat',
+    'raven',
+    'reindeer',
+    'rhea',
+    'rhinoceros',
+    'rook',
+    'ruff',
+    'salamander',
+    'salmon',
+    'sambar',
+    'sandpiper',
+    'sardine',
+    'scorpion',
+    'seahorse',
+    'seal',
+    'serval',
+    'shark',
+    'sheep',
+    'shrew',
+    'shrimp',
+    'skink',
+    'skunk',
+    'snail',
+    'snake',
+    'spider',
+    'squid',
+    'squirrel',
+    'starling',
+    'stinkbug',
+    'stork',
+    'swan',
+    'tapir',
+    'tarsier',
+    'termite',
+    'tern',
+    'tiger',
+    'toad',
+    'trout',
+    'turkey',
+    'turtle',
+    'unicorn',
+    'viper',
+    'vulture',
+    'wallaby',
+    'walrus',
+    'wasp',
+    'weasel',
+    'whale',
+    'wolf',
+    'wolverine',
+    'wombat',
+    'woodchuck',
+    'woodcock',
+    'woodpecker',
+    'worm',
+    'wren',
+    'yak',
+    'zebra',
+    'zorilla'
+]
+
+adjectives = [
+    'abiding',
+    'abject',
+    'ablaze',
+    'able',
+    'aboard',
+    'abounding',
+    'absorbed',
+    'absorbing',
+    'abstracted',
+    'abundant',
+    'acceptable',
+    'accessible',
+    'accurate',
+    'acoustic',
+    'adamant',
+    'adaptable',
+    'adhesive',
+    'adjoining',
+    'adorable',
+    'adventurous',
+    'affable',
+    'affectionate',
+    'agreeable',
+    'alert',
+    'alive',
+    'alluring',
+    'amazing',
+    'ambiguous',
+    'ambitious',
+    'amiable',
+    'amicable',
+    'amused',
+    'amusing',
+    'ancient',
+    'animated',
+    'apricot',
+    'aquatic',
+    'arctic',
+    'arenaceous',
+    'aromatic',
+    'aspiring',
+    'assiduous',
+    'assorted',
+    'astonishing',
+    'attractive',
+    'auspicious',
+    'automatic',
+    'available',
+    'average',
+    'awake',
+    'aware',
+    'awesome',
+    'axiomatic',
+    'bashful',
+    'bawdy',
+    'beautiful',
+    'beefy',
+    'befitting',
+    'beneficial',
+    'benevolent',
+    'bent',
+    'best',
+    'better',
+    'bewildered',
+    'bewitching',
+    'big',
+    'billowy',
+    'bizarre',
+    'black',
+    'blithe',
+    'blue',
+    'blushing',
+    'bouncy',
+    'boundless',
+    'brainy',
+    'brash',
+    'brave',
+    'brawny',
+    'brazen',
+    'breezy',
+    'brief',
+    'bright',
+    'brilliant',
+    'broad',
+    'brown',
+    'bucolic',
+    'bulky',
+    'bumpy',
+    'burgundy',
+    'burly',
+    'bustling',
+    'busy',
+    'calm',
+    'capable',
+    'capricious',
+    'captivating',
+    'carefree',
+    'careful',
+    'caring',
+    'carrot',
+    'ceaseless',
+    'cerise',
+    'certain',
+    'challenging',
+    'changeable',
+    'charming',
+    'cheerful',
+    'chief',
+    'chilly',
+    'chipper',
+    'classy',
+    'clean',
+    'clear',
+    'clever',
+    'cloudy',
+    'coherent',
+    'colorful',
+    'colossal',
+    'comfortable',
+    'common',
+    'communicative',
+    'compassionate',
+    'complete',
+    'complex',
+    'compulsive',
+    'confused',
+    'conscientious',
+    'conscious',
+    'conservative',
+    'considerate',
+    'convivial',
+    'cooing',
+    'cool',
+    'cooperative',
+    'coordinated',
+    'courageous',
+    'courteous',
+    'crazy',
+    'creative',
+    'crispy',
+    'crooked',
+    'crowded',
+    'cuddly',
+    'cultured',
+    'cunning',
+    'curious',
+    'curly',
+    'curved',
+    'curvy',
+    'cut',
+    'cute',
+    'daily',
+    'damp',
+    'dapper',
+    'dashing',
+    'dazzling',
+    'dear',
+    'debonair',
+    'decisive',
+    'decorous',
+    'deep',
+    'defiant',
+    'delicate',
+    'delicious',
+    'delighted',
+    'delightful',
+    'delirious',
+    'descriptive',
+    'detached',
+    'detailed',
+    'determined',
+    'different',
+    'diligent',
+    'diminutive',
+    'diplomatic',
+    'discreet',
+    'distinct',
+    'distinctive',
+    'dramatic',
+    'dry',
+    'dynamic',
+    'dynamite',
+    'eager',
+    'early',
+    'earthy',
+    'easy',
+    'easygoing',
+    'eatable',
+    'economic',
+    'ecstatic',
+    'educated',
+    'efficacious',
+    'efficient',
+    'effortless',
+    'eight',
+    'elastic',
+    'elated',
+    'electric',
+    'elegant',
+    'elfin',
+    'elite',
+    'eminent',
+    'emotional',
+    'enchanted',
+    'enchanting',
+    'encouraging',
+    'endless',
+    'energetic',
+    'enormous',
+    'entertaining',
+    'enthusiastic',
+    'envious',
+    'epicurean',
+    'equable',
+    'equal',
+    'eternal',
+    'ethereal',
+    'evanescent',
+    'even',
+    'excellent',
+    'excited',
+    'exciting',
+    'exclusive',
+    'exotic',
+    'expensive',
+    'exquisite',
+    'extroverted',
+    'exuberant',
+    'exultant',
+    'fabulous',
+    'fair',
+    'faithful',
+    'familiar',
+    'famous',
+    'fancy',
+    'fantastic',
+    'far',
+    'fascinated',
+    'fast',
+    'fearless',
+    'female',
+    'fertile',
+    'festive',
+    'few',
+    'fine',
+    'first',
+    'five',
+    'fixed',
+    'flamboyant',
+    'flashy',
+    'flat',
+    'flawless',
+    'flirtatious',
+    'florid',
+    'flowery',
+    'fluffy',
+    'fluttering',
+    'foamy',
+    'foolish',
+    'foregoing',
+    'fortunate',
+    'four',
+    'frank',
+    'free',
+    'frequent',
+    'fresh',
+    'friendly',
+    'full',
+    'functional',
+    'funny',
+    'furry',
+    'future',
+    'futuristic',
+    'fuzzy',
+    'gabby',
+    'gainful',
+    'garrulous',
+    'general',
+    'generous',
+    'gentle',
+    'giant',
+    'giddy',
+    'gifted',
+    'gigantic',
+    'gilded',
+    'glamorous',
+    'gleaming',
+    'glorious',
+    'glossy',
+    'glowing',
+    'godly',
+    'good',
+    'goofy',
+    'gorgeous',
+    'graceful',
+    'grandiose',
+    'grateful',
+    'gratis',
+    'gray',
+    'great',
+    'green',
+    'gregarious',
+    'grey',
+    'groovy',
+    'guiltless',
+    'gusty',
+    'guttural',
+    'habitual',
+    'half',
+    'hallowed',
+    'halting',
+    'handsome',
+    'happy',
+    'hard',
+    'hardworking',
+    'harmonious',
+    'heady',
+    'healthy',
+    'heavenly',
+    'helpful',
+    'hilarious',
+    'historical',
+    'holistic',
+    'hollow',
+    'honest',
+    'honorable',
+    'hopeful',
+    'hospitable',
+    'hot',
+    'huge',
+    'humorous',
+    'hungry',
+    'hushed',
+    'hypnotic',
+    'illustrious',
+    'imaginary',
+    'imaginative',
+    'immense',
+    'imminent',
+    'impartial',
+    'important',
+    'imported',
+    'impossible',
+    'incandescent',
+    'inconclusive',
+    'incredible',
+    'independent',
+    'industrious',
+    'inexpensive',
+    'innate',
+    'innocent',
+    'inquisitive',
+    'instinctive',
+    'intellectual',
+    'intelligent',
+    'intense',
+    'interesting',
+    'internal',
+    'intuitive',
+    'inventive',
+    'invincible',
+    'jazzy',
+    'jolly',
+    'joyful',
+    'joyous',
+    'judicious',
+    'juicy',
+    'jumpy',
+    'keen',
+    'kind',
+    'kindhearted',
+    'kindly',
+    'knotty',
+    'knowing',
+    'knowledgeable',
+    'known',
+    'laconic',
+    'large',
+    'lavish',
+    'lean',
+    'learned',
+    'left',
+    'legal',
+    'level',
+    'light',
+    'likeable',
+    'literate',
+    'little',
+    'lively',
+    'living',
+    'long',
+    'longing',
+    'loud',
+    'lovely',
+    'loving',
+    'loyal',
+    'lucky',
+    'luminous',
+    'lush',
+    'luxuriant',
+    'luxurious',
+    'lyrical',
+    'magenta',
+    'magical',
+    'magnificent',
+    'majestic',
+    'male',
+    'mammoth',
+    'many',
+    'marvelous',
+    'massive',
+    'material',
+    'mature',
+    'meandering',
+    'meaty',
+    'medical',
+    'mellow',
+    'melodic',
+    'melted',
+    'merciful',
+    'mighty',
+    'miniature',
+    'miniscule',
+    'minor',
+    'minute',
+    'misty',
+    'modern',
+    'modest',
+    'momentous',
+    'motionless',
+    'mountainous',
+    'mute',
+    'mysterious',
+    'narrow',
+    'natural',
+    'near',
+    'neat',
+    'nebulous',
+    'necessary',
+    'neighborly',
+    'new',
+    'next',
+    'nice',
+    'nifty',
+    'nimble',
+    'nine',
+    'nippy',
+    'noiseless',
+    'noisy',
+    'nonchalant',
+    'normal',
+    'numberless',
+    'numerous',
+    'nutritious',
+    'obedient',
+    'observant',
+    'obtainable',
+    'oceanic',
+    'omniscient',
+    'one',
+    'open',
+    'opposite',
+    'optimal',
+    'optimistic',
+    'opulent',
+    'orange',
+    'ordinary',
+    'organic',
+    'outgoing',
+    'outrageous',
+    'outstanding',
+    'oval',
+    'overjoyed',
+    'overt',
+    'palatial',
+    'panoramic',
+    'parallel',
+    'passionate',
+    'past',
+    'pastoral',
+    'patient',
+    'peaceful',
+    'perfect',
+    'periodic',
+    'permissible',
+    'perpetual',
+    'persistent',
+    'petite',
+    'philosophical',
+    'physical',
+    'picturesque',
+    'pink',
+    'pioneering',
+    'piquant',
+    'plausible',
+    'pleasant',
+    'plucky',
+    'poised',
+    'polite',
+    'possible',
+    'powerful',
+    'practical',
+    'precious',
+    'premium',
+    'present',
+    'pretty',
+    'previous',
+    'private',
+    'probable',
+    'productive',
+    'profound',
+    'profuse',
+    'protective',
+    'proud',
+    'psychedelic',
+    'public',
+    'pumped',
+    'purple',
+    'purring',
+    'puzzled',
+    'puzzling',
+    'quaint',
+    'quick',
+    'quicker',
+    'quickest',
+    'quiet',
+    'quirky',
+    'quixotic',
+    'quizzical',
+    'rainy',
+    'rapid',
+    'rare',
+    'rational',
+    'ready',
+    'real',
+    'rebel',
+    'receptive',
+    'red',
+    'reflective',
+    'regular',
+    'relaxed',
+    'reliable',
+    'relieved',
+    'remarkable',
+    'reminiscent',
+    'reserved',
+    'resolute',
+    'resonant',
+    'resourceful',
+    'responsible',
+    'rich',
+    'ridiculous',
+    'right',
+    'rightful',
+    'ripe',
+    'ritzy',
+    'roasted',
+    'robust',
+    'romantic',
+    'roomy',
+    'round',
+    'royal',
+    'ruddy',
+    'rural',
+    'rustic',
+    'sable',
+    'safe',
+    'salty',
+    'same',
+    'satisfying',
+    'savory',
+    'scientific',
+    'scintillating',
+    'scrumptious',
+    'second',
+    'secret',
+    'secretive',
+    'seemly',
+    'selective',
+    'sensible',
+    'separate',
+    'shaggy',
+    'shaky',
+    'shining',
+    'shiny',
+    'short',
+    'shy',
+    'silent',
+    'silky',
+    'silly',
+    'simple',
+    'simplistic',
+    'sincere',
+    'six',
+    'sizzling',
+    'skillful',
+    'sleepy',
+    'slick',
+    'slim',
+    'smart',
+    'smiling',
+    'smooth',
+    'soaring',
+    'sociable',
+    'soft',
+    'solid',
+    'sophisticated',
+    'sparkling',
+    'special',
+    'spectacular',
+    'speedy',
+    'spicy',
+    'spiffy',
+    'spiritual',
+    'splendid',
+    'spooky',
+    'spotless',
+    'spotted',
+    'square',
+    'standing',
+    'statuesque',
+    'steadfast',
+    'steady',
+    'steep',
+    'stimulating',
+    'straight',
+    'straightforward',
+    'striking',
+    'striped',
+    'strong',
+    'stunning',
+    'stupendous',
+    'sturdy',
+    'subsequent',
+    'substantial',
+    'subtle',
+    'successful',
+    'succinct',
+    'sudden',
+    'super',
+    'superb',
+    'supreme',
+    'swanky',
+    'sweet',
+    'swift',
+    'sympathetic',
+    'synonymous',
+    'talented',
+    'tall',
+    'tame',
+    'tan',
+    'tangible',
+    'tangy',
+    'tasteful',
+    'tasty',
+    'telling',
+    'temporary',
+    'tempting',
+    'ten',
+    'tender',
+    'terrific',
+    'tested',
+    'thankful',
+    'therapeutic',
+    'thin',
+    'thinkable',
+    'third',
+    'thoughtful',
+    'three',
+    'thrifty',
+    'tidy',
+    'tiny',
+    'toothsome',
+    'towering',
+    'tranquil',
+    'tremendous',
+    'tricky',
+    'true',
+    'truthful',
+    'two',
+    'typical',
+    'ubiquitous',
+    'ultra',
+    'unassuming',
+    'unbiased',
+    'uncovered',
+    'understanding',
+    'understood',
+    'unequaled',
+    'unique',
+    'unusual',
+    'unwritten',
+    'upbeat',
+    'useful',
+    'utopian',
+    'utter',
+    'uttermost',
+    'valuable',
+    'various',
+    'vast',
+    'verdant',
+    'vermilion',
+    'versatile',
+    'versed',
+    'victorious',
+    'vigorous',
+    'violet',
+    'vivacious',
+    'voiceless',
+    'voluptuous',
+    'wacky',
+    'waiting',
+    'wakeful',
+    'wandering',
+    'warm',
+    'warmhearted',
+    'wealthy',
+    'whimsical',
+    'whispering',
+    'white',
+    'whole',
+    'wholesale',
+    'whopping',
+    'wide',
+    'wiggly',
+    'wild',
+    'willing',
+    'windy',
+    'winsome',
+    'wiry',
+    'wise',
+    'wistful',
+    'witty',
+    'womanly',
+    'wonderful',
+    'workable',
+    'young',
+    'youthful',
+    'yummy',
+    'zany',
+    'zealous',
+    'zesty',
+    'zippy'
+]
+
+def randomtopicname(ui):
+    if ui.configint("devel", "randomseed"):
+        random.seed(ui.configint("devel", "randomseed"))
+    return random.choice(adjectives) + "-" + random.choice(animals)
--- a/tests/test-amend.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-amend.t	Tue Oct 10 22:40:41 2017 +0200
@@ -21,13 +21,12 @@
   $ hg amend -d '0 0'
   $ hg debugobsolete
   07f4944404050f47db2e5c5071e0e84e7a27bba9 6a022cbb61d5ba0f03f98ff2d36319dfea1034ae 0 (*) {'ef1': '*', 'user': 'test'} (glob)
-  b2e32ffb533cbe1d5759638c0cd4e8abc43b2738 0 {07f4944404050f47db2e5c5071e0e84e7a27bba9} (*) {'ef1': '*', 'user': 'test'} (glob)
   $ hg branch
   foo
   $ hg branches
-  foo                            2:6a022cbb61d5
+  foo                            1:6a022cbb61d5
   $ glog
-  @  2@foo(draft) adda
+  @  1@foo(draft) adda
   
 Test no-op
 
@@ -35,7 +34,7 @@
   nothing changed
   [1]
   $ glog
-  @  2@foo(draft) adda
+  @  1@foo(draft) adda
   
 
 Test forcing the message to the same value, no intermediate revision.
@@ -44,7 +43,7 @@
   nothing changed
   [1]
   $ glog
-  @  2@foo(draft) adda
+  @  1@foo(draft) adda
   
 
 Test collapsing into an existing revision, no intermediate revision.
@@ -66,20 +65,19 @@
   $ hg ci -m reseta
   $ hg debugobsolete
   07f4944404050f47db2e5c5071e0e84e7a27bba9 6a022cbb61d5ba0f03f98ff2d36319dfea1034ae 0 (*) {'ef1': '*', 'user': 'test'} (glob)
-  b2e32ffb533cbe1d5759638c0cd4e8abc43b2738 0 {07f4944404050f47db2e5c5071e0e84e7a27bba9} (*) {'ef1': '*', 'user': 'test'} (glob)
   $ hg phase 2
   2: draft
   $ glog
-  @  4@foo(draft) reseta
+  @  3@foo(draft) reseta
   |
-  o  3@foo(draft) changea
+  o  2@foo(draft) changea
   |
-  o  2@foo(draft) adda
+  o  1@foo(draft) adda
   
 Specify precise commit date with -d
   $ hg amend -d '2001-02-03 04:05:06 +0700'
   $ hg parents --template '{rev}  {date|date}\n'
-  5  Sat Feb 03 04:05:06 2001 +0700
+  4  Sat Feb 03 04:05:06 2001 +0700
 
 Specify "now" as commit date with -D
   $ before=`date +%s`
@@ -88,13 +86,13 @@
   $ after=`date +%s`
   $ (echo $before ; echo $commit; echo $after) | sort -k1 -n -s
   \d+ (re)
-  \d+ 0 rev6 (re)
+  \d+ 0 rev5 (re)
   \d+ (re)
 
 Specify current user as committer with -U
   $ HGUSER=newbie hg amend -U
   $ hg parents --template '{rev}  {author}\n'
-  7  newbie
+  6  newbie
 
 Check that --logfile works
   $ echo "logfile message" > logfile.txt
@@ -109,7 +107,7 @@
   (use 'hg config --edit' to set your username)
   [255]
   $ hg sum
-  parent: 8:* tip (glob)
+  parent: 7:* tip (glob)
    logfile message
   branch: foo
   commit: 1 unknown (clean)
--- a/tests/test-discovery-obshashrange.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-discovery-obshashrange.t	Tue Oct 10 22:40:41 2017 +0200
@@ -31,6 +31,7 @@
   $ cd server
   $ hg debugbuilddag '.+7'
   $ hg blackbox
+  * @0000000000000000000000000000000000000000 (*)> init server exited 0 after *.?? seconds (glob)
   * @0000000000000000000000000000000000000000 (*)> serve --stdio (glob)
   * @0000000000000000000000000000000000000000 (*)> -R server serve --stdio exited 0 after *.?? seconds (glob)
   * @0000000000000000000000000000000000000000 (*)> debugbuilddag .+7 (glob)
@@ -151,6 +152,7 @@
   cccccccccccccccccccccccccccccccccccccccc bebd167eb94d257ace0e814aeb98e6972ed2970d 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
   $ rm ../server/.hg/blackbox.log
   $ hg blackbox
+  * @0000000000000000000000000000000000000000 (*)> clone 'ssh://user@dummy/server' client exited 0 after *.?? seconds (glob)
   * @0000000000000000000000000000000000000000 (*)> pull --rev 4 (glob)
   * @0000000000000000000000000000000000000000 (*)> updated stablerange cache in *.???? seconds (glob)
   * @0000000000000000000000000000000000000000 (*)> updated evo-ext-obshashrange in *.???? seconds (5r, 3o) (glob)
@@ -180,8 +182,8 @@
   running python "*/dummyssh" 'user@dummy' 'hg -R server serve --stdio' (glob)
   sending hello command
   sending between command
-  remote: 516
-  remote: capabilities: _evoext_getbundle_obscommon _evoext_obshash_0 _evoext_obshash_1 _evoext_obshashrange_v0 _evoext_pullobsmarkers_0 _evoext_pushobsmarkers_0 batch branchmap bundle2=HG20%0Achangegroup%3D01%2C02%0Adigests%3Dmd5%2Csha1%2Csha512%0Aerror%3Dabort%2Cunsupportedcontent%2Cpushraced%2Cpushkey%0Ahgtagsfnodes%0Alistkeys%0Aobsmarkers%3DV0%2CV1%0Apushkey%0Aremote-changegroup%3Dhttp%2Chttps changegroupsubset getbundle known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
+  remote: 533
+  remote: capabilities: _evoext_getbundle_obscommon _evoext_obshash_0 _evoext_obshash_1 _evoext_obshashrange_v0 _evoext_pullobsmarkers_0 _evoext_pushobsmarkers_0 batch branchmap bundle2=HG20%0Achangegroup%3D01%2C02%0Adigests%3Dmd5%2Csha1%2Csha512%0Aerror%3Dabort%2Cunsupportedcontent%2Cpushraced%2Cpushkey%0Ahgtagsfnodes%0Alistkeys%0Aobsmarkers%3DV0%2CV1%0Aphases%3Dheads%0Apushkey%0Aremote-changegroup%3Dhttp%2Chttps changegroupsubset getbundle known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
   remote: 1
   preparing listkeys for "phases"
   sending listkeys command
@@ -215,7 +217,7 @@
   45f8b879de922f6a6e620ba04205730335b6fc7e
   sending unbundle command
   bundle2-output-bundle: "HG20", 4 parts total
-  bundle2-output-part: "replycaps" 172 bytes payload
+  bundle2-output-part: "replycaps" 185 bytes payload
   bundle2-output-part: "changegroup" (params: 1 mandatory) streamed payload
   bundle2-output-part: "pushkey" (params: 4 mandatory) empty payload
   bundle2-output-part: "obsmarkers" streamed payload
--- a/tests/test-divergent.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-divergent.t	Tue Oct 10 22:40:41 2017 +0200
@@ -45,7 +45,7 @@
   1 changesets pruned
   $ hg prune -s "desc(bdivergent2)" "desc(_b)" --hidden
   1 changesets pruned
-  2 new divergent changesets
+  2 new content-divergent changesets
   $ hg log -G
   @  3:e708fd28d5cf@default(draft) add bdivergent2 [content-divergent]
   |
@@ -62,7 +62,7 @@
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   working directory is now at c26f1d3baed2
   $ hg log -G
-  @  5:c26f1d3baed2@default(draft) add bdivergent1 []
+  @  4:c26f1d3baed2@default(draft) add bdivergent1 []
   |
   o  0:135f39f4bd78@default(draft) add _a []
   
@@ -88,24 +88,25 @@
   1 changesets pruned
   $ hg prune -s "desc(cdivergent2)" "desc(_c)" --hidden
   1 changesets pruned
-  2 new divergent changesets
+  2 new content-divergent changesets
   $ hg log -G
-  @  8:0a768ef678d9@default(draft) cdivergent2 [content-divergent]
+  @  7:0a768ef678d9@default(draft) cdivergent2 [content-divergent]
   |
-  | o  7:26c7705fee96@default(draft) add cdivergent1 [content-divergent]
+  | o  6:26c7705fee96@default(draft) add cdivergent1 [content-divergent]
   |/
-  | o  5:c26f1d3baed2@default(draft) add bdivergent1 []
+  | o  4:c26f1d3baed2@default(draft) add bdivergent1 []
   |/
   o  0:135f39f4bd78@default(draft) add _a []
   
   $ hg evolve --all --any --contentdivergent
-  merge:[7] add cdivergent1
-  with: [8] cdivergent2
-  base: [6] add _c
+  merge:[6] add cdivergent1
+  with: [7] cdivergent2
+  base: [5] add _c
   updating to "local" conflict
   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  working directory is now at 6602ff5a79dc
+  nothing changed
+  working directory is now at 26c7705fee96
 
 Test None docstring issue of evolve divergent, which caused hg crush
 
@@ -124,7 +125,7 @@
   1 changesets pruned
   $ hg prune -s "desc(bdivergent2)" "desc(_b)" --hidden
   1 changesets pruned
-  2 new divergent changesets
+  2 new content-divergent changesets
   $ hg log -G
   @  3:e708fd28d5cf@default(draft) add bdivergent2 [content-divergent]
   |
--- a/tests/test-drop.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-drop.t	Tue Oct 10 22:40:41 2017 +0200
@@ -178,7 +178,7 @@
   $ hg commit --amend
   $ summary
   ============ graph ==============
-  @  changeset:   4:a2c06c884bfe
+  @  changeset:   3:a2c06c884bfe
   |  tag:         tip
   |  parent:      1:19509a42b0d0
   |  user:        test
@@ -196,19 +196,13 @@
      summary:     add base
   
   ============ hidden =============
-  @  changeset:   4:a2c06c884bfe
+  @  changeset:   3:a2c06c884bfe
   |  tag:         tip
   |  parent:      1:19509a42b0d0
   |  user:        test
   |  date:        Thu Jan 01 00:00:00 1970 +0000
   |  summary:     add child
   |
-  | x  changeset:   3:87ea30a976fd
-  | |  user:        test
-  | |  date:        Thu Jan 01 00:00:00 1970 +0000
-  | |  obsolete:    pruned
-  | |  summary:     temporary amend commit for 34b6c051bf1f
-  | |
   | x  changeset:   2:34b6c051bf1f
   |/   user:        test
   |    date:        Thu Jan 01 00:00:00 1970 +0000
@@ -227,7 +221,6 @@
   
   ============ obsmark ============
   34b6c051bf1f78db6aef400776de5cb964470207 a2c06c884bfe53d3840026248bd8a7eafa152df8 0 (*) {'ef1': '*', 'user': 'test'} (glob)
-  87ea30a976fdf235bf096f04899cb02a903873e2 0 {34b6c051bf1f78db6aef400776de5cb964470207} (*) {'ef1': '*', 'user': 'test'} (glob)
   $ hg drop .
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
   working directory now at 19509a42b0d0
--- a/tests/test-evolve-bumped.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-evolve-bumped.t	Tue Oct 10 22:40:41 2017 +0200
@@ -67,7 +67,7 @@
   pulling from ../public
   searching for changes
   no changes found
-  1 new bumped changesets
+  1 new phase-divergent changesets
 
   $ hg evolve -a -A --phasedivergent
   recreate:[2] tweak a
@@ -105,7 +105,7 @@
   $ hg commit -m "merge"
   $ hg commit --amend -m "New message"
   $ hg phase --public 551127da2a8a --hidden
-  1 new bumped changesets
+  1 new phase-divergent changesets
   $ hg log -G
   @    7:b28e84916d8c@default(draft) New message
   |\
--- a/tests/test-evolve-cycles.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-evolve-cycles.t	Tue Oct 10 22:40:41 2017 +0200
@@ -50,7 +50,7 @@
 Create a cycle
   $ hg prune -s "desc(B)" "desc(A)"
   1 changesets pruned
-  2 new unstable changesets
+  2 new orphan changesets
   $ hg prune -s "desc(C)" "desc(B)"
   1 changesets pruned
   $ hg prune -s "desc(A)" "desc(C)"
@@ -89,48 +89,48 @@
 
   $ hg obslog "desc(A)" --hidden
   @  2a34000d3544 (1) A
-  |    rewritten(description, parent, content) as c473644ee0e9 by test (Thu Jan 01 00:00:00 1970 +0000)
+  |    rewritten(description, parent, content) as c473644ee0e9 by test (*) (glob)
   |
   x  a8df460dbbfe (3) C
-  |    rewritten(description, parent, content) as 2a34000d3544 by test (Thu Jan 01 00:00:00 1970 +0000)
+  |    rewritten(description, parent, content) as 2a34000d3544 by test (*) (glob)
   |
   x  c473644ee0e9 (2) B
-  |    rewritten(description, parent, content) as a8df460dbbfe by test (Thu Jan 01 00:00:00 1970 +0000)
+  |    rewritten(description, parent, content) as a8df460dbbfe by test (*) (glob)
   |
 
   $ hg obslog "desc(B)" --hidden
   @  2a34000d3544 (1) A
-  |    rewritten(description, parent, content) as c473644ee0e9 by test (Thu Jan 01 00:00:00 1970 +0000)
+  |    rewritten(description, parent, content) as c473644ee0e9 by test (*) (glob)
   |
   x  a8df460dbbfe (3) C
-  |    rewritten(description, parent, content) as 2a34000d3544 by test (Thu Jan 01 00:00:00 1970 +0000)
+  |    rewritten(description, parent, content) as 2a34000d3544 by test (*) (glob)
   |
   x  c473644ee0e9 (2) B
-  |    rewritten(description, parent, content) as a8df460dbbfe by test (Thu Jan 01 00:00:00 1970 +0000)
+  |    rewritten(description, parent, content) as a8df460dbbfe by test (*) (glob)
   |
 
   $ hg obslog "desc(C)" --hidden
   @  2a34000d3544 (1) A
-  |    rewritten(description, parent, content) as c473644ee0e9 by test (Thu Jan 01 00:00:00 1970 +0000)
+  |    rewritten(description, parent, content) as c473644ee0e9 by test (*) (glob)
   |
   x  a8df460dbbfe (3) C
-  |    rewritten(description, parent, content) as 2a34000d3544 by test (Thu Jan 01 00:00:00 1970 +0000)
+  |    rewritten(description, parent, content) as 2a34000d3544 by test (*) (glob)
   |
   x  c473644ee0e9 (2) B
-  |    rewritten(description, parent, content) as a8df460dbbfe by test (Thu Jan 01 00:00:00 1970 +0000)
+  |    rewritten(description, parent, content) as a8df460dbbfe by test (*) (glob)
   |
 
 Check that all option don't crash on a cycle either
 
   $ hg obslog "desc(C)" --hidden --all
   @  2a34000d3544 (1) A
-  |    rewritten(description, parent, content) as c473644ee0e9 by test (Thu Jan 01 00:00:00 1970 +0000)
+  |    rewritten(description, parent, content) as c473644ee0e9 by test (*) (glob)
   |
   x  a8df460dbbfe (3) C
-  |    rewritten(description, parent, content) as 2a34000d3544 by test (Thu Jan 01 00:00:00 1970 +0000)
+  |    rewritten(description, parent, content) as 2a34000d3544 by test (*) (glob)
   |
   x  c473644ee0e9 (2) B
-  |    rewritten(description, parent, content) as a8df460dbbfe by test (Thu Jan 01 00:00:00 1970 +0000)
+  |    rewritten(description, parent, content) as a8df460dbbfe by test (*) (glob)
   |
 
 Test with multiple cyles
@@ -188,7 +188,7 @@
 Create a first cycle
   $ hg prune -s "desc(B)" "desc(A)"
   1 changesets pruned
-  5 new unstable changesets
+  5 new orphan changesets
   $ hg prune -s "desc(C)" "desc(B)"
   1 changesets pruned
   $ hg prune --split -s "desc(A)" -s "desc(D)" "desc(C)"
@@ -252,42 +252,42 @@
 
   $ hg obslog "desc(D)" --hidden
   x  0da815c333f6 (5) E
-  |    rewritten(description, parent, content) as d9f908fde1a1 by test (Thu Jan 01 00:00:00 1970 +0000)
+  |    rewritten(description, parent, content) as d9f908fde1a1 by test (*) (glob)
   |
   @    868d2e0eb19c (4) D
-  |\     rewritten(description, parent, content) as 0da815c333f6 by test (Thu Jan 01 00:00:00 1970 +0000)
+  |\     rewritten(description, parent, content) as 0da815c333f6 by test (*) (glob)
   | |
   | x  d9f908fde1a1 (6) F
-  | |    rewritten(description, parent, content) as 868d2e0eb19c by test (Thu Jan 01 00:00:00 1970 +0000)
+  | |    rewritten(description, parent, content) as 868d2e0eb19c by test (*) (glob)
   | |
   +---x  2a34000d3544 (1) A
-  | |      rewritten(description, parent, content) as c473644ee0e9 by test (Thu Jan 01 00:00:00 1970 +0000)
+  | |      rewritten(description, parent, content) as c473644ee0e9 by test (*) (glob)
   | |
   x |  a8df460dbbfe (3) C
-  | |    rewritten(description, parent, content) as 2a34000d3544, 868d2e0eb19c by test (Thu Jan 01 00:00:00 1970 +0000)
+  | |    rewritten(description, parent, content) as 2a34000d3544, 868d2e0eb19c by test (*) (glob)
   | |
   x |  c473644ee0e9 (2) B
-  | |    rewritten(description, parent, content) as a8df460dbbfe by test (Thu Jan 01 00:00:00 1970 +0000)
+  | |    rewritten(description, parent, content) as a8df460dbbfe by test (*) (glob)
   | |
 Check that all option don't crash either on a cycle
   $ hg obslog --all --hidden "desc(F)"
   x  0da815c333f6 (5) E
-  |    rewritten(description, parent, content) as d9f908fde1a1 by test (Thu Jan 01 00:00:00 1970 +0000)
+  |    rewritten(description, parent, content) as d9f908fde1a1 by test (*) (glob)
   |
   @    868d2e0eb19c (4) D
-  |\     rewritten(description, parent, content) as 0da815c333f6 by test (Thu Jan 01 00:00:00 1970 +0000)
+  |\     rewritten(description, parent, content) as 0da815c333f6 by test (*) (glob)
   | |
   | x  d9f908fde1a1 (6) F
-  | |    rewritten(description, parent, content) as 868d2e0eb19c by test (Thu Jan 01 00:00:00 1970 +0000)
+  | |    rewritten(description, parent, content) as 868d2e0eb19c by test (*) (glob)
   | |
   +---x  2a34000d3544 (1) A
-  | |      rewritten(description, parent, content) as c473644ee0e9 by test (Thu Jan 01 00:00:00 1970 +0000)
+  | |      rewritten(description, parent, content) as c473644ee0e9 by test (*) (glob)
   | |
   x |  a8df460dbbfe (3) C
-  | |    rewritten(description, parent, content) as 2a34000d3544, 868d2e0eb19c by test (Thu Jan 01 00:00:00 1970 +0000)
+  | |    rewritten(description, parent, content) as 2a34000d3544, 868d2e0eb19c by test (*) (glob)
   | |
   x |  c473644ee0e9 (2) B
-  | |    rewritten(description, parent, content) as a8df460dbbfe by test (Thu Jan 01 00:00:00 1970 +0000)
+  | |    rewritten(description, parent, content) as a8df460dbbfe by test (*) (glob)
   | |
 Check the json output is valid in this case
 
@@ -301,7 +301,7 @@
                       0
                   ],
                   "effect": [
-                      *, (glob)
+                      "description",
                       "parent",
                       "content"
                   ],
@@ -413,7 +413,7 @@
           "markers": [
               {
                   "date": [
-                      0.0,
+                      *, (glob)
                       0
                   ],
                   "effect": [
--- a/tests/test-evolve-effectflags.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-evolve-effectflags.t	Tue Oct 10 22:40:41 2017 +0200
@@ -29,12 +29,12 @@
 check result
 
   $ hg debugobsolete --rev .
-  471f378eab4c5e25f6c77f785b27c936efb22874 fdf9bde5129a28d4548fadd3f62b265cdd3b7a2e 0 (*) {'ef1': '1', 'user': 'test'} (glob)
+  471f378eab4c5e25f6c77f785b27c936efb22874 fdf9bde5129a28d4548fadd3f62b265cdd3b7a2e 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '1', 'operation': 'amend', 'user': 'test'}
   $ hg obslog .
   @  fdf9bde5129a (2) A1
   |
   x  471f378eab4c (1) A0
-       rewritten(description) as fdf9bde5129a by test (Thu Jan 01 00:00:00 1970 +0000)
+       rewritten(description) as fdf9bde5129a by test (*) (glob)
   
   $ hg log --hidden -r "desc(A0)"
   changeset:   1:471f378eab4c
@@ -53,12 +53,12 @@
 check result
 
   $ hg debugobsolete --rev .
-  ef4a313b1e0ade55718395d80e6b88c5ccd875eb 5485c92d34330dac9d7a63dc07e1e3373835b964 0 (*) {'ef1': '16', 'user': 'test'} (glob)
+  ef4a313b1e0ade55718395d80e6b88c5ccd875eb 5485c92d34330dac9d7a63dc07e1e3373835b964 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '16', 'operation': 'amend', 'user': 'test'}
   $ hg obslog .
   @  5485c92d3433 (4) B0
   |
   x  ef4a313b1e0a (3) B0
-       rewritten(user) as 5485c92d3433 by test (Thu Jan 01 00:00:00 1970 +0000)
+       rewritten(user) as 5485c92d3433 by test (*) (glob)
   
   $ hg log --hidden -r "ef4a313b1e0a"
   changeset:   3:ef4a313b1e0a
@@ -77,12 +77,12 @@
 check result
 
   $ hg debugobsolete --rev .
-  2ef0680ff45038ac28c9f1ff3644341f54487280 4dd84345082e9e5291c2e6b3f335bbf8bf389378 0 (*) {'ef1': '32', 'user': 'test'} (glob)
+  2ef0680ff45038ac28c9f1ff3644341f54487280 4dd84345082e9e5291c2e6b3f335bbf8bf389378 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '32', 'operation': 'amend', 'user': 'test'}
   $ hg obslog .
   @  4dd84345082e (6) B1
   |
   x  2ef0680ff450 (5) B1
-       rewritten(date) as 4dd84345082e by test (Thu Jan 01 00:00:00 1970 +0000)
+       rewritten(date) as 4dd84345082e by test (*) (glob)
   
   $ hg log --hidden -r "2ef0680ff450"
   changeset:   5:2ef0680ff450
@@ -104,13 +104,12 @@
 check result
 
   $ hg debugobsolete --rev .
-  4d1430a201c1ffbd8465dec75edd4a691a2d97ec 0 {bd3db8264ceebf1966319f5df3be7aac6acd1a8e} (*) {'ef1': '0', 'user': 'test'} (glob)
-  bd3db8264ceebf1966319f5df3be7aac6acd1a8e 14a01456e0574f0e0a0b15b2345486a6364a8d79 0 (*) {'ef1': '64', 'user': 'test'} (glob)
+  bd3db8264ceebf1966319f5df3be7aac6acd1a8e 14a01456e0574f0e0a0b15b2345486a6364a8d79 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '64', 'operation': 'amend', 'user': 'test'}
   $ hg obslog .
-  @  14a01456e057 (9) B2
+  @  14a01456e057 (8) B2
   |
   x  bd3db8264cee (7) B2
-       rewritten(branch) as 14a01456e057 by test (Thu Jan 01 00:00:00 1970 +0000)
+       rewritten(branch) as 14a01456e057 by test (*) (glob)
   
   $ hg log --hidden -r "bd3db8264cee"
   changeset:   7:bd3db8264cee
@@ -129,20 +128,20 @@
   $ mkcommit C0
   $ mkcommit D0
   $ hg rebase -r . -d 'desc(B0)'
-  rebasing 11:c85eff83a034 "D0" (tip)
+  rebasing 10:c85eff83a034 "D0" (tip)
 
 check result
 
   $ hg debugobsolete --rev .
-  c85eff83a0340efd9da52b806a94c350222f3371 da86aa2f19a30d6686b15cae15c7b6c908ec9699 0 (*) {'ef1': '4', 'user': 'test'} (glob)
+  c85eff83a0340efd9da52b806a94c350222f3371 da86aa2f19a30d6686b15cae15c7b6c908ec9699 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '4', 'operation': 'rebase', 'user': 'test'}
   $ hg obslog .
-  @  da86aa2f19a3 (12) D0
+  @  da86aa2f19a3 (11) D0
   |
-  x  c85eff83a034 (11) D0
-       rewritten(parent) as da86aa2f19a3 by test (Thu Jan 01 00:00:00 1970 +0000)
+  x  c85eff83a034 (10) D0
+       rewritten(parent) as da86aa2f19a3 by test (*) (glob)
   
   $ hg log --hidden -r "c85eff83a034"
-  changeset:   11:c85eff83a034
+  changeset:   10:c85eff83a034
   user:        test
   date:        Thu Jan 01 00:00:00 1970 +0000
   obsolete:    rebased as da86aa2f19a3
@@ -159,16 +158,15 @@
 check result
 
   $ hg debugobsolete --rev .
-  d6f4d8b8d3c8cde990f13915bced7f92ce1cc54f 0 {ebfe0333e0d96f68a917afd97c0a0af87f1c3b5f} (*) {'ef1': '0', 'user': 'test'} (glob)
-  ebfe0333e0d96f68a917afd97c0a0af87f1c3b5f 75781fdbdbf58a987516b00c980bccda1e9ae588 0 (*) {'ef1': '8', 'user': 'test'} (glob)
+  ebfe0333e0d96f68a917afd97c0a0af87f1c3b5f 75781fdbdbf58a987516b00c980bccda1e9ae588 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '8', 'operation': 'amend', 'user': 'test'}
   $ hg obslog .
-  @  75781fdbdbf5 (15) E0
+  @  75781fdbdbf5 (13) E0
   |
-  x  ebfe0333e0d9 (13) E0
-       rewritten(content) as 75781fdbdbf5 by test (Thu Jan 01 00:00:00 1970 +0000)
+  x  ebfe0333e0d9 (12) E0
+       rewritten(content) as 75781fdbdbf5 by test (*) (glob)
   
   $ hg log --hidden -r "ebfe0333e0d9"
-  changeset:   13:ebfe0333e0d9
+  changeset:   12:ebfe0333e0d9
   user:        test
   date:        Thu Jan 01 00:00:00 1970 +0000
   obsolete:    amended as 75781fdbdbf5
@@ -186,16 +184,15 @@
 check result
 
   $ hg debugobsolete --rev .
-  3b12912003b4e7aa6df6cded86255006c3c29d27 0 {fad47e5bd78e6aa4db1b5a0a1751bc12563655ff} (*) {'ef1': '0', 'user': 'test'} (glob)
-  fad47e5bd78e6aa4db1b5a0a1751bc12563655ff a94e0fd5f1c81d969381a76eb0d37ce499a44fae 0 (*) {'ef1': '113', 'user': 'test'} (glob)
+  fad47e5bd78e6aa4db1b5a0a1751bc12563655ff a94e0fd5f1c81d969381a76eb0d37ce499a44fae 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '113', 'operation': 'amend', 'user': 'test'}
   $ hg obslog .
-  @  a94e0fd5f1c8 (18) F1
+  @  a94e0fd5f1c8 (15) F1
   |
-  x  fad47e5bd78e (16) F0
-       rewritten(description, user, date, branch) as a94e0fd5f1c8 by test (Thu Jan 01 00:00:00 1970 +0000)
+  x  fad47e5bd78e (14) F0
+       rewritten(description, user, date, branch) as a94e0fd5f1c8 by test (*) (glob)
   
   $ hg log --hidden -r "fad47e5bd78e"
-  changeset:   16:fad47e5bd78e
+  changeset:   14:fad47e5bd78e
   user:        test
   date:        Thu Jan 01 00:00:00 1970 +0000
   obsolete:    rewritten as a94e0fd5f1c8
@@ -241,16 +238,16 @@
   $ hg commit -m "H2"
   created new head
   $ hg rebase -s "desc(H1)" -d "desc(H2)" -t :merge3
-  rebasing 20:b57fed8d8322 "H1"
+  rebasing 17:b57fed8d8322 "H1"
   merging H0
   $ hg obslog tip
-  o  e509e2eb3df5 (22) H1
+  o  e509e2eb3df5 (19) H1
   |
-  x  b57fed8d8322 (20) H1
-       rewritten(parent) as e509e2eb3df5 by test (Thu Jan 01 00:00:00 1970 +0000)
+  x  b57fed8d8322 (17) H1
+       rewritten(parent) as e509e2eb3df5 by test (*) (glob)
   
   $ hg log --hidden -r "b57fed8d8322"
-  changeset:   20:b57fed8d8322
+  changeset:   17:b57fed8d8322
   branch:      my-other-branch
   user:        test
   date:        Thu Jan 01 00:00:00 1970 +0000
@@ -269,13 +266,13 @@
 check result
 
   $ hg obslog .
-  @  12c6238b5e37 (26) I0
+  @  12c6238b5e37 (22) I0
   |
-  x  2f599e54c1c6 (24) I0
-       rewritten(meta) as 12c6238b5e37 by test (Thu Jan 01 00:00:00 1970 +0000)
+  x  2f599e54c1c6 (21) I0
+       rewritten(meta) as 12c6238b5e37 by test (*) (glob)
   
   $ hg log --hidden -r "2f599e54c1c6"
-  changeset:   24:2f599e54c1c6
+  changeset:   21:2f599e54c1c6
   branch:      closedbranch
   user:        test
   date:        Thu Jan 01 00:00:00 1970 +0000
--- a/tests/test-evolve-list.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-evolve-list.t	Tue Oct 10 22:40:41 2017 +0200
@@ -17,7 +17,7 @@
   $ hg up 0
   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
   $ echo a >> a && hg ci --amend -m a
-  2 new unstable changesets
+  2 new orphan changesets
   $ hg evolve --list
   d2ae7f538514: b
     unstable: cb9a9f314b8b (obsolete parent)
@@ -34,7 +34,7 @@
   adding a
   $ echo b > b && hg ci --amend -m ab
   $ hg phase --public --rev 0 --hidden
-  1 new bumped changesets
+  1 new phase-divergent changesets
   $ hg evolve --list
   88cc282e27fc: ab
     bumped: cb9a9f314b8b (immutable precursor)
@@ -64,7 +64,7 @@
   rebasing 1:d2ae7f538514 "b"
   $ hg rebase -s 1 -d 3 --hidden --config experimental.allowdivergence=True
   rebasing 1:d2ae7f538514 "b"
-  2 new divergent changesets
+  2 new content-divergent changesets
   $ hg evolve --list
   c882616e9d84: b
     divergent: a922b3733e98 (draft) (precursor d2ae7f538514)
--- a/tests/test-evolve-obshistory-complex.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-evolve-obshistory-complex.t	Tue Oct 10 22:40:41 2017 +0200
@@ -68,7 +68,7 @@
 
   $ hg fold --exact -r 1 -r 2 --date "0 0" -m "fold0"
   2 changesets folded
-  4 new unstable changesets
+  4 new orphan changesets
   $ hg fold --exact -r 3 -r 4 --date "0 0" -m "fold1"
   2 changesets folded
   $ hg fold --exact -r 5 -r 6 --date "0 0" -m "fold2"
@@ -80,14 +80,14 @@
   |  parent:      4:868d2e0eb19c
   |  user:        test
   |  date:        Thu Jan 01 00:00:00 1970 +0000
-  |  trouble:     unstable
+  |  instability: orphan
   |  summary:     fold2
   |
   | o  changeset:   8:d15d0ffc75f6
   | |  parent:      2:c473644ee0e9
   | |  user:        test
   | |  date:        Thu Jan 01 00:00:00 1970 +0000
-  | |  trouble:     unstable
+  | |  instability: orphan
   | |  summary:     fold1
   | |
   | | o  changeset:   7:b868bc49b0a4
@@ -236,27 +236,27 @@
   |  tag:         tip
   |  user:        test
   |  date:        Thu Jan 01 00:00:00 1970 +0000
-  |  trouble:     unstable
+  |  instability: orphan
   |  summary:     fold2
   |
   o  changeset:   14:ec31316faa9d
   |  parent:      4:868d2e0eb19c
   |  user:        test
   |  date:        Thu Jan 01 00:00:00 1970 +0000
-  |  trouble:     unstable
+  |  instability: orphan
   |  summary:     fold2
   |
   | o  changeset:   13:d0f33db50670
   | |  user:        test
   | |  date:        Thu Jan 01 00:00:00 1970 +0000
-  | |  trouble:     unstable
+  | |  instability: orphan
   | |  summary:     fold1
   | |
   | o  changeset:   12:7b3290f6e0a0
   | |  parent:      2:c473644ee0e9
   | |  user:        test
   | |  date:        Thu Jan 01 00:00:00 1970 +0000
-  | |  trouble:     unstable
+  | |  instability: orphan
   | |  summary:     fold1
   | |
   | | o  changeset:   11:e036916b63ea
@@ -312,21 +312,21 @@
   |  tag:         tip
   |  user:        test
   |  date:        Thu Jan 01 00:00:00 1970 +0000
-  |  trouble:     unstable
+  |  instability: orphan
   |  summary:     fold2
   |
   o  changeset:   14:ec31316faa9d
   |  parent:      4:868d2e0eb19c
   |  user:        test
   |  date:        Thu Jan 01 00:00:00 1970 +0000
-  |  trouble:     unstable
+  |  instability: orphan
   |  summary:     fold2
   |
   | o  changeset:   12:7b3290f6e0a0
   | |  parent:      2:c473644ee0e9
   | |  user:        test
   | |  date:        Thu Jan 01 00:00:00 1970 +0000
-  | |  trouble:     unstable
+  | |  instability: orphan
   | |  summary:     fold1
   | |
   | | o  changeset:   10:19e14c8397fc
@@ -374,25 +374,25 @@
   o    7b3290f6e0a0 (12) fold1
   |\
   x |    d15d0ffc75f6 (8) fold1
-  |\ \     rewritten(parent, content) as 7b3290f6e0a0, d0f33db50670 by test (Thu Jan 01 00:00:00 1970 +0000)
+  |\ \     rewritten(parent, content) as 7b3290f6e0a0, d0f33db50670 by test (*) (glob)
   | | |
   | | x  e036916b63ea (11) fold0
-  | | |    rewritten(description, parent, content) as 7b3290f6e0a0 by test (Thu Jan 01 00:00:00 1970 +0000)
+  | | |    rewritten(description, parent, content) as 7b3290f6e0a0 by test (*) (glob)
   | | |
   x | |  868d2e0eb19c (4) D
-   / /     rewritten(description, parent, content) as d15d0ffc75f6 by test (Thu Jan 01 00:00:00 1970 +0000)
+   / /     rewritten(description, parent, content) as d15d0ffc75f6 by test (*) (glob)
   | |
   x |  a8df460dbbfe (3) C
-   /     rewritten(description, content) as d15d0ffc75f6 by test (Thu Jan 01 00:00:00 1970 +0000)
+   /     rewritten(description, content) as d15d0ffc75f6 by test (*) (glob)
   |
   x    b868bc49b0a4 (7) fold0
-  |\     rewritten(parent, content) as 19e14c8397fc, e036916b63ea by test (Thu Jan 01 00:00:00 1970 +0000)
+  |\     rewritten(parent, content) as 19e14c8397fc, e036916b63ea by test (*) (glob)
   | |
   x |  2a34000d3544 (1) A
-   /     rewritten(description, content) as b868bc49b0a4 by test (Thu Jan 01 00:00:00 1970 +0000)
+   /     rewritten(description, content) as b868bc49b0a4 by test (*) (glob)
   |
   x  c473644ee0e9 (2) B
-       rewritten(description, parent, content) as b868bc49b0a4 by test (Thu Jan 01 00:00:00 1970 +0000)
+       rewritten(description, parent, content) as b868bc49b0a4 by test (*) (glob)
   
 While with all option, we should see 15 changesets
 
@@ -406,35 +406,35 @@
   | | | | o  ec31316faa9d (14) fold2
   | | | |/|
   | | | x |    100cc25b765f (9) fold2
-  | | | |\ \     rewritten(parent, content) as d4a000f63ee9, ec31316faa9d by test (Thu Jan 01 00:00:00 1970 +0000)
+  | | | |\ \     rewritten(parent, content) as d4a000f63ee9, ec31316faa9d by test (*) (glob)
   | | | | | |
   | +-------x  d0f33db50670 (13) fold1
-  | | | | |      rewritten(description, parent, content) as ec31316faa9d by test (Thu Jan 01 00:00:00 1970 +0000)
+  | | | | |      rewritten(description, parent, content) as ec31316faa9d by test (*) (glob)
   | | | | |
   +---x | |  e036916b63ea (11) fold0
-  | |  / /     rewritten(description, parent, content) as 7b3290f6e0a0 by test (Thu Jan 01 00:00:00 1970 +0000)
+  | |  / /     rewritten(description, parent, content) as 7b3290f6e0a0 by test (*) (glob)
   | | | |
   | | x |  0da815c333f6 (5) E
-  | |  /     rewritten(description, content) as 100cc25b765f by test (Thu Jan 01 00:00:00 1970 +0000)
+  | |  /     rewritten(description, content) as 100cc25b765f by test (*) (glob)
   | | |
   x | |    b868bc49b0a4 (7) fold0
-  |\ \ \     rewritten(parent, content) as 19e14c8397fc, e036916b63ea by test (Thu Jan 01 00:00:00 1970 +0000)
+  |\ \ \     rewritten(parent, content) as 19e14c8397fc, e036916b63ea by test (*) (glob)
   | | | |
   | | x |    d15d0ffc75f6 (8) fold1
-  | | |\ \     rewritten(parent, content) as 7b3290f6e0a0, d0f33db50670 by test (Thu Jan 01 00:00:00 1970 +0000)
+  | | |\ \     rewritten(parent, content) as 7b3290f6e0a0, d0f33db50670 by test (*) (glob)
   | | | | |
   | | | | x  d9f908fde1a1 (6) F
-  | | | |      rewritten(description, parent, content) as 100cc25b765f by test (Thu Jan 01 00:00:00 1970 +0000)
+  | | | |      rewritten(description, parent, content) as 100cc25b765f by test (*) (glob)
   | | | |
   x | | |  2a34000d3544 (1) A
-   / / /     rewritten(description, content) as b868bc49b0a4 by test (Thu Jan 01 00:00:00 1970 +0000)
+   / / /     rewritten(description, content) as b868bc49b0a4 by test (*) (glob)
   | | |
   | x |  868d2e0eb19c (4) D
-  |  /     rewritten(description, parent, content) as d15d0ffc75f6 by test (Thu Jan 01 00:00:00 1970 +0000)
+  |  /     rewritten(description, parent, content) as d15d0ffc75f6 by test (*) (glob)
   | |
   | x  a8df460dbbfe (3) C
-  |      rewritten(description, content) as d15d0ffc75f6 by test (Thu Jan 01 00:00:00 1970 +0000)
+  |      rewritten(description, content) as d15d0ffc75f6 by test (*) (glob)
   |
   x  c473644ee0e9 (2) B
-       rewritten(description, parent, content) as b868bc49b0a4 by test (Thu Jan 01 00:00:00 1970 +0000)
+       rewritten(description, parent, content) as b868bc49b0a4 by test (*) (glob)
   
--- a/tests/test-evolve-obshistory.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-evolve-obshistory.t	Tue Oct 10 22:40:41 2017 +0200
@@ -31,19 +31,13 @@
   > 
   > Better commit message"
   $ hg log --hidden -G
-  @  changeset:   3:4ae3a4151de9
+  @  changeset:   2:4ae3a4151de9
   |  tag:         tip
   |  parent:      0:ea207398892e
   |  user:        test
   |  date:        Thu Jan 01 00:00:00 1970 +0000
   |  summary:     A1
   |
-  | x  changeset:   2:f137d23bb3e1
-  | |  user:        test
-  | |  date:        Thu Jan 01 00:00:00 1970 +0000
-  | |  obsolete:    pruned
-  | |  summary:     temporary amend commit for 471f378eab4c
-  | |
   | x  changeset:   1:471f378eab4c
   |/   user:        test
   |    date:        Thu Jan 01 00:00:00 1970 +0000
@@ -58,10 +52,10 @@
 Actual test
 -----------
   $ hg obslog --patch 4ae3a4151de9
-  @  4ae3a4151de9 (3) A1
+  @  4ae3a4151de9 (2) A1
   |
   x  471f378eab4c (1) A0
-       rewritten(description, content) as 4ae3a4151de9 by test (Thu Jan 01 00:00:00 1970 +0000)
+       rewritten(description, content) as 4ae3a4151de9 by test (*) (glob)
          --- a/471f378eab4c-changeset-description
          +++ b/4ae3a4151de9-changeset-description
          @@ -1,1 +1,3 @@
@@ -80,7 +74,7 @@
   
 
   $ hg obslog --no-graph --patch 4ae3a4151de9
-  4ae3a4151de9 (3) A1
+  4ae3a4151de9 (2) A1
   471f378eab4c (1) A0
     rewritten(description, content) as 4ae3a4151de9 by test (Thu Jan 01 00:00:00 1970 +0000)
       --- a/471f378eab4c-changeset-description	
@@ -109,7 +103,7 @@
       {
           "markers": [],
           "node": "4ae3a4151de9",
-          "rev": 3,
+          "rev": 2,
           "shortdescription": "A1"
       },
       {
@@ -137,7 +131,7 @@
   ]
   $ hg obslog --hidden --patch 471f378eab4c
   x  471f378eab4c (1) A0
-       rewritten(description, content) as 4ae3a4151de9 by test (Thu Jan 01 00:00:00 1970 +0000)
+       rewritten(description, content) as 4ae3a4151de9 by test (*) (glob)
          --- a/471f378eab4c-changeset-description
          +++ b/4ae3a4151de9-changeset-description
          @@ -1,1 +1,3 @@
@@ -245,7 +239,7 @@
   $ hg obslog 'desc(B0)' --hidden --patch
   x  0dec01379d3b (2) B0
        pruned by test (*) (glob)
-         (No patch available yet, no successors)
+         (No patch available, no successors)
   
   $ hg obslog 'desc(B0)' --hidden --no-graph -Tjson | python -m json.tool
   [
@@ -379,8 +373,8 @@
 Check that debugobshistory on splitted commit show both targets
   $ hg obslog 471597cad322 --hidden --patch
   x  471597cad322 (1) A0
-       rewritten(parent, content) as 337fec4d2edc, f257fde29c7a by test (Thu Jan 01 00:00:00 1970 +0000)
-         (No patch available yet, too many successors (2))
+       rewritten(parent, content) as 337fec4d2edc, f257fde29c7a by test (*) (glob)
+         (No patch available, too many successors (2))
   
   $ hg obslog 471597cad322 --hidden --no-graph -Tjson | python -m json.tool
   [
@@ -414,8 +408,8 @@
   o  337fec4d2edc (2) A0
   |
   x  471597cad322 (1) A0
-       rewritten(parent, content) as 337fec4d2edc, f257fde29c7a by test (Thu Jan 01 00:00:00 1970 +0000)
-         (No patch available yet, too many successors (2))
+       rewritten(parent, content) as 337fec4d2edc, f257fde29c7a by test (*) (glob)
+         (No patch available, too many successors (2))
   
 With the all option, it should show the three changesets
   $ hg obslog --all 337fec4d2edc --patch
@@ -424,8 +418,8 @@
   | @  f257fde29c7a (3) A0
   |/
   x  471597cad322 (1) A0
-       rewritten(parent, content) as 337fec4d2edc, f257fde29c7a by test (Thu Jan 01 00:00:00 1970 +0000)
-         (No patch available yet, too many successors (2))
+       rewritten(parent, content) as 337fec4d2edc, f257fde29c7a by test (*) (glob)
+         (No patch available, too many successors (2))
   
 Check that debugobshistory on the second successor after split show
 the revision plus the splitted one
@@ -433,8 +427,8 @@
   @  f257fde29c7a (3) A0
   |
   x  471597cad322 (1) A0
-       rewritten(parent, content) as 337fec4d2edc, f257fde29c7a by test (Thu Jan 01 00:00:00 1970 +0000)
-         (No patch available yet, too many successors (2))
+       rewritten(parent, content) as 337fec4d2edc, f257fde29c7a by test (*) (glob)
+         (No patch available, too many successors (2))
   
 With the all option, it should show the three changesets
   $ hg obslog f257fde29c7a --all --patch
@@ -443,8 +437,8 @@
   | @  f257fde29c7a (3) A0
   |/
   x  471597cad322 (1) A0
-       rewritten(parent, content) as 337fec4d2edc, f257fde29c7a by test (Thu Jan 01 00:00:00 1970 +0000)
-         (No patch available yet, too many successors (2))
+       rewritten(parent, content) as 337fec4d2edc, f257fde29c7a by test (*) (glob)
+         (No patch available, too many successors (2))
   
 Obslog with all option all should also works on the splitted commit
   $ hg obslog -a 471597cad322 --hidden --patch
@@ -453,8 +447,8 @@
   | @  f257fde29c7a (3) A0
   |/
   x  471597cad322 (1) A0
-       rewritten(parent, content) as 337fec4d2edc, f257fde29c7a by test (Thu Jan 01 00:00:00 1970 +0000)
-         (No patch available yet, too many successors (2))
+       rewritten(parent, content) as 337fec4d2edc, f257fde29c7a by test (*) (glob)
+         (No patch available, too many successors (2))
   
 Check that debugobshistory on both successors after split show
 a coherent graph
@@ -464,8 +458,8 @@
   | @  f257fde29c7a (3) A0
   |/
   x  471597cad322 (1) A0
-       rewritten(parent, content) as 337fec4d2edc, f257fde29c7a by test (Thu Jan 01 00:00:00 1970 +0000)
-         (No patch available yet, too many successors (2))
+       rewritten(parent, content) as 337fec4d2edc, f257fde29c7a by test (*) (glob)
+         (No patch available, too many successors (2))
   
   $ hg update 471597cad322
   abort: hidden revision '471597cad322'!
@@ -632,8 +626,8 @@
 
   $ hg obslog de7290d8b885 --hidden --patch
   x  de7290d8b885 (1) A0
-       rewritten(parent, content) as 1ae8bc733a14, 337fec4d2edc, c7f044602e9b, f257fde29c7a by test (Thu Jan 01 00:00:00 1970 +0000)
-         (No patch available yet, too many successors (4))
+       rewritten(parent, content) as 1ae8bc733a14, 337fec4d2edc, c7f044602e9b, f257fde29c7a by test (*) (glob)
+         (No patch available, too many successors (4))
   
   $ hg obslog de7290d8b885 --hidden --all --patch
   o  1ae8bc733a14 (4) A0
@@ -645,8 +639,8 @@
   | o  f257fde29c7a (3) A0
   |/
   x  de7290d8b885 (1) A0
-       rewritten(parent, content) as 1ae8bc733a14, 337fec4d2edc, c7f044602e9b, f257fde29c7a by test (Thu Jan 01 00:00:00 1970 +0000)
-         (No patch available yet, too many successors (4))
+       rewritten(parent, content) as 1ae8bc733a14, 337fec4d2edc, c7f044602e9b, f257fde29c7a by test (*) (glob)
+         (No patch available, too many successors (4))
   
   $ hg obslog de7290d8b885 --hidden --no-graph -Tjson | python -m json.tool
   [
@@ -680,8 +674,8 @@
   @  c7f044602e9b (5) A0
   |
   x  de7290d8b885 (1) A0
-       rewritten(parent, content) as 1ae8bc733a14, 337fec4d2edc, c7f044602e9b, f257fde29c7a by test (Thu Jan 01 00:00:00 1970 +0000)
-         (No patch available yet, too many successors (4))
+       rewritten(parent, content) as 1ae8bc733a14, 337fec4d2edc, c7f044602e9b, f257fde29c7a by test (*) (glob)
+         (No patch available, too many successors (4))
   
   $ hg obslog c7f044602e9b --no-graph -Tjson | python -m json.tool
   [
@@ -728,8 +722,8 @@
   | o  f257fde29c7a (3) A0
   |/
   x  de7290d8b885 (1) A0
-       rewritten(parent, content) as 1ae8bc733a14, 337fec4d2edc, c7f044602e9b, f257fde29c7a by test (Thu Jan 01 00:00:00 1970 +0000)
-         (No patch available yet, too many successors (4))
+       rewritten(parent, content) as 1ae8bc733a14, 337fec4d2edc, c7f044602e9b, f257fde29c7a by test (*) (glob)
+         (No patch available, too many successors (4))
   
   $ hg obslog 5 --all --patch
   o  1ae8bc733a14 (4) A0
@@ -741,8 +735,8 @@
   | o  f257fde29c7a (3) A0
   |/
   x  de7290d8b885 (1) A0
-       rewritten(parent, content) as 1ae8bc733a14, 337fec4d2edc, c7f044602e9b, f257fde29c7a by test (Thu Jan 01 00:00:00 1970 +0000)
-         (No patch available yet, too many successors (4))
+       rewritten(parent, content) as 1ae8bc733a14, 337fec4d2edc, c7f044602e9b, f257fde29c7a by test (*) (glob)
+         (No patch available, too many successors (4))
   
   $ hg update de7290d8b885
   abort: hidden revision 'de7290d8b885'!
@@ -816,7 +810,7 @@
 the revision with the target
   $ hg obslog --hidden 471f378eab4c --patch
   x  471f378eab4c (1) A0
-       rewritten(description, content) as eb5a0daa2192 by test (Thu Jan 01 00:00:00 1970 +0000)
+       rewritten(description, content) as eb5a0daa2192 by test (*) (glob)
          --- a/471f378eab4c-changeset-description
          +++ b/eb5a0daa2192-changeset-description
          @@ -1,1 +1,1 @@
@@ -835,11 +829,11 @@
   @    eb5a0daa2192 (3) C0
   |\
   x |  0dec01379d3b (2) B0
-   /     rewritten(description, parent, content) as eb5a0daa2192 by test (Thu Jan 01 00:00:00 1970 +0000)
-  |        (No patch available yet, changesets rebased)
+   /     rewritten(description, parent, content) as eb5a0daa2192 by test (*) (glob)
+  |        (No patch available, changesets rebased)
   |
   x  471f378eab4c (1) A0
-       rewritten(description, content) as eb5a0daa2192 by test (Thu Jan 01 00:00:00 1970 +0000)
+       rewritten(description, content) as eb5a0daa2192 by test (*) (glob)
          --- a/471f378eab4c-changeset-description
          +++ b/eb5a0daa2192-changeset-description
          @@ -1,1 +1,1 @@
@@ -857,19 +851,19 @@
 the revision with the target
   $ hg obslog --hidden 0dec01379d3b --patch
   x  0dec01379d3b (2) B0
-       rewritten(description, parent, content) as eb5a0daa2192 by test (Thu Jan 01 00:00:00 1970 +0000)
-         (No patch available yet, changesets rebased)
+       rewritten(description, parent, content) as eb5a0daa2192 by test (*) (glob)
+         (No patch available, changesets rebased)
   
 Check that with all option, all changesets are shown
   $ hg obslog --hidden --all 0dec01379d3b --patch
   @    eb5a0daa2192 (3) C0
   |\
   x |  0dec01379d3b (2) B0
-   /     rewritten(description, parent, content) as eb5a0daa2192 by test (Thu Jan 01 00:00:00 1970 +0000)
-  |        (No patch available yet, changesets rebased)
+   /     rewritten(description, parent, content) as eb5a0daa2192 by test (*) (glob)
+  |        (No patch available, changesets rebased)
   |
   x  471f378eab4c (1) A0
-       rewritten(description, content) as eb5a0daa2192 by test (Thu Jan 01 00:00:00 1970 +0000)
+       rewritten(description, content) as eb5a0daa2192 by test (*) (glob)
          --- a/471f378eab4c-changeset-description
          +++ b/eb5a0daa2192-changeset-description
          @@ -1,1 +1,1 @@
@@ -889,11 +883,11 @@
   @    eb5a0daa2192 (3) C0
   |\
   x |  0dec01379d3b (2) B0
-   /     rewritten(description, parent, content) as eb5a0daa2192 by test (Thu Jan 01 00:00:00 1970 +0000)
-  |        (No patch available yet, changesets rebased)
+   /     rewritten(description, parent, content) as eb5a0daa2192 by test (*) (glob)
+  |        (No patch available, changesets rebased)
   |
   x  471f378eab4c (1) A0
-       rewritten(description, content) as eb5a0daa2192 by test (Thu Jan 01 00:00:00 1970 +0000)
+       rewritten(description, content) as eb5a0daa2192 by test (*) (glob)
          --- a/471f378eab4c-changeset-description
          +++ b/eb5a0daa2192-changeset-description
          @@ -1,1 +1,1 @@
@@ -923,7 +917,7 @@
                       0 (glob)
                   ],
                   "effect": [
-                      *, (glob)
+                      "description",
                       "content"
                   ],
                   "succnodes": [
@@ -941,7 +935,7 @@
           "markers": [
               {
                   "date": [
-                      0.0,
+                      *, (glob)
                       0 (glob)
                   ],
                   "effect": [
@@ -1015,21 +1009,21 @@
   working directory parent is obsolete! (471f378eab4c)
   (use 'hg evolve' to update to its successor: fdf9bde5129a)
   $ hg amend -m "A2"
-  2 new divergent changesets
+  2 new content-divergent changesets
   $ hg log --hidden -G
   @  changeset:   3:65b757b745b9
   |  tag:         tip
   |  parent:      0:ea207398892e
   |  user:        test
   |  date:        Thu Jan 01 00:00:00 1970 +0000
-  |  trouble:     divergent
+  |  instability: content-divergent
   |  summary:     A2
   |
   | o  changeset:   2:fdf9bde5129a
   |/   parent:      0:ea207398892e
   |    user:        test
   |    date:        Thu Jan 01 00:00:00 1970 +0000
-  |    trouble:     divergent
+  |    instability: content-divergent
   |    summary:     A1
   |
   | x  changeset:   1:471f378eab4c
@@ -1050,14 +1044,14 @@
 Check that debugobshistory on the divergent revision show both destinations
   $ hg obslog --hidden 471f378eab4c --patch
   x  471f378eab4c (1) A0
-       rewritten(description) as 65b757b745b9 by test (Thu Jan 01 00:00:00 1970 +0000)
+       rewritten(description) as 65b757b745b9 by test (*) (glob)
          --- a/471f378eab4c-changeset-description
          +++ b/65b757b745b9-changeset-description
          @@ -1,1 +1,1 @@
          -A0
          +A2
   
-       rewritten(description) as fdf9bde5129a by test (Thu Jan 01 00:00:00 1970 +0000)
+       rewritten(description) as fdf9bde5129a by test (*) (glob)
          --- a/471f378eab4c-changeset-description
          +++ b/fdf9bde5129a-changeset-description
          @@ -1,1 +1,1 @@
@@ -1073,14 +1067,14 @@
   | o  fdf9bde5129a (2) A1
   |/
   x  471f378eab4c (1) A0
-       rewritten(description) as 65b757b745b9 by test (Thu Jan 01 00:00:00 1970 +0000)
+       rewritten(description) as 65b757b745b9 by test (*) (glob)
          --- a/471f378eab4c-changeset-description
          +++ b/65b757b745b9-changeset-description
          @@ -1,1 +1,1 @@
          -A0
          +A2
   
-       rewritten(description) as fdf9bde5129a by test (Thu Jan 01 00:00:00 1970 +0000)
+       rewritten(description) as fdf9bde5129a by test (*) (glob)
          --- a/471f378eab4c-changeset-description
          +++ b/fdf9bde5129a-changeset-description
          @@ -1,1 +1,1 @@
@@ -1132,14 +1126,14 @@
   o  fdf9bde5129a (2) A1
   |
   x  471f378eab4c (1) A0
-       rewritten(description) as 65b757b745b9 by test (Thu Jan 01 00:00:00 1970 +0000)
+       rewritten(description) as 65b757b745b9 by test (*) (glob)
          --- a/471f378eab4c-changeset-description
          +++ b/65b757b745b9-changeset-description
          @@ -1,1 +1,1 @@
          -A0
          +A2
   
-       rewritten(description) as fdf9bde5129a by test (Thu Jan 01 00:00:00 1970 +0000)
+       rewritten(description) as fdf9bde5129a by test (*) (glob)
          --- a/471f378eab4c-changeset-description
          +++ b/fdf9bde5129a-changeset-description
          @@ -1,1 +1,1 @@
@@ -1155,14 +1149,14 @@
   | o  fdf9bde5129a (2) A1
   |/
   x  471f378eab4c (1) A0
-       rewritten(description) as 65b757b745b9 by test (Thu Jan 01 00:00:00 1970 +0000)
+       rewritten(description) as 65b757b745b9 by test (*) (glob)
          --- a/471f378eab4c-changeset-description
          +++ b/65b757b745b9-changeset-description
          @@ -1,1 +1,1 @@
          -A0
          +A2
   
-       rewritten(description) as fdf9bde5129a by test (Thu Jan 01 00:00:00 1970 +0000)
+       rewritten(description) as fdf9bde5129a by test (*) (glob)
          --- a/471f378eab4c-changeset-description
          +++ b/fdf9bde5129a-changeset-description
          @@ -1,1 +1,1 @@
@@ -1176,14 +1170,14 @@
   @  65b757b745b9 (3) A2
   |
   x  471f378eab4c (1) A0
-       rewritten(description) as 65b757b745b9 by test (Thu Jan 01 00:00:00 1970 +0000)
+       rewritten(description) as 65b757b745b9 by test (*) (glob)
          --- a/471f378eab4c-changeset-description
          +++ b/65b757b745b9-changeset-description
          @@ -1,1 +1,1 @@
          -A0
          +A2
   
-       rewritten(description) as fdf9bde5129a by test (Thu Jan 01 00:00:00 1970 +0000)
+       rewritten(description) as fdf9bde5129a by test (*) (glob)
          --- a/471f378eab4c-changeset-description
          +++ b/fdf9bde5129a-changeset-description
          @@ -1,1 +1,1 @@
@@ -1198,14 +1192,14 @@
   | o  fdf9bde5129a (2) A1
   |/
   x  471f378eab4c (1) A0
-       rewritten(description) as 65b757b745b9 by test (Thu Jan 01 00:00:00 1970 +0000)
+       rewritten(description) as 65b757b745b9 by test (*) (glob)
          --- a/471f378eab4c-changeset-description
          +++ b/65b757b745b9-changeset-description
          @@ -1,1 +1,1 @@
          -A0
          +A2
   
-       rewritten(description) as fdf9bde5129a by test (Thu Jan 01 00:00:00 1970 +0000)
+       rewritten(description) as fdf9bde5129a by test (*) (glob)
          --- a/471f378eab4c-changeset-description
          +++ b/fdf9bde5129a-changeset-description
          @@ -1,1 +1,1 @@
@@ -1221,14 +1215,14 @@
   | o  fdf9bde5129a (2) A1
   |/
   x  471f378eab4c (1) A0
-       rewritten(description) as 65b757b745b9 by test (Thu Jan 01 00:00:00 1970 +0000)
+       rewritten(description) as 65b757b745b9 by test (*) (glob)
          --- a/471f378eab4c-changeset-description
          +++ b/65b757b745b9-changeset-description
          @@ -1,1 +1,1 @@
          -A0
          +A2
   
-       rewritten(description) as fdf9bde5129a by test (Thu Jan 01 00:00:00 1970 +0000)
+       rewritten(description) as fdf9bde5129a by test (*) (glob)
          --- a/471f378eab4c-changeset-description
          +++ b/fdf9bde5129a-changeset-description
          @@ -1,1 +1,1 @@
@@ -1374,7 +1368,7 @@
   @    eb5a0daa2192 (4) C0
   |\
   x |  471f378eab4c (1) A0
-   /     rewritten(description, content) as eb5a0daa2192 by test (Thu Jan 01 00:00:00 1970 +0000)
+   /     rewritten(description, content) as eb5a0daa2192 by test (*) (glob)
   |        --- a/471f378eab4c-changeset-description
   |        +++ b/eb5a0daa2192-changeset-description
   |        @@ -1,1 +1,1 @@
@@ -1389,11 +1383,11 @@
   |
   |
   x  b7ea6d14e664 (3) B1
-  |    rewritten(description, parent, content) as eb5a0daa2192 by test (Thu Jan 01 00:00:00 1970 +0000)
-  |      (No patch available yet, changesets rebased)
+  |    rewritten(description, parent, content) as eb5a0daa2192 by test (*) (glob)
+  |      (No patch available, changesets rebased)
   |
   x  0dec01379d3b (2) B0
-       rewritten(description) as b7ea6d14e664 by test (Thu Jan 01 00:00:00 1970 +0000)
+       rewritten(description) as b7ea6d14e664 by test (*) (glob)
          --- a/0dec01379d3b-changeset-description
          +++ b/b7ea6d14e664-changeset-description
          @@ -1,1 +1,1 @@
@@ -1406,7 +1400,7 @@
   @    eb5a0daa2192 (4) C0
   |\
   x |  471f378eab4c (1) A0
-   /     rewritten(description, content) as eb5a0daa2192 by test (Thu Jan 01 00:00:00 1970 +0000)
+   /     rewritten(description, content) as eb5a0daa2192 by test (*) (glob)
   |        --- a/471f378eab4c-changeset-description
   |        +++ b/eb5a0daa2192-changeset-description
   |        @@ -1,1 +1,1 @@
@@ -1421,11 +1415,11 @@
   |
   |
   x  b7ea6d14e664 (3) B1
-  |    rewritten(description, parent, content) as eb5a0daa2192 by test (Thu Jan 01 00:00:00 1970 +0000)
-  |      (No patch available yet, changesets rebased)
+  |    rewritten(description, parent, content) as eb5a0daa2192 by test (*) (glob)
+  |      (No patch available, changesets rebased)
   |
   x  0dec01379d3b (2) B0
-       rewritten(description) as b7ea6d14e664 by test (Thu Jan 01 00:00:00 1970 +0000)
+       rewritten(description) as b7ea6d14e664 by test (*) (glob)
          --- a/0dec01379d3b-changeset-description
          +++ b/b7ea6d14e664-changeset-description
          @@ -1,1 +1,1 @@
@@ -1603,7 +1597,7 @@
   @  7a230b46bf61 (3) A2
   |
   x  fdf9bde5129a (2) A1
-  |    rewritten(description) as 7a230b46bf61 by test (Thu Jan 01 00:00:00 1970 +0000)
+  |    rewritten(description) as 7a230b46bf61 by test (*) (glob)
   |      --- a/fdf9bde5129a-changeset-description
   |      +++ b/7a230b46bf61-changeset-description
   |      @@ -1,1 +1,1 @@
@@ -1612,7 +1606,7 @@
   |
   |
   x  471f378eab4c (1) A0
-       rewritten(description) as fdf9bde5129a by test (Thu Jan 01 00:00:00 1970 +0000)
+       rewritten(description) as fdf9bde5129a by test (*) (glob)
          --- a/471f378eab4c-changeset-description
          +++ b/fdf9bde5129a-changeset-description
          @@ -1,1 +1,1 @@
@@ -1639,21 +1633,21 @@
   o  7a230b46bf61 (2) A2
   |
   x  fdf9bde5129a
-  |    rewritten(description) as 7a230b46bf61 by test (Thu Jan 01 00:00:00 1970 +0000)
-  |      (No patch available yet, context is not local)
+  |    rewritten(description) as 7a230b46bf61 by test (*) (glob)
+  |      (No patch available, context is not local)
   |
   @  471f378eab4c (1) A0
-       rewritten(description) as fdf9bde5129a by test (Thu Jan 01 00:00:00 1970 +0000)
-         (No patch available yet, succ is unknown locally)
+       rewritten(description) as fdf9bde5129a by test (*) (glob)
+         (No patch available, successor is unknown locally)
   
   $ hg obslog 7a230b46bf61 --color=debug --patch
   o  [evolve.node|7a230b46bf61] [evolve.rev|(2)] [evolve.short_description|A2]
   |
   x  [evolve.node evolve.missing_change_ctx|fdf9bde5129a]
-  |    [evolve.verb|rewritten](description) as [evolve.node|7a230b46bf61] by [evolve.user|test] [evolve.date|(Thu Jan 01 00:00:00 1970 +0000)]
-  |      (No patch available yet, context is not local)
+  |    [evolve.verb|rewritten](description) as [evolve.node|7a230b46bf61] by [evolve.user|test] [evolve.date|(*)] (glob)
+  |      (No patch available, context is not local)
   |
   @  [evolve.node|471f378eab4c] [evolve.rev|(1)] [evolve.short_description|A0]
-       [evolve.verb|rewritten](description) as [evolve.node|fdf9bde5129a] by [evolve.user|test] [evolve.date|(Thu Jan 01 00:00:00 1970 +0000)]
-         (No patch available yet, succ is unknown locally)
+       [evolve.verb|rewritten](description) as [evolve.node|fdf9bde5129a] by [evolve.user|test] [evolve.date|(*)] (glob)
+         (No patch available, successor is unknown locally)
   
--- a/tests/test-evolve-order.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-evolve-order.t	Tue Oct 10 22:40:41 2017 +0200
@@ -44,9 +44,9 @@
   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
   $ echo "aaa" > _a
   $ hg amend
-  2 new unstable changesets
+  2 new orphan changesets
   $ hg log -G
-  @  5:12d519679175@default(draft) add _a
+  @  4:12d519679175@default(draft) add _a
   |
   | o  3:4d156641b718@default(draft) add _c
   | |
@@ -60,9 +60,9 @@
 evolve --rev reorders the rev to solve instability, trivial case 2 revs wrong order
   $ hg evolve --rev 'desc(_c) + desc(_b)'
   move:[2] add _b
-  atop:[5] add _a
+  atop:[4] add _a
   move:[3] add _c
-  atop:[6] add _b
+  atop:[5] add _b
   working directory is now at 52b8f9b04f83
 
 evolve --rev reorders the rev to solve instability. Harder case, obsolescence
@@ -73,10 +73,10 @@
   $ hg up "desc(_a)"
   0 files updated, 0 files merged, 3 files removed, 0 files unresolved
   $ hg amend -m "aprime"
-  3 new unstable changesets
+  3 new orphan changesets
   $ hg evolve --rev "desc(_b)"
-  move:[6] add _b
-  atop:[9] aprime
+  move:[5] add _b
+  atop:[8] aprime
   working directory is now at 476c9c052aae
   $ hg up "desc(_b) - obsolete()"
   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
@@ -84,40 +84,40 @@
   $ hg up "desc(aprime)"
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
   $ hg amend -m "asecond"
-  1 new unstable changesets
+  1 new orphan changesets
   $ hg log -G
-  @  12:9a584314f3f3@default(draft) asecond
+  @  11:9a584314f3f3@default(draft) asecond
   |
-  | o  11:a59c79776f7c@default(draft) bprime
+  | o  10:a59c79776f7c@default(draft) bprime
   | |
-  | x  9:81a687b96d4d@default(draft) aprime
+  | x  8:81a687b96d4d@default(draft) aprime
   |/
-  | o  8:464731bc0ed0@default(draft) add _d
+  | o  7:464731bc0ed0@default(draft) add _d
   | |
-  | o  7:52b8f9b04f83@default(draft) add _c
+  | o  6:52b8f9b04f83@default(draft) add _c
   | |
-  | x  6:59476c3836ef@default(draft) add _b
+  | x  5:59476c3836ef@default(draft) add _b
   | |
-  | x  5:12d519679175@default(draft) add _a
+  | x  4:12d519679175@default(draft) add _a
   |/
   o  0:f92638be10c7@default(public) add p
   
-  $ hg evolve --rev "unstable()"
-  move:[11] bprime
-  atop:[12] asecond
-  move:[7] add _c
-  atop:[13] bprime
-  move:[8] add _d
-  atop:[14] add _c
+  $ hg evolve --rev "orphan()"
+  move:[10] bprime
+  atop:[11] asecond
+  move:[6] add _c
+  atop:[12] bprime
+  move:[7] add _d
+  atop:[13] add _c
   working directory is now at 739f18ac1d03
   $ hg log -G
-  @  15:739f18ac1d03@default(draft) add _d
+  @  14:739f18ac1d03@default(draft) add _d
   |
-  o  14:e5960578d158@default(draft) add _c
+  o  13:e5960578d158@default(draft) add _c
   |
-  o  13:4ad33fa88946@default(draft) bprime
+  o  12:4ad33fa88946@default(draft) bprime
   |
-  o  12:9a584314f3f3@default(draft) asecond
+  o  11:9a584314f3f3@default(draft) asecond
   |
   o  0:f92638be10c7@default(public) add p
   
@@ -131,28 +131,28 @@
   $ mkstack "desc(_d)" c1second >/dev/null
   $ hg prune "desc(c1_)" -s "desc(c1prime)"
   1 changesets pruned
-  3 new unstable changesets
+  3 new orphan changesets
   $ hg prune "desc(c2_)" -s "desc(c2prime)"
   1 changesets pruned
   $ hg prune "desc(c1prime)" -s "desc(c1second)"
   1 changesets pruned
-  1 new unstable changesets
+  1 new orphan changesets
   $ hg log -G -r "desc(_d)::"
-  @  22:dcf786e878fd@default(draft) add c1second
+  @  21:dcf786e878fd@default(draft) add c1second
   |
-  | o  21:507d52d715f6@default(draft) add c2prime
+  | o  20:507d52d715f6@default(draft) add c2prime
   | |
-  | x  20:c995cb124ddc@default(draft) add c1prime
+  | x  19:c995cb124ddc@default(draft) add c1prime
   |/
-  | o  19:d096a2437fd0@default(draft) add c4_
+  | o  18:d096a2437fd0@default(draft) add c4_
   | |
-  | o  18:cde95c6cba7a@default(draft) add c3_
+  | o  17:cde95c6cba7a@default(draft) add c3_
   | |
-  | x  17:e0d9f7a099fe@default(draft) add c2_
+  | x  16:e0d9f7a099fe@default(draft) add c2_
   | |
-  | x  16:43b7c338b1f8@default(draft) add c1_
+  | x  15:43b7c338b1f8@default(draft) add c1_
   |/
-  o  15:739f18ac1d03@default(draft) add _d
+  o  14:739f18ac1d03@default(draft) add _d
   |
   ~
 
@@ -161,40 +161,40 @@
   $ mkstack "desc(_d)" b1prime b3prime >/dev/null
   $ hg prune "desc(b1_)" -s "desc(b1prime)"
   1 changesets pruned
-  3 new unstable changesets
+  3 new orphan changesets
   $ hg prune "desc(b3_)" -s "desc(b3prime)"
   1 changesets pruned
   $ hg prune "desc(b2_)"
   1 changesets pruned
 
   $ hg log -G -r "desc(_d)::"
-  @  28:b253ff5b65d1@default(draft) add b3prime
+  @  27:b253ff5b65d1@default(draft) add b3prime
   |
-  o  27:4acf61f11dfb@default(draft) add b1prime
+  o  26:4acf61f11dfb@default(draft) add b1prime
   |
-  | o  26:594e1fbbd61f@default(draft) add b4_
+  | o  25:594e1fbbd61f@default(draft) add b4_
   | |
-  | x  25:be27500cfc76@default(draft) add b3_
+  | x  24:be27500cfc76@default(draft) add b3_
   | |
-  | x  24:b54f77dc5831@default(draft) add b2_
+  | x  23:b54f77dc5831@default(draft) add b2_
   | |
-  | x  23:0e1eba27e9aa@default(draft) add b1_
+  | x  22:0e1eba27e9aa@default(draft) add b1_
   |/
-  | o  22:dcf786e878fd@default(draft) add c1second
+  | o  21:dcf786e878fd@default(draft) add c1second
   |/
-  | o  21:507d52d715f6@default(draft) add c2prime
+  | o  20:507d52d715f6@default(draft) add c2prime
   | |
-  | x  20:c995cb124ddc@default(draft) add c1prime
+  | x  19:c995cb124ddc@default(draft) add c1prime
   |/
-  | o  19:d096a2437fd0@default(draft) add c4_
+  | o  18:d096a2437fd0@default(draft) add c4_
   | |
-  | o  18:cde95c6cba7a@default(draft) add c3_
+  | o  17:cde95c6cba7a@default(draft) add c3_
   | |
-  | x  17:e0d9f7a099fe@default(draft) add c2_
+  | x  16:e0d9f7a099fe@default(draft) add c2_
   | |
-  | x  16:43b7c338b1f8@default(draft) add c1_
+  | x  15:43b7c338b1f8@default(draft) add c1_
   |/
-  o  15:739f18ac1d03@default(draft) add _d
+  o  14:739f18ac1d03@default(draft) add _d
   |
   ~
 
@@ -203,35 +203,35 @@
   (desc(_d)::) - desc(c3_)
   $ hg evolve --rev "(desc(_d)::) - desc(c3_)"
   cannot solve instability of d096a2437fd0, skipping
-  move:[21] add c2prime
-  atop:[22] add c1second
-  move:[26] add b4_
-  atop:[28] add b3prime
+  move:[20] add c2prime
+  atop:[21] add c1second
+  move:[25] add b4_
+  atop:[27] add b3prime
   working directory is now at ea93190a9cd1
 
 Cleanup
   $ hg evolve --rev "(desc(_d)::)"
-  move:[18] add c3_
-  atop:[29] add c2prime
-  move:[19] add c4_
-  atop:[31] add c3_
+  move:[17] add c3_
+  atop:[28] add c2prime
+  move:[18] add c4_
+  atop:[30] add c3_
   working directory is now at 35e7b797ace5
   $ hg log -G -r "desc(_d)::"
-  @  32:35e7b797ace5@default(draft) add c4_
+  @  31:35e7b797ace5@default(draft) add c4_
   |
-  o  31:0b9488394e89@default(draft) add c3_
+  o  30:0b9488394e89@default(draft) add c3_
   |
-  | o  30:ea93190a9cd1@default(draft) add b4_
+  | o  29:ea93190a9cd1@default(draft) add b4_
   | |
-  o |  29:881b9c092e53@default(draft) add c2prime
+  o |  28:881b9c092e53@default(draft) add c2prime
   | |
-  | o  28:b253ff5b65d1@default(draft) add b3prime
+  | o  27:b253ff5b65d1@default(draft) add b3prime
   | |
-  | o  27:4acf61f11dfb@default(draft) add b1prime
+  | o  26:4acf61f11dfb@default(draft) add b1prime
   | |
-  o |  22:dcf786e878fd@default(draft) add c1second
+  o |  21:dcf786e878fd@default(draft) add c1second
   |/
-  o  15:739f18ac1d03@default(draft) add _d
+  o  14:739f18ac1d03@default(draft) add _d
   |
   ~
 
@@ -244,22 +244,22 @@
   created new head
   $ hg prev
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
-  [29] add c2prime
+  [28] add c2prime
   $ mkcommit c3part2
   created new head
   $ hg prune -s 'desc(c3part1)' 'desc(c3_)'
   1 changesets pruned
-  1 new unstable changesets
+  1 new orphan changesets
   $ hg prune -s 'desc(c3part2)' 'desc(c3_)'
   1 changesets pruned
-  2 new divergent changesets
+  2 new content-divergent changesets
   $ hg up 'desc(b3prime)'
   2 files updated, 0 files merged, 3 files removed, 0 files unresolved
   $ hg amend -m 'b3second'
-  1 new unstable changesets
-  $ hg evolve --rev 'unstable()'
-  move:[30] add b4_
-  atop:[35] b3second
+  1 new orphan changesets
+  $ hg evolve --rev "orphan()"
+  move:[29] add b4_
+  atop:[34] b3second
   skipping 0b9488394e89: divergent rewriting. can't choose destination
   working directory is now at 31809a198477
 
--- a/tests/test-evolve-serveronly-bundle2.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-evolve-serveronly-bundle2.t	Tue Oct 10 22:40:41 2017 +0200
@@ -107,7 +107,7 @@
   remote: adding manifests
   remote: adding file changes
   remote: added 1 changesets with 1 changes to 1 files (+1 heads)
-  remote: 2 new obsolescence markers
+  remote: 1 new obsolescence markers
   remote: obsoleted 1 changesets
   $ cat ../errors.log
   $ hg push
@@ -127,7 +127,7 @@
   adding manifests
   adding file changes
   added 1 changesets with 1 changes to [12] files \(\+1 heads\) (re)
-  2 new obsolescence markers
+  1 new obsolescence markers
   obsoleted 1 changesets
   (run 'hg heads' to see heads)
   $ cat ../errors.log
--- a/tests/test-evolve-serveronly.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-evolve-serveronly.t	Tue Oct 10 22:40:41 2017 +0200
@@ -114,8 +114,8 @@
   the remote repository use years old versions of Mercurial and evolve
   pushing obsmarker using legacy method
   (please upgrade your server)
-  pushing 2 obsolescence markers (* bytes) (glob)
-  remote: 2 obsolescence markers added
+  pushing 1 obsolescence markers (* bytes) (glob)
+  remote: 1 obsolescence markers added
   remote: obsoleted 1 changesets
   $ cat ../errors.log
   $ hg push
@@ -139,7 +139,7 @@
   the remote repository use years old versions of Mercurial and evolve
   pulling obsmarker using legacy method
   (please upgrade your server)
-  2 obsolescence markers added
+  1 obsolescence markers added
   obsoleted 1 changesets
   (run 'hg heads' to see heads)
   $ cat ../errors.log
--- a/tests/test-evolve-split.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-evolve-split.t	Tue Oct 10 22:40:41 2017 +0200
@@ -44,7 +44,7 @@
   $ hg commit -m "_pp"
   $ hg prune --succ "desc(_oo) + desc(_pp)" -r "desc('oo+pp')" --split
   1 changesets pruned
-  1 new unstable changesets
+  1 new orphan changesets
   $ hg log -G
   @  4:d0dcf24cddd3@default(draft) _pp
   |
--- a/tests/test-evolve-templates.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-evolve-templates.t	Tue Oct 10 22:40:41 2017 +0200
@@ -36,26 +36,20 @@
   $ HGUSER=test hg amend -m "A1" --config devel.default-date="1234567890 0"
   $ HGUSER=test2 hg amend -m "A2" --config devel.default-date="987654321 0"
   $ hg log --hidden -G
-  @  changeset:   4:d004c8f274b9
+  @  changeset:   3:d004c8f274b9
   |  tag:         tip
   |  parent:      0:ea207398892e
   |  user:        test
   |  date:        Thu Jan 01 00:00:00 1970 +0000
   |  summary:     A2
   |
-  | x  changeset:   3:a468dc9b3633
+  | x  changeset:   2:a468dc9b3633
   |/   parent:      0:ea207398892e
   |    user:        test
   |    date:        Thu Jan 01 00:00:00 1970 +0000
-  |    obsolete:    reworded by test2 as d004c8f274b9
+  |    obsolete:    reworded as d004c8f274b9 by test2
   |    summary:     A1
   |
-  | x  changeset:   2:f137d23bb3e1
-  | |  user:        test
-  | |  date:        Thu Jan 01 00:00:00 1970 +0000
-  | |  obsolete:    pruned
-  | |  summary:     temporary amend commit for 471f378eab4c
-  | |
   | x  changeset:   1:471f378eab4c
   |/   user:        test
   |    date:        Thu Jan 01 00:00:00 1970 +0000
@@ -76,9 +70,9 @@
 
 Precursors template should show current revision as it is the working copy
   $ hg olog tip
-  o  d004c8f274b9 (4) A2
+  o  d004c8f274b9 (3) A2
   |
-  x  a468dc9b3633 (3) A1
+  x  a468dc9b3633 (2) A1
   |    rewritten(description) as d004c8f274b9 by test2 (Thu Apr 19 04:25:21 2001 +0000)
   |
   @  471f378eab4c (1) A0
@@ -97,7 +91,7 @@
   
 
   $ hg log -G
-  o  changeset:   4:d004c8f274b9
+  o  changeset:   3:d004c8f274b9
   |  tag:         tip
   |  parent:      0:ea207398892e
   |  user:        test
@@ -107,7 +101,7 @@
   | @  changeset:   1:471f378eab4c
   |/   user:        test
   |    date:        Thu Jan 01 00:00:00 1970 +0000
-  |    obsolete:    rewritten by test, test2 as d004c8f274b9
+  |    obsolete:    rewritten as d004c8f274b9 by test, test2
   |    summary:     A0
   |
   o  changeset:   0:ea207398892e
@@ -190,9 +184,6 @@
   |      semi-colon: [d004c8f274b9]
   |      Fate: reworded as d004c8f274b9 by test2
   |
-  | x  f137d23bb3e1
-  | |    Fate: pruned
-  | |
   | x  471f378eab4c
   |/     Successors: [a468dc9b3633]
   |      semi-colon: [a468dc9b3633]
@@ -226,9 +217,6 @@
   |      semi-colon: [d004c8f274b9]
   |      Fate: reworded as d004c8f274b9 by test2
   |
-  | x  f137d23bb3e1
-  | |    Fate: pruned
-  | |
   | x  471f378eab4c
   |/     Successors: [a468dc9b3633]
   |      semi-colon: [a468dc9b3633]
@@ -248,9 +236,6 @@
   | x  a468dc9b3633
   |/     Obsfate: reworded as d004c8f274b9 by test2 (at 2001-04-19 04:25 +0000)
   |
-  | x  f137d23bb3e1
-  | |    Obsfate: pruned by test (at 2009-02-13 23:31 +0000)
-  | |
   | x  471f378eab4c
   |/     Obsfate: rewritten as a468dc9b3633 by test (at 2009-02-13 23:31 +0000)
   |
@@ -260,11 +245,9 @@
   $ hg fatelogjson --hidden
   @  d004c8f274b9 ""
   |
-  | x  a468dc9b3633 [{"markers": [["a468dc9b36338b14fdb7825f55ce3df4e71517ad", ["d004c8f274b9ec480a47a93c10dac5eee63adb78"], 0, [["ef1", "1"], ["user", "test2"]], [987654321.0, 0], null]], "max_date": [987654321.0, 0], "min_date": [987654321.0, 0], "successors": ["d004c8f274b9ec480a47a93c10dac5eee63adb78"], "users": ["test2"], "verb": "reworded"}]
+  | x  a468dc9b3633 [{"markers": [["a468dc9b36338b14fdb7825f55ce3df4e71517ad", ["d004c8f274b9ec480a47a93c10dac5eee63adb78"], 0, [["ef1", "1"], ["operation", "amend"], ["user", "test2"]], [987654321.0, 0], null]], "max_date": [987654321.0, 0], "min_date": [987654321.0, 0], "successors": ["d004c8f274b9ec480a47a93c10dac5eee63adb78"], "users": ["test2"], "verb": "reworded"}]
   |/
-  | x  f137d23bb3e1 [{"markers": [["f137d23bb3e11dc1daeb6264fac9cb2433782e15", [], 0, [["ef1", "0"], ["user", "test"]], [1234567890.0, 0], ["471f378eab4c5e25f6c77f785b27c936efb22874"]]], "max_date": [1234567890.0, 0], "min_date": [1234567890.0, 0], "successors": [], "users": ["test"], "verb": "pruned"}]
-  | |
-  | x  471f378eab4c [{"markers": [["471f378eab4c5e25f6c77f785b27c936efb22874", ["a468dc9b36338b14fdb7825f55ce3df4e71517ad"], 0, [["ef1", "9"], ["user", "test"]], [1234567890.0, 0], null]], "max_date": [1234567890.0, 0], "min_date": [1234567890.0, 0], "successors": ["a468dc9b36338b14fdb7825f55ce3df4e71517ad"], "users": ["test"], "verb": "rewritten"}]
+  | x  471f378eab4c [{"markers": [["471f378eab4c5e25f6c77f785b27c936efb22874", ["a468dc9b36338b14fdb7825f55ce3df4e71517ad"], 0, [["ef1", "9"], ["operation", "amend"], ["user", "test"]], [1234567890.0, 0], null]], "max_date": [1234567890.0, 0], "min_date": [1234567890.0, 0], "successors": ["a468dc9b36338b14fdb7825f55ce3df4e71517ad"], "users": ["test"], "verb": "rewritten"}]
   |/
   o  ea207398892e ""
   
@@ -639,21 +622,21 @@
   working directory parent is obsolete! (471f378eab4c)
   (use 'hg evolve' to update to its successor: fdf9bde5129a)
   $ hg amend -m "A2"
-  2 new divergent changesets
+  2 new content-divergent changesets
   $ hg log --hidden -G
   @  changeset:   3:65b757b745b9
   |  tag:         tip
   |  parent:      0:ea207398892e
   |  user:        test
   |  date:        Thu Jan 01 00:00:00 1970 +0000
-  |  trouble:     divergent
+  |  instability: content-divergent
   |  summary:     A2
   |
   | o  changeset:   2:fdf9bde5129a
   |/   parent:      0:ea207398892e
   |    user:        test
   |    date:        Thu Jan 01 00:00:00 1970 +0000
-  |    trouble:     divergent
+  |    instability: content-divergent
   |    summary:     A1
   |
   | x  changeset:   1:471f378eab4c
@@ -764,11 +747,11 @@
   $ hg fatelogjson --hidden
   o  019fadeab383 ""
   |
-  | x  65b757b745b9 [{"markers": [["65b757b745b935093c87a2bccd877521cccffcbd", ["019fadeab383f6699fa83ad7bdb4d82ed2c0e5ab"], 0, [["ef1", "1"], ["user", "test"]], [0.0, 0], null]], "max_date": [0.0, 0], "min_date": [0.0, 0], "successors": ["019fadeab383f6699fa83ad7bdb4d82ed2c0e5ab"], "users": ["test"], "verb": "reworded"}]
+  | x  65b757b745b9 [{"markers": [["65b757b745b935093c87a2bccd877521cccffcbd", ["019fadeab383f6699fa83ad7bdb4d82ed2c0e5ab"], 0, [["ef1", "1"], ["operation", "amend"], ["user", "test"]], [0.0, 0], null]], "max_date": [0.0, 0], "min_date": [0.0, 0], "successors": ["019fadeab383f6699fa83ad7bdb4d82ed2c0e5ab"], "users": ["test"], "verb": "reworded"}]
   |/
   | @  fdf9bde5129a ""
   |/
-  | x  471f378eab4c [{"markers": [["471f378eab4c5e25f6c77f785b27c936efb22874", ["fdf9bde5129a28d4548fadd3f62b265cdd3b7a2e"], 0, [["ef1", "1"], ["user", "test"]], [0.0, 0], null]], "max_date": [0.0, 0], "min_date": [0.0, 0], "successors": ["fdf9bde5129a28d4548fadd3f62b265cdd3b7a2e"], "users": ["test"], "verb": "reworded"}, {"markers": [["471f378eab4c5e25f6c77f785b27c936efb22874", ["65b757b745b935093c87a2bccd877521cccffcbd"], 0, [["ef1", "1"], ["user", "test"]], [0.0, 0], null]], "max_date": [0.0, 0], "min_date": [0.0, 0], "successors": ["65b757b745b935093c87a2bccd877521cccffcbd"], "users": ["test"], "verb": "reworded"}]
+  | x  471f378eab4c [{"markers": [["471f378eab4c5e25f6c77f785b27c936efb22874", ["fdf9bde5129a28d4548fadd3f62b265cdd3b7a2e"], 0, [["ef1", "1"], ["operation", "amend"], ["user", "test"]], [0.0, 0], null]], "max_date": [0.0, 0], "min_date": [0.0, 0], "successors": ["fdf9bde5129a28d4548fadd3f62b265cdd3b7a2e"], "users": ["test"], "verb": "reworded"}, {"markers": [["471f378eab4c5e25f6c77f785b27c936efb22874", ["65b757b745b935093c87a2bccd877521cccffcbd"], 0, [["ef1", "1"], ["operation", "amend"], ["user", "test"]], [0.0, 0], null]], "max_date": [0.0, 0], "min_date": [0.0, 0], "successors": ["65b757b745b935093c87a2bccd877521cccffcbd"], "users": ["test"], "verb": "reworded"}]
   |/
   o  ea207398892e ""
   
@@ -983,7 +966,7 @@
   |
   | x  b7ea6d14e664 [{"markers": [["b7ea6d14e664bdc8922221f7992631b50da3fb07", ["eb5a0daa21923bbf8caeb2c42085b9e463861fd0"], 0, [["ef1", "13"], ["user", "test"]], [0.0, 0], null]], "max_date": [0.0, 0], "min_date": [0.0, 0], "successors": ["eb5a0daa21923bbf8caeb2c42085b9e463861fd0"], "users": ["test"], "verb": "rewritten"}]
   | |
-  | | x  0dec01379d3b [{"markers": [["0dec01379d3be6318c470ead31b1fe7ae7cb53d5", ["b7ea6d14e664bdc8922221f7992631b50da3fb07"], 0, [["ef1", "1"], ["user", "test"]], [0.0, 0], null]], "max_date": [0.0, 0], "min_date": [0.0, 0], "successors": ["b7ea6d14e664bdc8922221f7992631b50da3fb07"], "users": ["test"], "verb": "reworded"}]
+  | | x  0dec01379d3b [{"markers": [["0dec01379d3be6318c470ead31b1fe7ae7cb53d5", ["b7ea6d14e664bdc8922221f7992631b50da3fb07"], 0, [["ef1", "1"], ["operation", "amend"], ["user", "test"]], [0.0, 0], null]], "max_date": [0.0, 0], "min_date": [0.0, 0], "successors": ["b7ea6d14e664bdc8922221f7992631b50da3fb07"], "users": ["test"], "verb": "reworded"}]
   | |/
   | x  471f378eab4c [{"markers": [["471f378eab4c5e25f6c77f785b27c936efb22874", ["eb5a0daa21923bbf8caeb2c42085b9e463861fd0"], 0, [["ef1", "9"], ["user", "test"]], [0.0, 0], null]], "max_date": [0.0, 0], "min_date": [0.0, 0], "successors": ["eb5a0daa21923bbf8caeb2c42085b9e463861fd0"], "users": ["test"], "verb": "rewritten"}]
   |/
@@ -1134,7 +1117,7 @@
   $ hg fatelogjson --hidden
   @  7a230b46bf61 ""
   |
-  | x  471f378eab4c [{"markers": [["471f378eab4c5e25f6c77f785b27c936efb22874", ["fdf9bde5129a28d4548fadd3f62b265cdd3b7a2e"], 0, [["ef1", "1"], ["user", "test"]], [0.0, 0], null], ["fdf9bde5129a28d4548fadd3f62b265cdd3b7a2e", ["7a230b46bf61e50b30308c6cfd7bd1269ef54702"], 0, [["ef1", "1"], ["user", "test"]], [0.0, 0], null]], "max_date": [0.0, 0], "min_date": [0.0, 0], "successors": ["7a230b46bf61e50b30308c6cfd7bd1269ef54702"], "users": ["test"], "verb": "reworded"}]
+  | x  471f378eab4c [{"markers": [["471f378eab4c5e25f6c77f785b27c936efb22874", ["fdf9bde5129a28d4548fadd3f62b265cdd3b7a2e"], 0, [["ef1", "1"], ["operation", "amend"], ["user", "test"]], [0.0, 0], null], ["fdf9bde5129a28d4548fadd3f62b265cdd3b7a2e", ["7a230b46bf61e50b30308c6cfd7bd1269ef54702"], 0, [["ef1", "1"], ["operation", "amend"], ["user", "test"]], [0.0, 0], null]], "max_date": [0.0, 0], "min_date": [0.0, 0], "successors": ["7a230b46bf61e50b30308c6cfd7bd1269ef54702"], "users": ["test"], "verb": "reworded"}]
   |/
   o  ea207398892e ""
   
--- a/tests/test-evolve-topic.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-evolve-topic.t	Tue Oct 10 22:40:41 2017 +0200
@@ -87,16 +87,16 @@
   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
   $ echo ddd >> ddd
   $ hg amend
-  6 new unstable changesets
+  6 new orphan changesets
   $ hg up 'desc(fff)'
   3 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ echo fff >> fff
   $ hg amend
 
   $ hg log -G
-  @  13 - {foo} e104f49bab28 add fff (draft)
+  @  11 - {foo} e104f49bab28 add fff (draft)
   |
-  | o  11 - {foo} d9cacd156ffc add ddd (draft)
+  | o  10 - {foo} d9cacd156ffc add ddd (draft)
   | |
   | | o  9 - {bar} 1d964213b023 add jjj (draft)
   | | |
@@ -123,16 +123,16 @@
 
   $ hg evolve --all
   move:[4] add eee
-  atop:[11] add ddd
-  move:[13] add fff
-  atop:[14] add eee
+  atop:[10] add ddd
+  move:[11] add fff
+  atop:[12] add eee
   working directory is now at 070c5573d8f9
   $ hg log -G
-  @  15 - {foo} 070c5573d8f9 add fff (draft)
+  @  13 - {foo} 070c5573d8f9 add fff (draft)
   |
-  o  14 - {foo} 42b49017ff90 add eee (draft)
+  o  12 - {foo} 42b49017ff90 add eee (draft)
   |
-  o  11 - {foo} d9cacd156ffc add ddd (draft)
+  o  10 - {foo} d9cacd156ffc add ddd (draft)
   |
   | o  9 - {bar} 1d964213b023 add jjj (draft)
   | |
@@ -160,28 +160,28 @@
 
   $ hg evolve --rev 'topic(bar)'
   move:[6] add ggg
-  atop:[15] add fff
+  atop:[13] add fff
   move:[7] add hhh
-  atop:[16] add ggg
+  atop:[14] add ggg
   move:[8] add iii
-  atop:[17] add hhh
+  atop:[15] add hhh
   move:[9] add jjj
-  atop:[18] add iii
+  atop:[16] add iii
   working directory is now at 9bf430c106b7
   $ hg log -G
-  @  19 - {bar} 9bf430c106b7 add jjj (draft)
+  @  17 - {bar} 9bf430c106b7 add jjj (draft)
   |
-  o  18 - {bar} d2dc89c57700 add iii (draft)
+  o  16 - {bar} d2dc89c57700 add iii (draft)
   |
-  o  17 - {bar} 20bc4d02aa62 add hhh (draft)
+  o  15 - {bar} 20bc4d02aa62 add hhh (draft)
   |
-  o  16 - {bar} 16d6f664b17c add ggg (draft)
+  o  14 - {bar} 16d6f664b17c add ggg (draft)
   |
-  o  15 - {foo} 070c5573d8f9 add fff (draft)
+  o  13 - {foo} 070c5573d8f9 add fff (draft)
   |
-  o  14 - {foo} 42b49017ff90 add eee (draft)
+  o  12 - {foo} 42b49017ff90 add eee (draft)
   |
-  o  11 - {foo} d9cacd156ffc add ddd (draft)
+  o  10 - {foo} d9cacd156ffc add ddd (draft)
   |
   o  2 - {foo} cced9bac76e3 add ccc (draft)
   |
@@ -200,10 +200,10 @@
   0 files updated, 0 files merged, 4 files removed, 0 files unresolved
   $ hg prev
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
-  [14] add eee
+  [12] add eee
   $ hg next
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  [15] add fff
+  [13] add fff
   $ hg next
   no children on topic "foo"
   do you want --no-topic
@@ -211,11 +211,11 @@
   $ hg next --no-topic
   switching to topic bar
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  [16] add ggg
+  [14] add ggg
   $ hg prev
   preserving the current topic 'bar'
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
-  [15] add fff
+  [13] add fff
   $ hg prev
   no parent in topic "bar"
   (do you want --no-topic)
@@ -223,4 +223,4 @@
   $ hg prev --no-topic
   switching to topic foo
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
-  [14] add eee
+  [12] add eee
--- a/tests/test-evolve.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-evolve.t	Tue Oct 10 22:40:41 2017 +0200
@@ -327,7 +327,7 @@
 changeset plus the updating changeset are hidden from view by default::
 
   $ hg log
-  4	feature-B: another feature (child of 568a468b60fc) - test
+  3	feature-B: another feature (child of 568a468b60fc) - test
   1	feature-A: a nifty feature - test
   0	: base - test
 
@@ -344,22 +344,18 @@
 (amend of on ancestors)
 
   $ hg amend
-  1 new unstable changesets
+  1 new orphan changesets
   $ hg log
-  6	feature-A: a nifty feature - test
-  4	feature-B: another feature (child of 568a468b60fc) - test
+  4	feature-A: a nifty feature - test
+  3	feature-B: another feature (child of 568a468b60fc) - test
   1	: a nifty feature - test
   0	: base - test
   $ hg up -q 0
   $ glog --hidden
-  o  6:ba0ec09b1bab@default(draft) a nifty feature
+  o  4:ba0ec09b1bab@default(draft) a nifty feature
   |
-  | x  5:c296b79833d1@default(draft) temporary amend commit for 568a468b60fc
+  | o  3:6992c59c6b06@default(draft) another feature (child of 568a468b60fc)
   | |
-  | | o  4:6992c59c6b06@default(draft) another feature (child of 568a468b60fc)
-  | |/
-  | | x  3:c97947cdc7a2@default(draft) temporary amend commit for 73296a82292a
-  | | |
   | | x  2:73296a82292a@default(draft) another feature (child of 568a468b60fc)
   | |/
   | x  1:568a468b60fc@default(draft) a nifty feature
@@ -367,101 +363,99 @@
   @  0:e55e0562ee93@default(public) base
   
   $ hg debugobsolete
-  73296a82292a76fb8a7061969d2489ec0d84cd5e 6992c59c6b06a1b4a92e24ff884829ae026d018b 0 (*) {'ef1': '8', 'user': 'test'} (glob)
-  c97947cdc7a2a11cf78419f5c2c3dd3944ec79e8 0 {73296a82292a76fb8a7061969d2489ec0d84cd5e} (*) {'ef1': '0', 'user': 'test'} (glob)
-  568a468b60fc99a42d5d4ddbe181caff1eef308d ba0ec09b1babf3489b567853807f452edd46704f 0 (*) {'ef1': '8', 'user': 'test'} (glob)
-  c296b79833d1d497f33144786174bf35e04e44a3 0 {568a468b60fc99a42d5d4ddbe181caff1eef308d} (*) {'ef1': '0', 'user': 'test'} (glob)
+  73296a82292a76fb8a7061969d2489ec0d84cd5e 6992c59c6b06a1b4a92e24ff884829ae026d018b 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '8', 'operation': 'amend', 'user': 'test'}
+  568a468b60fc99a42d5d4ddbe181caff1eef308d ba0ec09b1babf3489b567853807f452edd46704f 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '8', 'operation': 'amend', 'user': 'test'}
   $ hg evolve
-  move:[4] another feature (child of 568a468b60fc)
-  atop:[6] a nifty feature
+  move:[3] another feature (child of 568a468b60fc)
+  atop:[4] a nifty feature
   merging main-file-1
   working directory is now at 99833d22b0c6
   $ hg log
-  7	feature-B: another feature (child of ba0ec09b1bab) - test
-  6	feature-A: a nifty feature - test
+  5	feature-B: another feature (child of ba0ec09b1bab) - test
+  4	feature-A: a nifty feature - test
   0	: base - test
 
 Test commit -o options
 
-  $ hg up 6
+  $ hg up -r "desc('a nifty feature')"
   1 files updated, 0 files merged, 1 files removed, 0 files unresolved
-  $ hg revert -r 7 --all
+  $ hg revert -r "desc('another feature')" --all
   adding file-from-B
   reverting main-file-1
   $ sed -i'' -e s/Zwei/deux/ main-file-1
-  $ hg commit -m 'another feature that rox' -o 7
+  $ hg commit -m 'another feature that rox' -o 5
   created new head
   $ hg log
-  8	feature-B: another feature that rox - test
-  6	feature-A: a nifty feature - test
+  6	feature-B: another feature that rox - test
+  4	feature-A: a nifty feature - test
   0	: base - test
 
 phase change turning obsolete changeset public issue a bumped warning
 
-  $ hg phase --hidden --public 7
-  1 new bumped changesets
+  $ hg phase --hidden --public 99833d22b0c6
+  1 new phase-divergent changesets
 
 all solving bumped troubled
 
-  $ hg log -G
-  @  8	feature-B: another feature that rox - test
+  $ glog
+  @  6:47d52a103155@default(draft) another feature that rox
   |
-  | o  7	: another feature (child of ba0ec09b1bab) - test
+  | o  5:99833d22b0c6@default(public) another feature (child of ba0ec09b1bab)
   |/
-  o  6	feature-A: a nifty feature - test
+  o  4:ba0ec09b1bab@default(public) a nifty feature
   |
-  o  0	: base - test
+  o  0:e55e0562ee93@default(public) base
   
   $ hg evolve --any --traceback --phasedivergent
-  recreate:[8] another feature that rox
-  atop:[7] another feature (child of ba0ec09b1bab)
+  recreate:[6] another feature that rox
+  atop:[5] another feature (child of ba0ec09b1bab)
   computing new diff
   committed as 6707c5e1c49d
   working directory is now at 6707c5e1c49d
-  $ hg log -G
-  @  9	feature-B: bumped update to 99833d22b0c6: - test
+  $ glog
+  @  7:6707c5e1c49d@default(draft) bumped update to 99833d22b0c6:
   |
-  o  7	: another feature (child of ba0ec09b1bab) - test
+  o  5:99833d22b0c6@default(public) another feature (child of ba0ec09b1bab)
   |
-  o  6	feature-A: a nifty feature - test
+  o  4:ba0ec09b1bab@default(public) a nifty feature
   |
-  o  0	: base - test
+  o  0:e55e0562ee93@default(public) base
   
-  $ hg diff --hidden -r 9 -r 8
-  $ hg diff -r 9^ -r 9
+  $ hg diff --hidden -r 6707c5e1c49d -r 47d52a103155
+  $ hg diff -r 6707c5e1c49d^ -r 6707c5e1c49d
   diff --git a/main-file-1 b/main-file-1
   --- a/main-file-1
   +++ b/main-file-1
   @@ -3,1 +3,1 @@
   -Zwei
   +deux
-  $ hg log -r 'bumped()' # no more bumped
+  $ hg log -r 'phasedivergent()' # no more bumped
 
 test evolve --all
   $ sed -i'' -e s/deux/to/ main-file-1
   $ hg commit -m 'dansk 2!'
   $ sed -i'' -e s/Three/tre/ main-file-1
   $ hg commit -m 'dansk 3!'
-  $ hg update 9
+  $ hg update 6707c5e1c49d
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ sed -i'' -e s/Un/Én/ main-file-1
   $ hg commit --amend -m 'dansk!'
-  2 new unstable changesets
+  2 new orphan changesets
 
 (ninja test for the {trouble} template:
 
   $ hg log -G --template '{rev} {troubles}\n'
-  @  13
+  @  10
   |
-  | o  11 orphan
+  | o  9 orphan
   | |
-  | o  10 orphan
+  | o  8 orphan
   | |
-  | x  9
+  | x  7
   |/
-  o  7
+  o  5
   |
-  o  6
+  o  4
   |
   o  0
   
@@ -470,23 +464,23 @@
 (/ninja)
 
   $ hg evolve --all --traceback
-  move:[10] dansk 2!
-  atop:[13] dansk!
+  move:[8] dansk 2!
+  atop:[10] dansk!
   merging main-file-1
-  move:[11] dansk 3!
-  atop:[14] dansk 2!
+  move:[9] dansk 3!
+  atop:[11] dansk 2!
   merging main-file-1
   working directory is now at 68557e4f0048
   $ hg log -G
-  @  15	: dansk 3! - test
+  @  12	: dansk 3! - test
   |
-  o  14	: dansk 2! - test
+  o  11	: dansk 2! - test
   |
-  o  13	feature-B: dansk! - test
+  o  10	feature-B: dansk! - test
   |
-  o  7	: another feature (child of ba0ec09b1bab) - test
+  o  5	: another feature (child of ba0ec09b1bab) - test
   |
-  o  6	feature-A: a nifty feature - test
+  o  4	feature-A: a nifty feature - test
   |
   o  0	: base - test
   
@@ -546,13 +540,13 @@
   checking manifests
   crosschecking files in changesets and manifests
   checking files
-  3 files, 4 changesets, 4 total revisions
+  3 files, 3 changesets, 3 total revisions
   $ hg --config extensions.hgext.mq= strip 'extinct()'
   abort: empty revision set
   [255]
 (do some garbare collection)
   $ hg --config extensions.hgext.mq= strip --hidden 'extinct()'  --config devel.strip-obsmarkers=no
-  saved backup bundle to $TESTTMP/alpha/.hg/strip-backup/e87767087a57-d7bd82e9-backup.hg (glob)
+  saved backup bundle to $TESTTMP/alpha/.hg/strip-backup/e87767087a57-a365b072-backup.hg (glob)
   $ hg verify
   checking changesets
   checking manifests
@@ -571,7 +565,7 @@
   adding manifests
   adding file changes
   added 1 changesets with 1 changes to 1 files
-  2 new obsolescence markers
+  1 new obsolescence markers
   (run 'hg update' to get a working copy)
   $ hg up
   2 files updated, 0 files merged, 0 files removed, 0 files unresolved
@@ -770,12 +764,12 @@
   @    d26d339c513f (12) add 4
   |\
   x |    af636757ce3b (11) add 3
-  |\ \     rewritten(description, user, parent, content) as d26d339c513f by test (Thu Jan 01 00:00:00 1970 +0000)
+  |\ \     rewritten(description, user, parent, content) as d26d339c513f by test (*) (glob)
   | | |
   | \ \
   | |\ \
   | | | x  ce341209337f (4) add 4
-  | | |      rewritten(description, user, content) as d26d339c513f by test (Thu Jan 01 00:00:00 1970 +0000)
+  | | |      rewritten(description, user, content) as d26d339c513f by test (*) (glob)
   | | |
 
 Test obsstore stat
@@ -831,7 +825,7 @@
   $ hg ci -m c
   $ hg prune .^
   1 changesets pruned
-  1 new unstable changesets
+  1 new orphan changesets
   $ hg stab --any
   move:[15] c
   atop:[13] a
@@ -848,13 +842,13 @@
   2 changesets folded
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ glog
-  @  16:98cb758db56d@default(draft) Folding with custom commit message
+  @  13:98cb758db56d@default(draft) Folding with custom commit message
   |
-  o  13:0a2f9b959bb4@default(draft) dansk!
+  o  10:0a2f9b959bb4@default(draft) dansk!
   |
-  o  7:99833d22b0c6@default(public) another feature (child of ba0ec09b1bab)
+  o  5:99833d22b0c6@default(public) another feature (child of ba0ec09b1bab)
   |
-  o  6:ba0ec09b1bab@default(public) a nifty feature
+  o  4:ba0ec09b1bab@default(public) a nifty feature
   |
   o  0:e55e0562ee93@default(public) base
   
@@ -867,10 +861,10 @@
   2 changesets folded
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ hg qlog
-  17 - a00182c58888 A longer
+  14 - a00182c58888 A longer
                     commit message (draft)
-  7 - 99833d22b0c6 another feature (child of ba0ec09b1bab) (public)
-  6 - ba0ec09b1bab a nifty feature (public)
+  5 - 99833d22b0c6 another feature (child of ba0ec09b1bab) (public)
+  4 - ba0ec09b1bab a nifty feature (public)
   0 - e55e0562ee93 base (public)
 
   $ cd ..
@@ -908,17 +902,17 @@
   marked working directory as branch mybranch
   (branches are permanent and global, did you want a bookmark?)
   $ hg amend
-  1 new unstable changesets
+  1 new orphan changesets
 
   $ hg evolve
   move:[3] a3
-  atop:[5] a2
+  atop:[4] a2
   working directory is now at 7c5649f73d11
 
   $ hg log -G --template '{rev} [{branch}] {desc|firstline}\n'
-  @  6 [mybranch] a3
+  @  5 [mybranch] a3
   |
-  o  5 [mybranch] a2
+  o  4 [mybranch] a2
   |
   o  1 [default] a1
   |
@@ -930,42 +924,42 @@
   $ hg up 'desc(a1)'
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ hg amend -m 'a1_'
-  2 new unstable changesets
+  2 new orphan changesets
   $ hg evolve
-  move:[5] a2
-  atop:[7] a1_
+  move:[4] a2
+  atop:[6] a1_
   working directory is now at eb07e22a0e63
   $ hg evolve
-  move:[6] a3
-  atop:[8] a2
+  move:[5] a3
+  atop:[7] a2
   working directory is now at 777c26ca5e78
   $ hg log -G --template '{rev} [{branch}] {desc|firstline}\n'
-  @  9 [mybranch] a3
+  @  8 [mybranch] a3
   |
-  o  8 [mybranch] a2
+  o  7 [mybranch] a2
   |
-  o  7 [default] a1_
+  o  6 [default] a1_
   |
   o  0 [default] a0
   
 
 Evolve from the middle of a stack pick the right changesets.
 
-  $ hg up 7
+  $ hg up -r "desc('a1_')"
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ hg ci --amend -m 'a1__'
-  2 new unstable changesets
+  2 new orphan changesets
 
-  $ hg up 8
+  $ hg up -r "desc('a2')"
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ hg log -G --template '{rev} [{branch}] {desc|firstline}\n'
-  o  10 [default] a1__
+  o  9 [default] a1__
   |
-  | o  9 [mybranch] a3
+  | o  8 [mybranch] a3
   | |
-  | @  8 [mybranch] a2
+  | @  7 [mybranch] a2
   | |
-  | x  7 [default] a1_
+  | x  6 [default] a1_
   |/
   o  0 [default] a0
   
@@ -977,69 +971,69 @@
 
 Evolve disables active bookmarks.
 
-  $ hg up 10
+  $ hg up -r "desc('a1__')"
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ hg bookmark testbookmark
   $ ls .hg/bookmarks*
   .hg/bookmarks
   .hg/bookmarks.* (glob)
   $ hg evolve
-  move:[8] a2
-  atop:[10] a1__
+  move:[7] a2
+  atop:[9] a1__
   (leaving bookmark testbookmark)
   working directory is now at d952e93add6f
   $ ls .hg/bookmarks*
   .hg/bookmarks
-  $ hg log -G
-  @  11	: a2 - test
+  $ glog
+  @  10:d952e93add6f@mybranch(draft) a2
   |
-  o  10	testbookmark: a1__ - test
+  o  9:9f8b83c2e7f3@default(draft) a1__
   |
-  | o  9	: a3 - test
+  | o  8:777c26ca5e78@mybranch(draft) a3
   | |
-  | x  8	: a2 - test
+  | x  7:eb07e22a0e63@mybranch(draft) a2
   | |
-  | x  7	: a1_ - test
+  | x  6:faafc6cea0ba@default(draft) a1_
   |/
-  o  0	: a0 - test
+  o  0:07c1c36d9ef0@default(draft) a0
   
 
 Possibility to select what trouble to solve first, asking for bumped before
 divergent
-  $ hg up 10
+  $ hg up -r "desc('a1__')"
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  $ hg revert -r 11 --all
+  $ hg revert -r d952e93add6f --all
   reverting a
   $ hg log -G --template '{rev} [{branch}] {desc|firstline}\n'
-  o  11 [mybranch] a2
+  o  10 [mybranch] a2
   |
-  @  10 [default] a1__
+  @  9 [default] a1__
   |
-  | o  9 [mybranch] a3
+  | o  8 [mybranch] a3
   | |
-  | x  8 [mybranch] a2
+  | x  7 [mybranch] a2
   | |
-  | x  7 [default] a1_
+  | x  6 [default] a1_
   |/
   o  0 [default] a0
   
   $ echo "hello world" > newfile
   $ hg add newfile
-  $ hg commit -m "add new file bumped" -o 11
-  $ hg phase --public --hidden 11
-  1 new bumped changesets
+  $ hg commit -m "add new file bumped" -o 10
+  $ hg phase --public --hidden d952e93add6f
+  1 new phase-divergent changesets
   $ hg log -G
-  @  12	: add new file bumped - test
+  @  11	: add new file bumped - test
   |
-  | o  11	: a2 - test
+  | o  10	: a2 - test
   |/
-  o  10	testbookmark: a1__ - test
+  o  9	testbookmark: a1__ - test
   |
-  | o  9	: a3 - test
+  | o  8	: a3 - test
   | |
-  | x  8	: a2 - test
+  | x  7	: a2 - test
   | |
-  | x  7	: a1_ - test
+  | x  6	: a1_ - test
   |/
   o  0	: a0 - test
   
@@ -1048,38 +1042,38 @@
 normally the unstable changeset would be solve first
 
   $ hg log -G
-  @  12	: add new file bumped - test
+  @  11	: add new file bumped - test
   |
-  | o  11	: a2 - test
+  | o  10	: a2 - test
   |/
-  o  10	testbookmark: a1__ - test
+  o  9	testbookmark: a1__ - test
   |
-  | o  9	: a3 - test
+  | o  8	: a3 - test
   | |
-  | x  8	: a2 - test
+  | x  7	: a2 - test
   | |
-  | x  7	: a1_ - test
+  | x  6	: a1_ - test
   |/
   o  0	: a0 - test
   
-  $ hg evolve -r 12 --phasedivergent
-  recreate:[12] add new file bumped
-  atop:[11] a2
+  $ hg evolve -r "desc('add new file bumped')" --phasedivergent
+  recreate:[11] add new file bumped
+  atop:[10] a2
   computing new diff
   committed as f15d32934071
   working directory is now at f15d32934071
   $ hg evolve --any
-  move:[9] a3
-  atop:[13] bumped update to d952e93add6f:
+  move:[8] a3
+  atop:[12] bumped update to d952e93add6f:
   working directory is now at cce26b684bfe
   $ glog
-  @  14:cce26b684bfe@default(draft) a3
+  @  13:cce26b684bfe@default(draft) a3
   |
-  o  13:f15d32934071@default(draft) bumped update to d952e93add6f:
+  o  12:f15d32934071@default(draft) bumped update to d952e93add6f:
   |
-  o  11:d952e93add6f@mybranch(public) a2
+  o  10:d952e93add6f@mybranch(public) a2
   |
-  o  10:9f8b83c2e7f3@default(public) a1__
+  o  9:9f8b83c2e7f3@default(public) a1__
   |
   o  0:07c1c36d9ef0@default(public) a0
   
@@ -1096,69 +1090,69 @@
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
   $ printf "newline\nnewline\n" >> a
   $ hg log -G
-  o  16	: add gh - test
+  o  15	: add gh - test
   |
-  | o  15	: add gg - test
+  | o  14	: add gg - test
   |/
-  @  14	: a3 - test
+  @  13	: a3 - test
   |
-  o  13	: bumped update to d952e93add6f: - test
+  o  12	: bumped update to d952e93add6f: - test
   |
-  o  11	: a2 - test
+  o  10	: a2 - test
   |
-  o  10	testbookmark: a1__ - test
+  o  9	testbookmark: a1__ - test
   |
   o  0	: a0 - test
   
   $ hg amend
-  2 new unstable changesets
-  $ hg log -G
-  @  18	: a3 - test
+  2 new orphan changesets
+  $ glog
+  @  16:edc3c9de504e@default(draft) a3
   |
-  | o  16	: add gh - test
+  | o  15:beb41503aa3e@default(draft) add gh
   | |
-  | | o  15	: add gg - test
+  | | o  14:27247fcb2df6@default(draft) add gg
   | |/
-  | x  14	: a3 - test
+  | x  13:cce26b684bfe@default(draft) a3
   |/
-  o  13	: bumped update to d952e93add6f: - test
+  o  12:f15d32934071@default(draft) bumped update to d952e93add6f:
   |
-  o  11	: a2 - test
+  o  10:d952e93add6f@mybranch(public) a2
   |
-  o  10	testbookmark: a1__ - test
+  o  9:9f8b83c2e7f3@default(public) a1__
   |
-  o  0	: a0 - test
+  o  0:07c1c36d9ef0@default(public) a0
   
 
 Evolving an empty revset should do nothing
-  $ hg evolve --rev "16 and 15"
+  $ hg evolve --rev "beb41503aa3e and 27247fcb2df6"
   set of specified revisions is empty
   [1]
 
-  $ hg evolve --rev "14::" --phasedivergent
+  $ hg evolve --rev "cce26b684bfe::" --phasedivergent
   no phasedivergent changesets in specified revisions
   (do you want to use --orphan)
   [2]
-  $ hg evolve --rev "14::" --orphan
-  move:[15] add gg
-  atop:[18] a3
-  move:[16] add gh
-  atop:[18] a3
+  $ hg evolve --rev "cce26b684bfe::" --orphan
+  move:[14] add gg
+  atop:[16] a3
+  move:[15] add gh
+  atop:[16] a3
   working directory is now at e02107f98737
-  $ hg log -G
-  @  20	: add gh - test
+  $ glog
+  @  18:e02107f98737@default(draft) add gh
   |
-  | o  19	: add gg - test
+  | o  17:24e63b319adf@default(draft) add gg
   |/
-  o  18	: a3 - test
+  o  16:edc3c9de504e@default(draft) a3
   |
-  o  13	: bumped update to d952e93add6f: - test
+  o  12:f15d32934071@default(draft) bumped update to d952e93add6f:
   |
-  o  11	: a2 - test
+  o  10:d952e93add6f@mybranch(public) a2
   |
-  o  10	testbookmark: a1__ - test
+  o  9:9f8b83c2e7f3@default(public) a1__
   |
-  o  0	: a0 - test
+  o  0:07c1c36d9ef0@default(public) a0
   
 Enabling commands selectively, no command enabled, next and fold and unknown
   $ cat >> $HGRCPATH <<EOF
@@ -1262,7 +1256,7 @@
   > EOF
 
 Check hg evolve --rev on singled out commit
-  $ hg up 19 -C
+  $ hg up 24e63b319adf -C
   1 files updated, 0 files merged, 1 files removed, 0 files unresolved
   $ mkcommit j1
   $ mkcommit j2
@@ -1272,28 +1266,28 @@
   $ echo "hello" > j4
   $ hg add j4
   $ hg amend
-  2 new unstable changesets
-  $ glog -r "18::"
-  @  25:8dc373be86d9@default(draft) add j1
+  2 new orphan changesets
+  $ glog -r "edc3c9de504e::"
+  @  22:8dc373be86d9@default(draft) add j1
   |
-  | o  23:d7eadcf6eccd@default(draft) add j3
+  | o  21:d7eadcf6eccd@default(draft) add j3
   | |
-  | o  22:2223ea564144@default(draft) add j2
+  | o  20:2223ea564144@default(draft) add j2
   | |
-  | x  21:48490698b269@default(draft) add j1
+  | x  19:48490698b269@default(draft) add j1
   |/
-  | o  20:e02107f98737@default(draft) add gh
+  | o  18:e02107f98737@default(draft) add gh
   | |
-  o |  19:24e63b319adf@default(draft) add gg
+  o |  17:24e63b319adf@default(draft) add gg
   |/
-  o  18:edc3c9de504e@default(draft) a3
+  o  16:edc3c9de504e@default(draft) a3
   |
   ~
 
-  $ hg evolve --rev 23 --any
+  $ hg evolve --rev d7eadcf6eccd --any
   abort: cannot specify both "--rev" and "--any"
   [255]
-  $ hg evolve --rev 23
+  $ hg evolve --rev d7eadcf6eccd
   cannot solve instability of d7eadcf6eccd, skipping
 
 Check that uncommit respects the allowunstable option
@@ -1313,74 +1307,74 @@
   $ hg uncommit --all
   new changeset is empty
   (use 'hg prune .' to remove it)
-  $ glog -r "18::"
-  @  26:044804d0c10d@default(draft) add j1
+  $ glog -r "edc3c9de504e::"
+  @  23:044804d0c10d@default(draft) add j1
   |
-  | o  23:d7eadcf6eccd@default(draft) add j3
+  | o  21:d7eadcf6eccd@default(draft) add j3
   | |
-  | o  22:2223ea564144@default(draft) add j2
+  | o  20:2223ea564144@default(draft) add j2
   | |
-  | x  21:48490698b269@default(draft) add j1
+  | x  19:48490698b269@default(draft) add j1
   |/
-  | o  20:e02107f98737@default(draft) add gh
+  | o  18:e02107f98737@default(draft) add gh
   | |
-  o |  19:24e63b319adf@default(draft) add gg
+  o |  17:24e63b319adf@default(draft) add gg
   |/
-  o  18:edc3c9de504e@default(draft) a3
+  o  16:edc3c9de504e@default(draft) a3
   |
   ~
 
 Check that prune respects the allowunstable option
   $ hg up -C .
   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  $ hg up 20
+  $ hg up e02107f98737
   1 files updated, 0 files merged, 1 files removed, 0 files unresolved
   $ hg evolve --all
   nothing to evolve on current working copy parent
   (2 other orphan in the repository, do you want --any or --rev)
   [2]
   $ hg evolve --all --any
-  move:[22] add j2
-  atop:[26] add j1
-  move:[23] add j3
-  atop:[27] add j2
+  move:[20] add j2
+  atop:[23] add j1
+  move:[21] add j3
+  atop:[24] add j2
   working directory is now at c9a20e2d74aa
-  $ glog -r "18::"
-  @  28:c9a20e2d74aa@default(draft) add j3
+  $ glog -r "edc3c9de504e::"
+  @  25:c9a20e2d74aa@default(draft) add j3
   |
-  o  27:b0e3066231e2@default(draft) add j2
+  o  24:b0e3066231e2@default(draft) add j2
   |
-  o  26:044804d0c10d@default(draft) add j1
+  o  23:044804d0c10d@default(draft) add j1
   |
-  | o  20:e02107f98737@default(draft) add gh
+  | o  18:e02107f98737@default(draft) add gh
   | |
-  o |  19:24e63b319adf@default(draft) add gg
+  o |  17:24e63b319adf@default(draft) add gg
   |/
-  o  18:edc3c9de504e@default(draft) a3
+  o  16:edc3c9de504e@default(draft) a3
   |
   ~
-  $ hg up 19
+  $ hg up 24e63b319adf
   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
   $ mkcommit c5_
   created new head
-  $ hg prune '26 + 27'
+  $ hg prune '044804d0c10d + b0e3066231e2'
   abort: touch will orphan 1 descendants
   (see 'hg help evolution.instability')
   [255]
-  $ hg prune '19::28'
+  $ hg prune '24e63b319adf::c9a20e2d74aa'
   abort: touch will orphan 1 descendants
   (see 'hg help evolution.instability')
   [255]
-  $ hg prune '26::'
+  $ hg prune '044804d0c10d::'
   3 changesets pruned
-  $ glog -r "18::"
-  @  29:2251801b6c91@default(draft) add c5_
+  $ glog -r "edc3c9de504e::"
+  @  26:2251801b6c91@default(draft) add c5_
   |
-  | o  20:e02107f98737@default(draft) add gh
+  | o  18:e02107f98737@default(draft) add gh
   | |
-  o |  19:24e63b319adf@default(draft) add gg
+  o |  17:24e63b319adf@default(draft) add gg
   |/
-  o  18:edc3c9de504e@default(draft) a3
+  o  16:edc3c9de504e@default(draft) a3
   |
   ~
 
@@ -1392,20 +1386,20 @@
   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
   $ mkcommit unstableifparentisfolded
   created new head
-  $ glog -r "18::"
-  @  30:68330ac625b8@default(draft) add unstableifparentisfolded
+  $ glog -r "edc3c9de504e::"
+  @  27:68330ac625b8@default(draft) add unstableifparentisfolded
   |
-  | o  29:2251801b6c91@default(draft) add c5_
+  | o  26:2251801b6c91@default(draft) add c5_
   | |
-  +---o  20:e02107f98737@default(draft) add gh
+  +---o  18:e02107f98737@default(draft) add gh
   | |
-  | o  19:24e63b319adf@default(draft) add gg
+  | o  17:24e63b319adf@default(draft) add gg
   |/
-  o  18:edc3c9de504e@default(draft) a3
+  o  16:edc3c9de504e@default(draft) a3
   |
   ~
 
-  $ hg fold --exact "19::"
+  $ hg fold --exact "24e63b319adf::"
   2 changesets folded
 
 Check that evolve shows error while handling split commits
@@ -1416,14 +1410,14 @@
   > evolution=all
   > EOF
 
-  $ glog -r "18::"
-  o  31:580886d07058@default(draft) add gg
+  $ glog -r "edc3c9de504e::"
+  o  28:580886d07058@default(draft) add gg
   |
-  | @  30:68330ac625b8@default(draft) add unstableifparentisfolded
+  | @  27:68330ac625b8@default(draft) add unstableifparentisfolded
   |/
-  | o  20:e02107f98737@default(draft) add gh
+  | o  18:e02107f98737@default(draft) add gh
   |/
-  o  18:edc3c9de504e@default(draft) a3
+  o  16:edc3c9de504e@default(draft) a3
   |
   ~
 
@@ -1444,28 +1438,28 @@
   $ hg commit -m "_pp"
   $ hg prune --succ "desc(_oo) + desc(_pp)" -r "desc('oo+pp')" --split
   1 changesets pruned
-  1 new unstable changesets
-  $ glog -r "18::"
-  @  35:7a555adf2b4a@default(draft) _pp
+  1 new orphan changesets
+  $ glog -r "edc3c9de504e::"
+  @  32:7a555adf2b4a@default(draft) _pp
   |
-  o  34:2be4d2d5bf34@default(draft) _oo
+  o  31:2be4d2d5bf34@default(draft) _oo
   |
-  | o  33:53f0c003e03e@default(draft) add uu
+  | o  30:53f0c003e03e@default(draft) add uu
   | |
-  | x  32:1bf2152f4f82@default(draft) oo+pp
+  | x  29:1bf2152f4f82@default(draft) oo+pp
   |/
-  | o  31:580886d07058@default(draft) add gg
+  | o  28:580886d07058@default(draft) add gg
   | |
-  o |  30:68330ac625b8@default(draft) add unstableifparentisfolded
+  o |  27:68330ac625b8@default(draft) add unstableifparentisfolded
   |/
-  | o  20:e02107f98737@default(draft) add gh
+  | o  18:e02107f98737@default(draft) add gh
   |/
-  o  18:edc3c9de504e@default(draft) a3
+  o  16:edc3c9de504e@default(draft) a3
   |
   ~
-  $ hg evolve --rev "18::"
-  move:[33] add uu
-  atop:[35] _pp
+  $ hg evolve --rev "edc3c9de504e::"
+  move:[30] add uu
+  atop:[32] _pp
   working directory is now at 43c3f5ef149f
 
 
@@ -1475,7 +1469,7 @@
   $ echo "will be amended" > newfile
   $ hg commit -m "will be amended"
   $ hg parents
-  37	: will be amended - test
+  34	: will be amended - test
 
   $ echo "will be evolved safely" >> a
   $ hg commit -m "will be evolved safely"
@@ -1486,38 +1480,38 @@
   $ hg commit -m "will cause conflict at evolve"
 
   $ glog -r "edc3c9de504e::"
-  @  39:02e943732647@default(draft) will cause conflict at evolve
+  @  36:02e943732647@default(draft) will cause conflict at evolve
   |
-  o  38:f8e30e9317aa@default(draft) will be evolved safely
+  o  35:f8e30e9317aa@default(draft) will be evolved safely
   |
-  o  37:36030b147271@default(draft) will be amended
+  o  34:36030b147271@default(draft) will be amended
   |
-  o  36:43c3f5ef149f@default(draft) add uu
+  o  33:43c3f5ef149f@default(draft) add uu
   |
-  o  35:7a555adf2b4a@default(draft) _pp
+  o  32:7a555adf2b4a@default(draft) _pp
   |
-  o  34:2be4d2d5bf34@default(draft) _oo
+  o  31:2be4d2d5bf34@default(draft) _oo
   |
-  | o  31:580886d07058@default(draft) add gg
+  | o  28:580886d07058@default(draft) add gg
   | |
-  o |  30:68330ac625b8@default(draft) add unstableifparentisfolded
+  o |  27:68330ac625b8@default(draft) add unstableifparentisfolded
   |/
-  | o  20:e02107f98737@default(draft) add gh
+  | o  18:e02107f98737@default(draft) add gh
   |/
-  o  18:edc3c9de504e@default(draft) a3
+  o  16:edc3c9de504e@default(draft) a3
   |
   ~
 
   $ hg update -q 36030b147271
   $ echo "amended" > newfile
   $ hg amend -m "amended"
-  2 new unstable changesets
+  2 new orphan changesets
 
-  $ hg evolve --rev "37::"
-  move:[38] will be evolved safely
-  atop:[41] amended
-  move:[39] will cause conflict at evolve
-  atop:[42] will be evolved safely
+  $ hg evolve --rev "36030b147271::"
+  move:[35] will be evolved safely
+  atop:[37] amended
+  move:[36] will cause conflict at evolve
+  atop:[38] will be evolved safely
   merging newfile
   warning: conflicts while merging newfile! (edit, then use 'hg resolve --mark')
   evolve failed!
@@ -1525,20 +1519,18 @@
   abort: unresolved merge conflicts (see hg help resolve)
   [255]
 
-  $ glog -r "36::" --hidden
-  @  42:c904da5245b0@default(draft) will be evolved safely
+  $ glog -r "43c3f5ef149f::" --hidden
+  @  38:c904da5245b0@default(draft) will be evolved safely
   |
-  o  41:34ae045ec400@default(draft) amended
+  o  37:34ae045ec400@default(draft) amended
   |
-  | x  40:e88bee38ffc2@default(draft) temporary amend commit for 36030b147271
+  | o  36:02e943732647@default(draft) will cause conflict at evolve
   | |
-  | | o  39:02e943732647@default(draft) will cause conflict at evolve
-  | | |
-  | | x  38:f8e30e9317aa@default(draft) will be evolved safely
-  | |/
-  | x  37:36030b147271@default(draft) will be amended
+  | x  35:f8e30e9317aa@default(draft) will be evolved safely
+  | |
+  | x  34:36030b147271@default(draft) will be amended
   |/
-  o  36:43c3f5ef149f@default(draft) add uu
+  o  33:43c3f5ef149f@default(draft) add uu
   |
   ~
 
--- a/tests/test-exchange-obsmarkers-case-A3.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-exchange-obsmarkers-case-A3.t	Tue Oct 10 22:40:41 2017 +0200
@@ -264,7 +264,7 @@
   1 new obsolescence markers
   obsoleted 1 changesets
   (run 'hg heads' to see heads, 'hg merge' to merge)
-  1 new unstable changesets
+  1 new orphan changesets
   ## post pull state
   # obstore: main
   28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
--- a/tests/test-exchange-obsmarkers-case-C1.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-exchange-obsmarkers-case-C1.t	Tue Oct 10 22:40:41 2017 +0200
@@ -58,7 +58,7 @@
   $ mkcommit A
   $ mkcommit B
   $ hg prune -qd '0 0' '.~1'
-  1 new unstable changesets
+  1 new orphan changesets
   $ hg prune -qd '0 0' .
   $ hg log -G --hidden
   x  f6fbb35d8ac9 (draft): B
--- a/tests/test-inhibit.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-inhibit.t	Tue Oct 10 22:40:41 2017 +0200
@@ -100,7 +100,7 @@
   $ echo babar > cJ
   $ hg commit --amend
   $ hg log -G
-  @  9:55c73a90e4b4 add cJ
+  @  8:55c73a90e4b4 add cJ
   |
   o  6:cf5c4f4554ce add cH
   |
@@ -112,7 +112,7 @@
   
   $ hg debugobsinhibit --hidden 18214586bf78
   $ hg log -G
-  @  9:55c73a90e4b4 add cJ
+  @  8:55c73a90e4b4 add cJ
   |
   | o  7:18214586bf78 add cJ
   |/
@@ -128,7 +128,7 @@
 and no divergence
 
   $ hg summary
-  parent: 9:55c73a90e4b4 tip
+  parent: 8:55c73a90e4b4 tip
    add cJ
   branch: default
   commit: (clean)
@@ -146,7 +146,7 @@
   $ wc -m .hg/store/obsinhibit | sed -e 's/^[ \t]*//'
   20 .hg/store/obsinhibit
   $ hg log -G
-  @  9:55c73a90e4b4 add cJ
+  @  8:55c73a90e4b4 add cJ
   |
   | o  7:18214586bf78 add cJ
   |/
@@ -159,8 +159,8 @@
   o  0:54ccbc537fc2 add cA
   
   $ hg phase --public 7
-  1 new bumped changesets
-  $ hg strip 9
+  1 new phase-divergent changesets
+  $ hg strip 8
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
   working directory now at cf5c4f4554ce
   1 changesets pruned
@@ -179,7 +179,7 @@
   $ wc -m .hg/store/obsinhibit | sed -e 's/^[ \t]*//'
   20 .hg/store/obsinhibit
   $ hg log -G
-  o  9:55c73a90e4b4 add cJ
+  o  8:55c73a90e4b4 add cJ
   |
   | o  7:18214586bf78 add cJ
   |/
@@ -196,7 +196,7 @@
   $ hg update 2 --hidden
   2 files updated, 0 files merged, 3 files removed, 0 files unresolved
   $ hg log -G
-  o  9:55c73a90e4b4 add cJ
+  o  8:55c73a90e4b4 add cJ
   |
   | o  7:18214586bf78 add cJ
   |/
@@ -213,10 +213,10 @@
   o  0:54ccbc537fc2 add cA
   
 
-  $ hg update 9
+  $ hg update 8
   4 files updated, 0 files merged, 2 files removed, 0 files unresolved
   $ hg log -G
-  @  9:55c73a90e4b4 add cJ
+  @  8:55c73a90e4b4 add cJ
   |
   | o  7:18214586bf78 add cJ
   |/
@@ -235,7 +235,7 @@
   $ hg strip --hidden 1::
   3 changesets pruned
   $ hg log -G
-  @  9:55c73a90e4b4 add cJ
+  @  8:55c73a90e4b4 add cJ
   |
   | o  7:18214586bf78 add cJ
   |/
@@ -251,7 +251,7 @@
 Bookmark should inhibit all related unstable commits
   $ hg bookmark -r 2 book1  --hidden
   $ hg log -G
-  @  9:55c73a90e4b4 add cJ
+  @  8:55c73a90e4b4 add cJ
   |
   | o  7:18214586bf78 add cJ
   |/
@@ -276,7 +276,7 @@
   bookmark 'book1' deleted
   1 changesets pruned
   $ hg log -G
-  @  9:55c73a90e4b4 add cJ
+  @  8:55c73a90e4b4 add cJ
   |
   | o  7:18214586bf78 add cJ
   |/
@@ -294,7 +294,7 @@
   bookmark 'book2' deleted
   1 changesets pruned
   $ hg log -G
-  @  9:55c73a90e4b4 add cJ
+  @  8:55c73a90e4b4 add cJ
   |
   | o  7:18214586bf78 add cJ
   |/
@@ -397,14 +397,14 @@
   $ mkcommit cK
   created new head
   $ mkcommit cL
-  $ hg update -C 9
+  $ hg update -C 8
   4 files updated, 0 files merged, 2 files removed, 0 files unresolved
   $ hg log -G
-  o  11:53a94305e133 add cL
+  o  10:53a94305e133 add cL
   |
-  o  10:ad78ff7d621f add cK
+  o  9:ad78ff7d621f add cK
   |
-  | @  9:55c73a90e4b4 add cJ
+  | @  8:55c73a90e4b4 add cJ
   | |
   | | o  7:18214586bf78 add cJ
   | |/
@@ -416,10 +416,10 @@
   |/
   o  0:54ccbc537fc2 add cA
   
-  $ hg strip --hidden 10:
+  $ hg strip --hidden 9:
   2 changesets pruned
   $ hg log -G
-  @  9:55c73a90e4b4 add cJ
+  @  8:55c73a90e4b4 add cJ
   |
   | o  7:18214586bf78 add cJ
   |/
@@ -431,21 +431,21 @@
   |
   o  0:54ccbc537fc2 add cA
   
-  $ hg rebase -s 10 -d 3 
-  abort: hidden revision '3'!
+  $ hg rebase -s 9 -d 3 
+  abort: hidden revision '9'!
   (use --hidden to access hidden revisions; pruned)
   [255]
   $ hg rebase -r ad78ff7d621f -r 53a94305e133 -d  2db36d8066ff --config experimental.rebaseskipobsolete=0
+  Warning: accessing hidden changesets ad78ff7d621f,53a94305e133 for write operation
   Warning: accessing hidden changesets 2db36d8066ff for write operation
-  Warning: accessing hidden changesets ad78ff7d621f,53a94305e133 for write operation
-  rebasing 10:ad78ff7d621f "add cK"
-  rebasing 11:53a94305e133 "add cL"
+  rebasing 9:ad78ff7d621f "add cK"
+  rebasing 10:53a94305e133 "add cL" (tip)
   $ hg log -G
-  o  13:2f7b7704d714 add cL
+  o  12:2f7b7704d714 add cL
   |
-  o  12:fe1634cbe235 add cK
+  o  11:fe1634cbe235 add cK
   |
-  | @  9:55c73a90e4b4 add cJ
+  | @  8:55c73a90e4b4 add cJ
   | |
   | | o  7:18214586bf78 add cJ
   | |/
@@ -476,7 +476,7 @@
   $ hg strip --hidden 1::
   5 changesets pruned
   $ hg log -G
-  @  9:55c73a90e4b4 add cJ
+  @  8:55c73a90e4b4 add cJ
   |
   | o  7:18214586bf78 add cJ
   |/
@@ -494,13 +494,13 @@
   $ mkcommit cM
   $ mkcommit cN
   $ hg log -G
-  @  16:a438c045eb37 add cN
+  @  15:a438c045eb37 add cN
   |
-  o  15:2d66e189f5b5 add cM
+  o  14:2d66e189f5b5 add cM
   |
-  o  14:d66ccb8c5871 add cL
+  o  13:d66ccb8c5871 add cL
   |
-  | o  9:55c73a90e4b4 add cJ
+  | o  8:55c73a90e4b4 add cJ
   | |
   o |  7:18214586bf78 add cJ
   |/
@@ -512,20 +512,20 @@
   |
   o  0:54ccbc537fc2 add cA
   
-  $ hg up 15
+  $ hg up 14
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
   $ echo "mmm" >> cM
   $ hg amend
   $ hg log -G
-  @  18:210589181b14 add cM
+  @  16:210589181b14 add cM
   |
-  | o  16:a438c045eb37 add cN
+  | o  15:a438c045eb37 add cN
   | |
-  | o  15:2d66e189f5b5 add cM
+  | o  14:2d66e189f5b5 add cM
   |/
-  o  14:d66ccb8c5871 add cL
+  o  13:d66ccb8c5871 add cL
   |
-  | o  9:55c73a90e4b4 add cJ
+  | o  8:55c73a90e4b4 add cJ
   | |
   o |  7:18214586bf78 add cJ
   |/
@@ -539,18 +539,18 @@
   
 Check that rebasing a commit twice makes the commit visible again
 
-  $ hg rebase -d 18 -r 16 --keep
-  rebasing 16:a438c045eb37 "add cN"
-  $ hg log -r 14:: -G
-  o  19:104eed5354c7 add cN
+  $ hg rebase -d 16 -r 15 --keep
+  rebasing 15:a438c045eb37 "add cN"
+  $ hg log -r 13:: -G
+  o  17:104eed5354c7 add cN
   |
-  @  18:210589181b14 add cM
+  @  16:210589181b14 add cM
   |
-  | o  16:a438c045eb37 add cN
+  | o  15:a438c045eb37 add cN
   | |
-  | o  15:2d66e189f5b5 add cM
+  | o  14:2d66e189f5b5 add cM
   |/
-  o  14:d66ccb8c5871 add cL
+  o  13:d66ccb8c5871 add cL
   |
   ~
   $ hg strip -r 210589181b14
@@ -561,18 +561,18 @@
 Using a hash prefix solely made of digits should work
   $ hg update 210589181
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  $ hg rebase -d 18 -r 16 --keep
-  rebasing 16:a438c045eb37 "add cN"
-  $ hg log -r 14:: -G
-  o  19:104eed5354c7 add cN
+  $ hg rebase -d 16 -r 15 --keep
+  rebasing 15:a438c045eb37 "add cN"
+  $ hg log -r 13:: -G
+  o  17:104eed5354c7 add cN
   |
-  @  18:210589181b14 add cM
+  @  16:210589181b14 add cM
   |
-  | o  16:a438c045eb37 add cN
+  | o  15:a438c045eb37 add cN
   | |
-  | o  15:2d66e189f5b5 add cM
+  | o  14:2d66e189f5b5 add cM
   |/
-  o  14:d66ccb8c5871 add cL
+  o  13:d66ccb8c5871 add cL
   |
   ~
 
@@ -583,25 +583,25 @@
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
   working directory now at d66ccb8c5871
   2 changesets pruned
-  $ hg log -r 14:: -G -T '{rev}:{node|short} {desc|firstline} {bookmarks}\n'
-  o  16:a438c045eb37 add cN
+  $ hg log -r 13:: -G -T '{rev}:{node|short} {desc|firstline} {bookmarks}\n'
+  o  15:a438c045eb37 add cN
   |
-  o  15:2d66e189f5b5 add cM
+  o  14:2d66e189f5b5 add cM
   |
-  @  14:d66ccb8c5871 add cL foo
+  @  13:d66ccb8c5871 add cL foo
   |
   ~
 
 Check that --hidden used with inhibit does not hide every obsolete commit
 We show the log before and after a log -G --hidden, they should be the same
   $ hg log -G
-  o  16:a438c045eb37 add cN
+  o  15:a438c045eb37 add cN
   |
-  o  15:2d66e189f5b5 add cM
+  o  14:2d66e189f5b5 add cM
   |
-  @  14:d66ccb8c5871 add cL
+  @  13:d66ccb8c5871 add cL
   |
-  | o  9:55c73a90e4b4 add cJ
+  | o  8:55c73a90e4b4 add cJ
   | |
   o |  7:18214586bf78 add cJ
   |/
@@ -614,29 +614,25 @@
   o  0:54ccbc537fc2 add cA
   
   $ hg log -G --hidden
-  x  19:104eed5354c7 add cN
+  x  17:104eed5354c7 add cN
   |
-  x  18:210589181b14 add cM
+  x  16:210589181b14 add cM
   |
-  | x  17:b3c3274523f9 temporary amend commit for 2d66e189f5b5
+  | o  15:a438c045eb37 add cN
   | |
-  | | o  16:a438c045eb37 add cN
-  | |/
-  | o  15:2d66e189f5b5 add cM
+  | o  14:2d66e189f5b5 add cM
   |/
-  @  14:d66ccb8c5871 add cL
+  @  13:d66ccb8c5871 add cL
   |
-  | x  13:2f7b7704d714 add cL
+  | x  12:2f7b7704d714 add cL
   | |
-  | x  12:fe1634cbe235 add cK
+  | x  11:fe1634cbe235 add cK
   | |
-  | | x  11:53a94305e133 add cL
+  | | x  10:53a94305e133 add cL
   | | |
-  | | x  10:ad78ff7d621f add cK
+  | | x  9:ad78ff7d621f add cK
   | | |
-  | | | o  9:55c73a90e4b4 add cJ
-  | | | |
-  +-------x  8:e84f73d9ad36 temporary amend commit for 18214586bf78
+  | | | o  8:55c73a90e4b4 add cJ
   | | | |
   o-----+  7:18214586bf78 add cJ
    / / /
@@ -656,13 +652,13 @@
   
 
   $ hg log -G
-  o  16:a438c045eb37 add cN
+  o  15:a438c045eb37 add cN
   |
-  o  15:2d66e189f5b5 add cM
+  o  14:2d66e189f5b5 add cM
   |
-  @  14:d66ccb8c5871 add cL
+  @  13:d66ccb8c5871 add cL
   |
-  | o  9:55c73a90e4b4 add cJ
+  | o  8:55c73a90e4b4 add cJ
   | |
   o |  7:18214586bf78 add cJ
   |/
@@ -700,7 +696,7 @@
   > evolution=createmarkers
   > EOF
 
-  $ hg up 15
+  $ hg up 14
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   working directory parent is obsolete! (2d66e189f5b5)
   $ cat >> $HGRCPATH <<EOF
@@ -710,13 +706,13 @@
   $ echo "CM" > cM
   $ hg amend
   $ hg log -G
-  @  21:721c3c279519 add cM
+  @  18:721c3c279519 add cM
   |
-  | o  16:a438c045eb37 add cN
+  | o  15:a438c045eb37 add cN
   | |
-  | x  15:2d66e189f5b5 add cM
+  | x  14:2d66e189f5b5 add cM
   |/
-  o  14:d66ccb8c5871 add cL
+  o  13:d66ccb8c5871 add cL
   |
   o  7:18214586bf78 add cJ
   |
@@ -743,11 +739,11 @@
 
   $ hg up a438c045eb37
   2 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  $ hg rebase -r 15:: -d 21 --config experimental.rebaseskipobsolete=True
-  note: not rebasing 15:2d66e189f5b5 "add cM", already in destination as 21:721c3c279519 "add cM"
-  rebasing 16:a438c045eb37 "add cN"
+  $ hg rebase -r 14:: -d 18 --config experimental.rebaseskipobsolete=True
+  note: not rebasing 14:2d66e189f5b5 "add cM", already in destination as 18:721c3c279519 "add cM" (tip)
+  rebasing 15:a438c045eb37 "add cN"
   $ hg up -q 2d66e189f5b5 # To inhibit it as the rest of test depends on it
-  $ hg up -q 21
+  $ hg up -q 18
 
 Directaccess should load after some extensions precised in the conf
 With no extension specified:
@@ -817,48 +813,73 @@
   adding manifests
   adding file changes
   added 1 changesets with 1 changes to 1 files (+1 heads)
-  2 new obsolescence markers
+  1 new obsolescence markers
 
 Create a stack (obsolete with successor in dest) -> (not obsolete) and rebase
 it. We expect to not see the stack at the end of the rebase.
-  $ hg log -G  -r "25::"
-  @  25:71eb4f100663 add pk
+  $ hg log -G  -r "003a4735afde::"
+  x  20:003a4735afde add pk
   |
   ~
-  $ hg up -C 22
+  $ hg log -G
+  @  21:71eb4f100663 add pk
+  |
+  | o  19:46cb6daad392 add cN
+  |/
+  o  18:721c3c279519 add cM
+  |
+  | o  16:210589181b14 add cM
+  |/
+  | o  14:2d66e189f5b5 add cM
+  |/
+  o  13:d66ccb8c5871 add cL
+  |
+  | o  8:55c73a90e4b4 add cJ
+  | |
+  o |  7:18214586bf78 add cJ
+  |/
+  o  6:cf5c4f4554ce add cH
+  |
+  o  5:5419eb264a33 add cG
+  |
+  o  4:98065434e5c6 add cE
+  |
+  o  0:54ccbc537fc2 add cA
+  
+  $ hg up -C 46cb6daad392
   1 files updated, 0 files merged, 1 files removed, 0 files unresolved
   $ mkcommit Dk
-  $ hg prune 22 -s 25
+  $ hg prune 46cb6daad392 -s 71eb4f100663
   1 changesets pruned
-  $ hg rebase -s 22 -d 25 --config experimental.rebaseskipobsolete=True
-  note: not rebasing 22:46cb6daad392 "add cN", already in destination as 25:71eb4f100663 "add pk"
-  rebasing 26:7ad60e760c7b "add Dk" (tip)
-  $ hg log -G  -r "25::"
-  @  27:1192fa9fbc68 add Dk
+  $ hg rebase -s 46cb6daad392 -d 71eb4f100663 --config experimental.rebaseskipobsolete=True
+  note: not rebasing 19:46cb6daad392 "add cN", already in destination as 21:71eb4f100663 "add pk"
+  rebasing 22:7ad60e760c7b "add Dk" (tip)
+  $ hg log -G  -r "71eb4f100663::"
+  @  23:1192fa9fbc68 add Dk
   |
-  o  25:71eb4f100663 add pk
+  o  21:71eb4f100663 add pk
   |
   ~
 
 Create a stack (obsolete with succ in dest) -> (not obsolete) -> (not obsolete).
 Rebase the first two revs of the stack onto dest, we expect to see one new
 revision on the destination and everything visible.
-  $ hg up 25
+  $ hg up 71eb4f100663
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
   $ mkcommit Dl
   created new head
   $ mkcommit Dp
   $ mkcommit Do
   $ hg log -G -r "71eb4f100663::"
-  @  30:b517facce1ef add Do
+  @  26:b517facce1ef add Do
   |
-  o  29:c5a47ab27c2e add Dp
+  o  25:c5a47ab27c2e add Dp
   |
-  o  28:8c1c2edbaf1b add Dl
+  o  24:8c1c2edbaf1b add Dl
   |
-  | o  27:1192fa9fbc68 add Dk
+  | o  23:1192fa9fbc68 add Dk
   |/
-  o  25:71eb4f100663 add pk
+  o  21:71eb4f100663 add pk
   |
   ~
   $ hg prune 8c1c2edbaf1b -s 1192fa9fbc68
@@ -866,20 +887,20 @@
   $ hg up 71eb4f100663
   0 files updated, 0 files merged, 3 files removed, 0 files unresolved
   $ hg rebase -r "8c1c2edbaf1b + c5a47ab27c2e" --keep -d 1192fa9fbc68 --config experimental.rebaseskipobsolete=True
-  note: not rebasing 28:8c1c2edbaf1b "add Dl", already in destination as 27:1192fa9fbc68 "add Dk"
-  rebasing 29:c5a47ab27c2e "add Dp"
+  note: not rebasing 24:8c1c2edbaf1b "add Dl", already in destination as 23:1192fa9fbc68 "add Dk"
+  rebasing 25:c5a47ab27c2e "add Dp"
   $ hg log -G  -r "71eb4f100663::"
-  o  31:7d8affb1f604 add Dp
+  o  27:7d8affb1f604 add Dp
   |
-  | o  30:b517facce1ef add Do
+  | o  26:b517facce1ef add Do
   | |
-  | o  29:c5a47ab27c2e add Dp
+  | o  25:c5a47ab27c2e add Dp
   | |
-  | o  28:8c1c2edbaf1b add Dl
+  | o  24:8c1c2edbaf1b add Dl
   | |
-  o |  27:1192fa9fbc68 add Dk
+  o |  23:1192fa9fbc68 add Dk
   |/
-  @  25:71eb4f100663 add pk
+  @  21:71eb4f100663 add pk
   |
   ~
 
@@ -887,17 +908,17 @@
 and only see the top revision added to destination. We don\'t expect 29 to be
 skipped as we used --keep before.
   $ hg rebase -s 8c1c2edbaf1b -d 1192fa9fbc68 --config experimental.rebaseskipobsolete=True
-  note: not rebasing 28:8c1c2edbaf1b "add Dl", already in destination as 27:1192fa9fbc68 "add Dk"
-  rebasing 29:c5a47ab27c2e "add Dp"
-  rebasing 30:b517facce1ef "add Do"
+  note: not rebasing 24:8c1c2edbaf1b "add Dl", already in destination as 23:1192fa9fbc68 "add Dk"
+  rebasing 25:c5a47ab27c2e "add Dp"
+  rebasing 26:b517facce1ef "add Do"
   $ hg log -G  -r "71eb4f100663::"
-  o  32:1d43fff9e26f add Do
+  o  28:1d43fff9e26f add Do
   |
-  o  31:7d8affb1f604 add Dp
+  o  27:7d8affb1f604 add Dp
   |
-  o  27:1192fa9fbc68 add Dk
+  o  23:1192fa9fbc68 add Dk
   |
-  @  25:71eb4f100663 add pk
+  @  21:71eb4f100663 add pk
   |
   ~
 
--- a/tests/test-metaedit.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-metaedit.t	Tue Oct 10 22:40:41 2017 +0200
@@ -80,11 +80,11 @@
 ----
 
   $ hg log -G
-  @  8	: F - test
+  @  7	: F - test
   |
-  o  7	: E - test
+  o  6	: E - test
   |
-  | o  6	: D2 - test
+  | o  5	: D2 - test
   |/
   o  3	: C - test
   |
@@ -124,13 +124,10 @@
   $ hg metaedit --user foobar
   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ hg log --template '{rev}: {author}\n' -r 'desc(F):' --hidden
-  5: test
-  6: test
   7: test
-  8: test
-  9: foobar
+  8: foobar
   $ hg log --template '{rev}: {author}\n' -r .
-  9: foobar
+  8: foobar
 
 TODO: support this
   $ hg metaedit '.^::.'
@@ -139,11 +136,11 @@
 
   $ HGEDITOR=cat hg metaedit '.^::.' --fold
   HG: This is a fold of 2 changesets.
-  HG: Commit message of changeset 7.
+  HG: Commit message of changeset 6.
   
   E
   
-  HG: Commit message of changeset 9.
+  HG: Commit message of changeset 8.
   
   F
   
@@ -160,7 +157,7 @@
   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
 
   $ glog -r .
-  @  10:a08d35fd7d9d@default(draft) E
+  @  9:a08d35fd7d9d@default(draft) E
   |
   ~
 
@@ -182,7 +179,7 @@
   nothing changed
 
   $ glog -r '.^::.'
-  @  10:a08d35fd7d9d@default(draft) E
+  @  9:a08d35fd7d9d@default(draft) E
   |
   o  3:3260958f1169@default(draft) C
   |
@@ -196,20 +193,20 @@
   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ hg log -r '.^::.' --template '{rev}: {desc|firstline}\n'
   3: C
-  11: E
+  10: E
 
   $ hg up .^
   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
   $ hg metaedit --user foobar2 tip
   $ hg log --template '{rev}: {author}\n' -r "user(foobar):" --hidden
-  9: foobar
+  8: foobar
+  9: test
   10: test
-  11: test
-  12: foobar2
+  11: foobar2
   $ hg diff -r "10" -r "11" --hidden
 
 'fold' one commit
   $ HGUSER=foobar3 hg metaedit "desc(D2)" --fold -U --config
   1 changesets folded
   $ hg log -r "tip" --template '{rev}: {author}\n'
-  13: foobar3
+  12: foobar3
--- a/tests/test-obsconvert.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-obsconvert.t	Tue Oct 10 22:40:41 2017 +0200
@@ -16,49 +16,33 @@
 Test conversion between obsolete marker formats
   $ hg debugobsolete
   e63c23eaa88ae77967edcf4ea194d31167c478b0 b81ac6b9d2a55f9a7a6b90a006b1aab0568d6d34 0 (*) {'ef1': '*', 'user': 'test'} (glob)
-  a5b276878fa564da042b4b9efef3713ceea20350 0 {e63c23eaa88ae77967edcf4ea194d31167c478b0} (*) {'ef1': '*', 'user': 'test'} (glob)
   b81ac6b9d2a55f9a7a6b90a006b1aab0568d6d34 384fc811182687231962e486f23ea8c5bab7a2d3 0 (*) {'ef1': '*', 'user': 'test'} (glob)
-  2291082406feb57d0f83b9b0a6777b6074f3fde6 0 {b81ac6b9d2a55f9a7a6b90a006b1aab0568d6d34} (*) {'ef1': '*', 'user': 'test'} (glob)
   384fc811182687231962e486f23ea8c5bab7a2d3 949d379b3c3bf051906bc3528c049cb536e2ec86 0 (*) {'ef1': '*', 'user': 'test'} (glob)
-  1616bdbe82d3fd1fb7c4e068aee277835672ffdc 0 {384fc811182687231962e486f23ea8c5bab7a2d3} (*) {'ef1': '*', 'user': 'test'} (glob)
   949d379b3c3bf051906bc3528c049cb536e2ec86 f2e4c45b2a4a58ccf7ef6825b8fa5685873cd2f7 0 (*) {'ef1': '*', 'user': 'test'} (glob)
-  8668d55aac650158bb510be6d47d21e3db9e5c75 0 {949d379b3c3bf051906bc3528c049cb536e2ec86} (*) {'ef1': '*', 'user': 'test'} (glob)
   $ hg debugobsconvert --new-format 0
   Old store is version 1, will rewrite in version 0
   Done!
   $ hg debugobsolete
   e63c23eaa88ae77967edcf4ea194d31167c478b0 b81ac6b9d2a55f9a7a6b90a006b1aab0568d6d34 0 (*) {'ef1': '*', 'user': 'test'} (glob)
-  a5b276878fa564da042b4b9efef3713ceea20350 0 {e63c23eaa88ae77967edcf4ea194d31167c478b0} (*) {'ef1': '*', 'user': 'test'} (glob)
   b81ac6b9d2a55f9a7a6b90a006b1aab0568d6d34 384fc811182687231962e486f23ea8c5bab7a2d3 0 (*) {'ef1': '*', 'user': 'test'} (glob)
-  2291082406feb57d0f83b9b0a6777b6074f3fde6 0 {b81ac6b9d2a55f9a7a6b90a006b1aab0568d6d34} (*) {'ef1': '*', 'user': 'test'} (glob)
   384fc811182687231962e486f23ea8c5bab7a2d3 949d379b3c3bf051906bc3528c049cb536e2ec86 0 (*) {'ef1': '*', 'user': 'test'} (glob)
-  1616bdbe82d3fd1fb7c4e068aee277835672ffdc 0 {384fc811182687231962e486f23ea8c5bab7a2d3} (*) {'ef1': '*', 'user': 'test'} (glob)
   949d379b3c3bf051906bc3528c049cb536e2ec86 f2e4c45b2a4a58ccf7ef6825b8fa5685873cd2f7 0 (*) {'ef1': '*', 'user': 'test'} (glob)
-  8668d55aac650158bb510be6d47d21e3db9e5c75 0 {949d379b3c3bf051906bc3528c049cb536e2ec86} (*) {'ef1': '*', 'user': 'test'} (glob)
   $ hg debugobsconvert --new-format 0
   abort: New format is the same as the old format, not upgrading!
   [255]
   $ hg debugobsolete
   e63c23eaa88ae77967edcf4ea194d31167c478b0 b81ac6b9d2a55f9a7a6b90a006b1aab0568d6d34 0 (*) {'ef1': '*', 'user': 'test'} (glob)
-  a5b276878fa564da042b4b9efef3713ceea20350 0 {e63c23eaa88ae77967edcf4ea194d31167c478b0} (*) {'ef1': '*', 'user': 'test'} (glob)
   b81ac6b9d2a55f9a7a6b90a006b1aab0568d6d34 384fc811182687231962e486f23ea8c5bab7a2d3 0 (*) {'ef1': '*', 'user': 'test'} (glob)
-  2291082406feb57d0f83b9b0a6777b6074f3fde6 0 {b81ac6b9d2a55f9a7a6b90a006b1aab0568d6d34} (*) {'ef1': '*', 'user': 'test'} (glob)
   384fc811182687231962e486f23ea8c5bab7a2d3 949d379b3c3bf051906bc3528c049cb536e2ec86 0 (*) {'ef1': '*', 'user': 'test'} (glob)
-  1616bdbe82d3fd1fb7c4e068aee277835672ffdc 0 {384fc811182687231962e486f23ea8c5bab7a2d3} (*) {'ef1': '*', 'user': 'test'} (glob)
   949d379b3c3bf051906bc3528c049cb536e2ec86 f2e4c45b2a4a58ccf7ef6825b8fa5685873cd2f7 0 (*) {'ef1': '*', 'user': 'test'} (glob)
-  8668d55aac650158bb510be6d47d21e3db9e5c75 0 {949d379b3c3bf051906bc3528c049cb536e2ec86} (*) {'ef1': '*', 'user': 'test'} (glob)
   $ hg debugobsconvert --new-format 1
   Old store is version 0, will rewrite in version 1
   Done!
   $ hg debugobsolete
   e63c23eaa88ae77967edcf4ea194d31167c478b0 b81ac6b9d2a55f9a7a6b90a006b1aab0568d6d34 0 (*) {'ef1': '*', 'user': 'test'} (glob)
-  a5b276878fa564da042b4b9efef3713ceea20350 0 {e63c23eaa88ae77967edcf4ea194d31167c478b0} (*) {'ef1': '*', 'user': 'test'} (glob)
   b81ac6b9d2a55f9a7a6b90a006b1aab0568d6d34 384fc811182687231962e486f23ea8c5bab7a2d3 0 (*) {'ef1': '*', 'user': 'test'} (glob)
-  2291082406feb57d0f83b9b0a6777b6074f3fde6 0 {b81ac6b9d2a55f9a7a6b90a006b1aab0568d6d34} (*) {'ef1': '*', 'user': 'test'} (glob)
   384fc811182687231962e486f23ea8c5bab7a2d3 949d379b3c3bf051906bc3528c049cb536e2ec86 0 (*) {'ef1': '*', 'user': 'test'} (glob)
-  1616bdbe82d3fd1fb7c4e068aee277835672ffdc 0 {384fc811182687231962e486f23ea8c5bab7a2d3} (*) {'ef1': '*', 'user': 'test'} (glob)
   949d379b3c3bf051906bc3528c049cb536e2ec86 f2e4c45b2a4a58ccf7ef6825b8fa5685873cd2f7 0 (*) {'ef1': '*', 'user': 'test'} (glob)
-  8668d55aac650158bb510be6d47d21e3db9e5c75 0 {949d379b3c3bf051906bc3528c049cb536e2ec86} (*) {'ef1': '*', 'user': 'test'} (glob)
 
 Test that the default is some reasonably modern format (first downgrade)
   $ hg debugobsconvert --new-format 0
@@ -69,10 +53,6 @@
   Done!
   $ hg debugobsolete
   e63c23eaa88ae77967edcf4ea194d31167c478b0 b81ac6b9d2a55f9a7a6b90a006b1aab0568d6d34 0 (*) {'ef1': '*', 'user': 'test'} (glob)
-  a5b276878fa564da042b4b9efef3713ceea20350 0 {e63c23eaa88ae77967edcf4ea194d31167c478b0} (*) {'ef1': '*', 'user': 'test'} (glob)
   b81ac6b9d2a55f9a7a6b90a006b1aab0568d6d34 384fc811182687231962e486f23ea8c5bab7a2d3 0 (*) {'ef1': '*', 'user': 'test'} (glob)
-  2291082406feb57d0f83b9b0a6777b6074f3fde6 0 {b81ac6b9d2a55f9a7a6b90a006b1aab0568d6d34} (*) {'ef1': '*', 'user': 'test'} (glob)
   384fc811182687231962e486f23ea8c5bab7a2d3 949d379b3c3bf051906bc3528c049cb536e2ec86 0 (*) {'ef1': '*', 'user': 'test'} (glob)
-  1616bdbe82d3fd1fb7c4e068aee277835672ffdc 0 {384fc811182687231962e486f23ea8c5bab7a2d3} (*) {'ef1': '*', 'user': 'test'} (glob)
   949d379b3c3bf051906bc3528c049cb536e2ec86 f2e4c45b2a4a58ccf7ef6825b8fa5685873cd2f7 0 (*) {'ef1': '*', 'user': 'test'} (glob)
-  8668d55aac650158bb510be6d47d21e3db9e5c75 0 {949d379b3c3bf051906bc3528c049cb536e2ec86} (*) {'ef1': '*', 'user': 'test'} (glob)
--- a/tests/test-obsolete-push.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-obsolete-push.t	Tue Oct 10 22:40:41 2017 +0200
@@ -26,7 +26,7 @@
   $ hg phase --secret --force .
   $ hg prune 0 1
   2 changesets pruned
-  1 new unstable changesets
+  1 new orphan changesets
   $ glog --hidden
   @  2:244232c2222a@default(secret) C
   |
--- a/tests/test-obsolete.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-obsolete.t	Tue Oct 10 22:40:41 2017 +0200
@@ -134,7 +134,7 @@
   working directory parent is obsolete! (0d3f46688ccc)
   (use 'hg evolve' to update to its successor: 725c380fe99b)
   $ mkcommit d # 5 (on 3)
-  1 new unstable changesets
+  1 new orphan changesets
   $ qlog -r 'obsolete()'
   3
   - 0d3f46688ccc
@@ -145,7 +145,7 @@
   $ qlog -r 'suspended()'
   3
   - 0d3f46688ccc
-  $ qlog -r 'unstable()'
+  $ qlog -r "orphan()"
   5
   - a7a6f2b5d8a5
 
@@ -175,7 +175,7 @@
   $ hg push ../other-new
   pushing to ../other-new
   searching for changes
-  abort: push includes unstable changeset: a7a6f2b5d8a5!
+  abort: push includes orphan changeset: a7a6f2b5d8a5!
   (use 'hg evolve' to get a stable history or --force to ignore warnings)
   [255]
   $ hg push -f ../other-new
@@ -210,7 +210,7 @@
   working directory parent is obsolete! (0d3f46688ccc)
   $ mkcommit obsol_d # 6
   created new head
-  1 new unstable changesets
+  1 new orphan changesets
   $ hg debugobsolete `getid 5` `getid 6`
   obsoleted 1 changesets
   $ qlog
@@ -230,7 +230,7 @@
   $ hg push ../other-new
   pushing to ../other-new
   searching for changes
-  abort: push includes unstable changeset: 95de7fc6918d!
+  abort: push includes orphan changeset: 95de7fc6918d!
   (use 'hg evolve' to get a stable history or --force to ignore warnings)
   [255]
   $ hg push ../other-new -f # use f because there is unstability
@@ -269,7 +269,7 @@
   working directory parent is obsolete! (0d3f46688ccc)
   $ mkcommit "obsol_d'" # 7
   created new head
-  1 new unstable changesets
+  1 new orphan changesets
   $ hg debugobsolete `getid 6` `getid 7`
   obsoleted 1 changesets
   $ hg pull -R ../other-new .
@@ -359,7 +359,7 @@
   working directory parent is obsolete! (0d3f46688ccc)
   $ mkcommit "obsol_d''"
   created new head
-  1 new unstable changesets
+  1 new orphan changesets
   $ hg debugobsolete `getid 7` `getid 8`
   obsoleted 1 changesets
   $ cd ../other-new
@@ -397,7 +397,7 @@
   commit: 1 deleted, 2 unknown (clean)
   update: 2 new changesets, 2 branch heads (merge)
   phases: 4 draft
-  unstable: 1 changesets
+  orphan: 1 changesets
   $ qlog
   6
   - 909a0fb57e5d
@@ -520,8 +520,8 @@
 #excluded 'whole rebase set is extinct and ignored.' message not in core
   $ hg rebase -b '3' -d 4 --traceback --config experimental.rebaseskipobsolete=0
   rebasing 3:0d3f46688ccc "add obsol_c"
-  rebasing 8:159dfc9fa5d3 "add obsol_d''" (tip)
-  2 new divergent changesets
+  rebasing 8:159dfc9fa5d3 "add obsol_d''"
+  2 new content-divergent changesets
   $ hg --hidden log -q -r 'successors(3)'
   4:725c380fe99b
   10:2033b4e49474
@@ -572,7 +572,7 @@
 
   $ cd local
   $ hg phase --hidden --public 11
-  1 new bumped changesets
+  1 new phase-divergent changesets
   $ hg log -G --template='{rev} - ({phase}) {node|short} {desc}\n'
   @  12 - (draft) 6db5e282cb91 add obsol_d'''
   |
@@ -586,19 +586,19 @@
   |
   o  0 - (public) 1f0dee641bb7 add a
   
-  $ hg log -r 'bumped()'
+  $ hg log -r 'phasedivergent()'
   changeset:   12:6db5e282cb91
   tag:         tip
   parent:      10:2033b4e49474
   user:        test
   date:        Thu Jan 01 00:00:00 1970 +0000
-  trouble:     bumped
+  instability: phase-divergent
   summary:     add obsol_d'''
   
   $ hg push ../other-new/
   pushing to ../other-new/
   searching for changes
-  abort: push includes bumped changeset: 6db5e282cb91!
+  abort: push includes phase-divergent changeset: 6db5e282cb91!
   (use 'hg evolve' to get a stable history or --force to ignore warnings)
   [255]
 
@@ -611,7 +611,7 @@
   $ echo 42 >> f
   $ hg commit --amend --traceback --quiet
   $ hg log -G
-  @  changeset:   15:705ab2a6b72e
+  @  changeset:   14:705ab2a6b72e
   |  tag:         tip
   |  parent:      10:2033b4e49474
   |  user:        test
@@ -622,7 +622,7 @@
   |/   parent:      10:2033b4e49474
   |    user:        test
   |    date:        Thu Jan 01 00:00:00 1970 +0000
-  |    trouble:     bumped
+  |    instability: phase-divergent
   |    summary:     add obsol_d'''
   |
   | o  changeset:   11:9468a5f5d8b2
@@ -673,28 +673,28 @@
   1 files updated, 0 files merged, 1 files removed, 0 files unresolved
   $ mkcommit "obsolet_conflicting_d"
   $ hg summary
-  parent: 1[46]:50f11e5e3a63 tip (re)
+  parent: 15:50f11e5e3a63 tip
    add obsolet_conflicting_d
   branch: default
   commit: (clean)
   update: (2|9|11) new changesets, (3|9|10) branch heads \(merge\) (re)
   phases: 3 draft
-  bumped: 1 changesets
+  phase-divergent: 1 changesets
   $ hg debugobsolete `getid a7a6f2b5d8a5` `getid 50f11e5e3a63`
-  $ hg log -r 'divergent()'
+  $ hg log -r 'contentdivergent()'
   changeset:   12:6db5e282cb91
   parent:      10:2033b4e49474
   user:        test
   date:        Thu Jan 01 00:00:00 1970 +0000
-  trouble:     bumped, divergent
+  instability: phase-divergent, content-divergent
   summary:     add obsol_d'''
   
-  changeset:   16:50f11e5e3a63
+  changeset:   15:50f11e5e3a63
   tag:         tip
   parent:      11:9468a5f5d8b2
   user:        test
   date:        Thu Jan 01 00:00:00 1970 +0000
-  trouble:     divergent
+  instability: content-divergent
   summary:     add obsolet_conflicting_d
   
 
@@ -707,11 +707,11 @@
   [2]
   $ hg olog
   @  0d3f46688ccc (3) add obsol_c
-  |    rewritten(parent) as 2033b4e49474 by test (Thu Jan 01 00:00:00 1970 +0000)
-  |    rewritten as 725c380fe99b by test (Thu Jan 01 00:00:00 1970 +0000)
+  |    rewritten(parent) as 2033b4e49474 by test (*) (glob)
+  |    rewritten as 725c380fe99b by test (*) (glob)
   |
   x  4538525df7e2 (2) add c
-       rewritten as 0d3f46688ccc by test (Thu Jan 01 00:00:00 1970 +0000)
+       rewritten as 0d3f46688ccc by test (*) (glob)
   
 
 Check import reports new unstable changeset:
@@ -722,40 +722,34 @@
   (4538525df7e2 has diverged, use 'hg evolve --list --contentdivergent' to resolve the issue)
   $ hg export 9468a5f5d8b2 | hg import -
   applying patch from stdin
-  1 new unstable changesets
+  1 new orphan changesets
 
 
 Relevant marker computation
 ==============================
 
   $ hg log -G --hidden
-  @  changeset:   17:a5f7a21fe7bc
+  @  changeset:   16:a5f7a21fe7bc
   |  tag:         tip
   |  parent:      2:4538525df7e2
   |  user:        test
   |  date:        Thu Jan 01 00:00:00 1970 +0000
-  |  trouble:     unstable
+  |  instability: orphan
   |  summary:     add obsol_d''
   |
-  | o  changeset:   16:50f11e5e3a63
+  | o  changeset:   15:50f11e5e3a63
   | |  parent:      11:9468a5f5d8b2
   | |  user:        test
   | |  date:        Thu Jan 01 00:00:00 1970 +0000
-  | |  trouble:     divergent
+  | |  instability: content-divergent
   | |  summary:     add obsolet_conflicting_d
   | |
-  | | o  changeset:   15:705ab2a6b72e
+  | | o  changeset:   14:705ab2a6b72e
   | | |  parent:      10:2033b4e49474
   | | |  user:        test
   | | |  date:        Thu Jan 01 00:00:00 1970 +0000
   | | |  summary:     add f
   | | |
-  | | | x  changeset:   14:33d458d86621
-  | | | |  user:        test
-  | | | |  date:        Thu Jan 01 00:00:00 1970 +0000
-  | | | |  obsolete:    pruned
-  | | | |  summary:     temporary amend commit for 0b1b6dd009c0
-  | | | |
   | | | x  changeset:   13:0b1b6dd009c0
   | | |/   parent:      10:2033b4e49474
   | | |    user:        test
@@ -767,7 +761,7 @@
   | | |/   parent:      10:2033b4e49474
   | | |    user:        test
   | | |    date:        Thu Jan 01 00:00:00 1970 +0000
-  | | |    trouble:     bumped, divergent
+  | | |    instability: phase-divergent, content-divergent
   | | |    summary:     add obsol_d'''
   | | |
   | o |  changeset:   11:9468a5f5d8b2
@@ -856,8 +850,7 @@
 simple rewrite with a prune attached to it
 
   $ hg debugobsolete --rev 15
-  0b1b6dd009c037985363e2290a0b579819f659db 705ab2a6b72e2cd86edb799ebe15f2695f86143e 0 (*) {'ef1': '*', 'user': 'test'} (glob)
-  33d458d86621f3186c40bfccd77652f4a122743e 0 {0b1b6dd009c037985363e2290a0b579819f659db} (*) {'ef1': '*', 'user': 'test'} (glob)
+  a7a6f2b5d8a54b81bc7aa2fba2934ad6d700a79e 50f11e5e3a63806e678c734e525502f522d37e38 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
 
 Transitive rewrite
 
--- a/tests/test-prev-next.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-prev-next.t	Tue Oct 10 22:40:41 2017 +0200
@@ -169,7 +169,7 @@
 some aspiring children
 
   $ hg amend -m 'added b (2)'
-  1 new unstable changesets
+  1 new orphan changesets
   $ hg next
   no children
   (1 unstable changesets to be evolved here, do you want --evolve?)
@@ -209,7 +209,7 @@
 next with ambiguity in aspiring children
 
   $ hg am -m 'added b (3)'
-  2 new unstable changesets
+  2 new orphan changesets
   $ hg next
   no children
   (2 unstable changesets to be evolved here, do you want --evolve?)
@@ -251,7 +251,7 @@
   $ sleep 1
   $ hg next --evolve
   waiting for lock on working directory of $TESTTMP/repo held by process '*' on host '*' (glob)
-  1 new unstable changesets
+  1 new orphan changesets
   got lock after [4-6] seconds (re)
   move:[2] two
   atop:[3] one
--- a/tests/test-prune.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-prune.t	Tue Oct 10 22:40:41 2017 +0200
@@ -63,7 +63,7 @@
 
   $ hg prune 1
   1 changesets pruned
-  2 new unstable changesets
+  2 new orphan changesets
   $ hg book -i BABAR
   $ hg debugobsolete
   9d206ffc875e1bc304590549be293be36821e66c 0 {47d2a3944de8b013de3be9578e8e344ea2e6c097} (Sat Dec 15 00:00:00 1979 +0000) {'ef1': '*', 'user': 'blah'} (glob)
--- a/tests/test-sharing.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-sharing.t	Tue Oct 10 22:40:41 2017 +0200
@@ -69,10 +69,8 @@
 
 Figure SG02
   $ hg shortlog --hidden -G
-  @  3:60ffde5765c5  draft  fix bug 37
+  @  2:60ffde5765c5  draft  fix bug 37
   |
-  | x  2:2a039763c0f4  draft  temporary amend commit for f6490818a721
-  | |
   | x  1:f6490818a721  draft  prelim change
   |/
   o  0:0dc9c9f6ab91  public  create new project
@@ -87,7 +85,7 @@
   adding manifests
   adding file changes
   added 1 changesets with 1 changes to 1 files (+1 heads)
-  2 new obsolescence markers
+  1 new obsolescence markers
   obsoleted 1 changesets
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   updated to "60ffde5765c5: fix bug 37"
@@ -108,10 +106,8 @@
 
 Figure SG04 (dev-repo)
   $ hg shortlog --hidden -G
-  @  4:de6151c48e1c  draft  fix bug 37
+  @  3:de6151c48e1c  draft  fix bug 37
   |
-  | x  3:ad19d3570adb  draft  temporary amend commit for 60ffde5765c5
-  | |
   | x  2:60ffde5765c5  draft  fix bug 37
   |/
   | x  1:f6490818a721  draft  prelim change
@@ -125,12 +121,10 @@
   updated to "de6151c48e1c: fix bug 37"
   1 other heads for branch "default"
   $ hg shortlog --hidden -G
-  @  4:de6151c48e1c  draft  fix bug 37
+  @  3:de6151c48e1c  draft  fix bug 37
   |
-  | x  3:60ffde5765c5  draft  fix bug 37
+  | x  2:60ffde5765c5  draft  fix bug 37
   |/
-  | x  2:2a039763c0f4  draft  temporary amend commit for f6490818a721
-  | |
   | x  1:f6490818a721  draft  prelim change
   |/
   o  0:0dc9c9f6ab91  public  create new project
@@ -143,7 +137,7 @@
   adding manifests
   adding file changes
   added 1 changesets with 1 changes to 1 files
-  4 new obsolescence markers
+  2 new obsolescence markers
 
 Now that the fix is public, we cannot amend it any more.
   $ hg amend -m 'fix bug 37'
@@ -159,7 +153,7 @@
   
 Oops, still have draft changesets in dev-repo: push the phase change there.
   $ hg -R ../dev-repo shortlog -r 'draft()'
-  4:de6151c48e1c  draft  fix bug 37
+  3:de6151c48e1c  draft  fix bug 37
   $ hg push ../dev-repo
   pushing to ../dev-repo
   searching for changes
@@ -212,7 +206,7 @@
   adding manifests
   adding file changes
   added 1 changesets with 1 changes to 1 files (+1 heads)
-  2 new obsolescence markers
+  1 new obsolescence markers
   obsoleted 1 changesets
   updating bookmark bug15
   $ hg -R ../review bookmarks
@@ -257,7 +251,7 @@
   adding manifests
   adding file changes
   added 1 changesets with 1 changes to 1 files (+1 heads)
-  2 new obsolescence markers
+  1 new obsolescence markers
   obsoleted 1 changesets
   updating bookmark featureX
 
@@ -272,7 +266,7 @@
   adding manifests
   adding file changes
   added 1 changesets with 1 changes to 1 files
-  4 new obsolescence markers
+  2 new obsolescence markers
   $ hg -R ../public bookmarks
   no bookmarks set
   $ hg push ../review
@@ -283,7 +277,7 @@
   adding manifests
   adding file changes
   added 1 changesets with 1 changes to 1 files (+1 heads)
-  2 new obsolescence markers
+  1 new obsolescence markers
   obsoleted 1 changesets
   updating bookmark featureX
   $ hg -R ../review bookmarks
@@ -333,17 +327,15 @@
 her change, so now she can publish it.
   $ cd ../alice
   $ hg --hidden shortlog -G -r 1::
-  @  4:cbdfbd5a5db2  draft  fix bug 15 (v2)
+  @  3:cbdfbd5a5db2  draft  fix bug 15 (v2)
   |
-  | x  3:55dd95168a35  draft  temporary amend commit for f91e97234c2b
-  | |
   | x  2:f91e97234c2b  draft  fix bug 15 (v1)
   |/
   o  1:de6151c48e1c  public  fix bug 37
   |
   ~
   $ hg outgoing -q ../public
-  4:cbdfbd5a5db2
+  3:cbdfbd5a5db2
   $ hg push ../public
   pushing to ../public
   searching for changes
@@ -358,22 +350,20 @@
   adding manifests
   adding file changes
   added 1 changesets with 1 changes to 1 files (+1 heads)
-  4 new obsolescence markers
+  2 new obsolescence markers
   (run 'hg heads' to see heads, 'hg merge' to merge)
   $ hg log -G -q -r 'head()'
-  o  5:540ba8f317e6
+  o  4:540ba8f317e6
   |
   ~
-  @  4:cbdfbd5a5db2
+  @  3:cbdfbd5a5db2
   |
   ~
   $ hg --hidden shortlog -G -r 1::
-  o  5:540ba8f317e6  public  implement feature X (v3)
+  o  4:540ba8f317e6  public  implement feature X (v3)
   |
-  | @  4:cbdfbd5a5db2  draft  fix bug 15 (v2)
+  | @  3:cbdfbd5a5db2  draft  fix bug 15 (v2)
   |/
-  | x  3:55dd95168a35  draft  temporary amend commit for f91e97234c2b
-  | |
   | x  2:f91e97234c2b  draft  fix bug 15 (v1)
   |/
   o  1:de6151c48e1c  public  fix bug 37
@@ -383,7 +373,7 @@
 Alice rebases her draft changeset on top of Bob's public changeset and
 publishes the result.
   $ hg rebase -d 5
-  rebasing 4:cbdfbd5a5db2 "fix bug 15 (v2)" (bug15)
+  rebasing 3:cbdfbd5a5db2 "fix bug 15 (v2)" (bug15)
   $ hg push ../public
   pushing to ../public
   searching for changes
@@ -391,7 +381,7 @@
   adding manifests
   adding file changes
   added 1 changesets with 1 changes to 1 files
-  3 new obsolescence markers
+  2 new obsolescence markers
   $ hg push ../review
   pushing to ../review
   searching for changes
@@ -474,10 +464,8 @@
   $ echo 'better fix (bob)' >> file1
   $ hg amend -u bob -m 'fix bug 24 (v2 by bob)'
   $ hg --hidden shortlog -G -r 3::
-  @  6:a360947f6faf  draft  fix bug 24 (v2 by bob)
+  @  5:a360947f6faf  draft  fix bug 24 (v2 by bob)
   |
-  | x  5:3466c7f5a149  draft  temporary amend commit for 2fe6c4bd32d0
-  | |
   | x  4:2fe6c4bd32d0  draft  fix bug 24 (v1)
   |/
   o  3:a06ec1bf97bd  public  fix bug 15 (v2)
@@ -492,56 +480,50 @@
   adding manifests
   adding file changes
   added 1 changesets with 1 changes to 1 files (+1 heads)
-  2 new obsolescence markers
+  1 new obsolescence markers
   (run 'hg heads' to see heads, 'hg merge' to merge)
-  2 new divergent changesets
+  2 new content-divergent changesets
 
 Figure SG09: multiple heads! divergence! oh my!
   $ hg --hidden shortlog -G -r 3::
-  o  7:e3f99ce9d9cd  draft  fix bug 24 (v2 by alice)
+  o  6:e3f99ce9d9cd  draft  fix bug 24 (v2 by alice)
   |
-  | @  6:a360947f6faf  draft  fix bug 24 (v2 by bob)
+  | @  5:a360947f6faf  draft  fix bug 24 (v2 by bob)
   |/
-  | x  5:3466c7f5a149  draft  temporary amend commit for 2fe6c4bd32d0
-  | |
   | x  4:2fe6c4bd32d0  draft  fix bug 24 (v1)
   |/
   o  3:a06ec1bf97bd  public  fix bug 15 (v2)
   |
   ~
   $ hg --hidden shortlog -r 'successors(2fe6)'
-  6:a360947f6faf  draft  fix bug 24 (v2 by bob)
-  7:e3f99ce9d9cd  draft  fix bug 24 (v2 by alice)
+  5:a360947f6faf  draft  fix bug 24 (v2 by bob)
+  6:e3f99ce9d9cd  draft  fix bug 24 (v2 by alice)
 
 Use evolve to fix the divergence.
   $ HGMERGE=internal:other hg evolve --contentdivergent
-  merge:[6] fix bug 24 (v2 by bob)
-  with: [7] fix bug 24 (v2 by alice)
+  merge:[5] fix bug 24 (v2 by bob)
+  with: [6] fix bug 24 (v2 by alice)
   base: [4] fix bug 24 (v1)
   0 files updated, 1 files merged, 0 files removed, 0 files unresolved
   working directory is now at 5ad6037c046c
-  $ hg log -q -r 'divergent()'
+  $ hg log -q -r 'contentdivergent()'
 
 Figure SG10: Bob's repository after fixing divergence.
   $ hg --hidden shortlog -G -r 3::
-  @  9:5ad6037c046c  draft  fix bug 24 (v2 by bob)
+  @  7:5ad6037c046c  draft  fix bug 24 (v2 by bob)
   |
-  | x  8:bcfc9a755ac3  draft  temporary amend commit for a360947f6faf
-  | |
-  +---x  7:e3f99ce9d9cd  draft  fix bug 24 (v2 by alice)
-  | |
-  | x  6:a360947f6faf  draft  fix bug 24 (v2 by bob)
+  | x  6:e3f99ce9d9cd  draft  fix bug 24 (v2 by alice)
   |/
-  | x  5:3466c7f5a149  draft  temporary amend commit for 2fe6c4bd32d0
-  | |
+  | x  5:a360947f6faf  draft  fix bug 24 (v2 by bob)
+  |/
   | x  4:2fe6c4bd32d0  draft  fix bug 24 (v1)
   |/
   o  3:a06ec1bf97bd  public  fix bug 15 (v2)
   |
   ~
-  $ hg --hidden shortlog -r 'precursors(9)'
-  6:a360947f6faf  draft  fix bug 24 (v2 by bob)
-  7:e3f99ce9d9cd  draft  fix bug 24 (v2 by alice)
+  $ hg --hidden shortlog -r 'precursors(5ad6037c046c)'
+  5:a360947f6faf  draft  fix bug 24 (v2 by bob)
+  6:e3f99ce9d9cd  draft  fix bug 24 (v2 by alice)
   $ cat file1
   Do stuff.
   pretty good fix
--- a/tests/test-split.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-split.t	Tue Oct 10 22:40:41 2017 +0200
@@ -39,8 +39,7 @@
   $ echo "change to a" >> _a
   $ hg amend
   $ hg debugobsolete
-  1334a80b33c3f9873edab728fbbcf500eab61d2e d2fe56e71366c2c5376c89960c281395062c0619 0 (*) {'ef1': '8', 'user': 'test'} (glob)
-  06be89dfe2ae447383f30a2984933352757b6fb4 0 {1334a80b33c3f9873edab728fbbcf500eab61d2e} (*) {'ef1': '0', 'user': 'test'} (glob)
+  1334a80b33c3f9873edab728fbbcf500eab61d2e d2fe56e71366c2c5376c89960c281395062c0619 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '8', 'operation': 'amend', 'user': 'test'}
 
 To create commits with the number of split
   $ echo 0 > num
@@ -92,17 +91,16 @@
   no more change to split
 
   $ hg debugobsolete
-  1334a80b33c3f9873edab728fbbcf500eab61d2e d2fe56e71366c2c5376c89960c281395062c0619 0 (*) {'ef1': '8', 'user': 'test'} (glob)
-  06be89dfe2ae447383f30a2984933352757b6fb4 0 {1334a80b33c3f9873edab728fbbcf500eab61d2e} (*) {'ef1': '0', 'user': 'test'} (glob)
+  1334a80b33c3f9873edab728fbbcf500eab61d2e d2fe56e71366c2c5376c89960c281395062c0619 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '8', 'operation': 'amend', 'user': 'test'}
   d2fe56e71366c2c5376c89960c281395062c0619 2d8abdb827cdf71ca477ef6985d7ceb257c53c1b 033b3f5ae73db67c10de938fb6f26b949aaef172 0 (*) {'ef1': '13', 'user': 'test'} (glob)
   $ hg log -G
-  @  changeset:   7:033b3f5ae73d
+  @  changeset:   6:033b3f5ae73d
   |  tag:         tip
   |  user:        test
   |  date:        Thu Jan 01 00:00:00 1970 +0000
   |  summary:     split2
   |
-  o  changeset:   6:2d8abdb827cd
+  o  changeset:   5:2d8abdb827cd
   |  parent:      2:52149352b372
   |  user:        test
   |  date:        Thu Jan 01 00:00:00 1970 +0000
@@ -148,15 +146,15 @@
 Split a revision specified with -r
   $ echo "change to b" >> _b
   $ hg amend -m "_cprim"
-  2 new unstable changesets
+  2 new orphan changesets
   $ hg evolve --all
-  move:[6] split1
-  atop:[9] _cprim
-  move:[7] split2
-  atop:[10] split1
+  move:[5] split1
+  atop:[7] _cprim
+  move:[6] split2
+  atop:[8] split1
   working directory is now at * (glob)
   $ hg log -r "desc(_cprim)" -v -p
-  changeset:   9:b434287e665c
+  changeset:   7:b434287e665c
   parent:      1:37445b16603b
   user:        other-test-user
   date:        Thu Jan 01 00:00:00 1970 +0000
@@ -210,38 +208,36 @@
 remaining changes
 
   $ hg debugobsolete
-  1334a80b33c3f9873edab728fbbcf500eab61d2e d2fe56e71366c2c5376c89960c281395062c0619 0 (*) {'ef1': '8', 'user': 'test'} (glob)
-  06be89dfe2ae447383f30a2984933352757b6fb4 0 {1334a80b33c3f9873edab728fbbcf500eab61d2e} (*) {'ef1': '0', 'user': 'test'} (glob)
+  1334a80b33c3f9873edab728fbbcf500eab61d2e d2fe56e71366c2c5376c89960c281395062c0619 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '8', 'operation': 'amend', 'user': 'test'}
   d2fe56e71366c2c5376c89960c281395062c0619 2d8abdb827cdf71ca477ef6985d7ceb257c53c1b 033b3f5ae73db67c10de938fb6f26b949aaef172 0 (*) {'ef1': '13', 'user': 'test'} (glob)
-  52149352b372d39b19127d5bd2d488b1b63f9f85 b434287e665ce757ee5463a965cb3d119ca9e893 0 (*) {'ef1': '9', 'user': 'test'} (glob)
-  7a4fc25a48a5797bb069563854455aecf738d8f2 0 {52149352b372d39b19127d5bd2d488b1b63f9f85} (*) {'ef1': '0', 'user': 'test'} (glob)
+  52149352b372d39b19127d5bd2d488b1b63f9f85 b434287e665ce757ee5463a965cb3d119ca9e893 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '9', 'operation': 'amend', 'user': 'test'}
   2d8abdb827cdf71ca477ef6985d7ceb257c53c1b e2b4afde39803bd42bb1374b230fca1b1e8cc868 0 (*) {'ef1': '4', 'user': 'test'} (glob)
   033b3f5ae73db67c10de938fb6f26b949aaef172 bb5e4f6020c74e7961a51fda635ea9df9b04dda8 0 (*) {'ef1': '4', 'user': 'test'} (glob)
   b434287e665ce757ee5463a965cb3d119ca9e893 ead2066d1dbf14833fe1069df1b735e4e9468c40 1188c4216eba37f18a1de6558564601d00ff2143 0 (*) {'ef1': '13', 'user': 'test'} (glob)
   $ hg evolve --all
-  move:[10] split1
-  atop:[13] split4
-  move:[11] split2
-  atop:[14] split1
+  move:[8] split1
+  atop:[11] split4
+  move:[9] split2
+  atop:[12] split1
   working directory is now at d74c6715e706
   $ hg log -G
-  @  changeset:   15:d74c6715e706
+  @  changeset:   13:d74c6715e706
   |  tag:         tip
   |  user:        test
   |  date:        Thu Jan 01 00:00:00 1970 +0000
   |  summary:     split2
   |
-  o  changeset:   14:3f134f739075
+  o  changeset:   12:3f134f739075
   |  user:        test
   |  date:        Thu Jan 01 00:00:00 1970 +0000
   |  summary:     split1
   |
-  o  changeset:   13:1188c4216eba
+  o  changeset:   11:1188c4216eba
   |  user:        other-test-user
   |  date:        Thu Jan 01 00:00:00 1970 +0000
   |  summary:     split4
   |
-  o  changeset:   12:ead2066d1dbf
+  o  changeset:   10:ead2066d1dbf
   |  parent:      1:37445b16603b
   |  user:        other-test-user
   |  date:        Thu Jan 01 00:00:00 1970 +0000
@@ -265,19 +261,19 @@
   $ echo "changetofilea" > _a
   $ hg amend
   $ hg book
-     bookA                     17:7a6b35779b85
-   * bookB                     17:7a6b35779b85
-  $ hg log -G -r "14::"
-  @  changeset:   17:7a6b35779b85
+     bookA                     14:7a6b35779b85
+   * bookB                     14:7a6b35779b85
+  $ hg log -G -r "3f134f739075::"
+  @  changeset:   14:7a6b35779b85
   |  bookmark:    bookA
   |  bookmark:    bookB
   |  tag:         tip
-  |  parent:      14:3f134f739075
+  |  parent:      12:3f134f739075
   |  user:        test
   |  date:        Thu Jan 01 00:00:00 1970 +0000
   |  summary:     split2
   |
-  o  changeset:   14:3f134f739075
+  o  changeset:   12:3f134f739075
   |  user:        test
   ~  date:        Thu Jan 01 00:00:00 1970 +0000
      summary:     split1
@@ -308,8 +304,8 @@
   
   created new head
   Done splitting? [yN] y
-  $ hg log -G -r "14::"
-  @  changeset:   19:452a26648478
+  $ hg log -G -r "3f134f739075::"
+  @  changeset:   16:452a26648478
   |  bookmark:    bookA
   |  bookmark:    bookB
   |  tag:         tip
@@ -317,20 +313,20 @@
   |  date:        Thu Jan 01 00:00:00 1970 +0000
   |  summary:     split6
   |
-  o  changeset:   18:1315679b77dc
-  |  parent:      14:3f134f739075
+  o  changeset:   15:1315679b77dc
+  |  parent:      12:3f134f739075
   |  user:        victor
   |  date:        Thu Jan 01 00:00:00 1970 +0000
   |  summary:     split5
   |
-  o  changeset:   14:3f134f739075
+  o  changeset:   12:3f134f739075
   |  user:        test
   ~  date:        Thu Jan 01 00:00:00 1970 +0000
      summary:     split1
   
   $ hg book
-     bookA                     19:452a26648478
-   * bookB                     19:452a26648478
+     bookA                     16:452a26648478
+   * bookB                     16:452a26648478
  
 Lastest revision is selected if multiple are given to -r
   $ hg split -r "desc(_a)::"
@@ -416,7 +412,7 @@
   $ hg commit -m "Works on mytopic" babar celeste --user victor
   active topic 'mytopic' grew its first changeset
   $ hg log -r . 
-  changeset:   21:26f72cfaf036
+  changeset:   18:26f72cfaf036
   branch:      new-branch
   tag:         tip
   topic:       mytopic
@@ -425,7 +421,7 @@
   summary:     Works on mytopic
   
   $ hg summary
-  parent: 21:26f72cfaf036 tip
+  parent: 18:26f72cfaf036 tip
    Works on mytopic
   branch: new-branch
   commit: 2 unknown (clean)
@@ -472,15 +468,15 @@
 Check that the topic is still here
 
   $ hg log -r "tip~1::"
-  changeset:   22:addcf498f19e
+  changeset:   19:addcf498f19e
   branch:      new-branch
   topic:       mytopic
-  parent:      20:fdb403258632
+  parent:      17:fdb403258632
   user:        test
   date:        Thu Jan 01 00:00:00 1970 +0000
   summary:     split7
   
-  changeset:   23:2532b288af61
+  changeset:   20:2532b288af61
   branch:      new-branch
   tag:         tip
   topic:       mytopic
--- a/tests/test-stabilize-conflict.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-stabilize-conflict.t	Tue Oct 10 22:40:41 2017 +0200
@@ -65,7 +65,7 @@
   $ safesed 's/huit/eight/' babar
   $ hg diff
   diff -r 9d5daf8bd956 babar
-  --- a/babar	Thu Jan 01 00:00:00 1970 +0000
+  --- a/babar	* (glob)
   +++ b/babar	* (glob)
   @@ -5,6 +5,6 @@
    cinq
@@ -76,21 +76,21 @@
    neuf
    dix
   $ hg amend
-  1 new unstable changesets
+  1 new orphan changesets
   $ hg evolve
   move:[2] babar count up to fifteen
-  atop:[4] babar count up to ten
+  atop:[3] babar count up to ten
   merging babar
   working directory is now at 71c18f70c34f
   $ hg resolve -l
   $ hg log -G
-  @  changeset:   5:71c18f70c34f
+  @  changeset:   4:71c18f70c34f
   |  tag:         tip
   |  user:        test
   |  date:        Thu Jan 01 00:00:00 1970 +0000
   |  summary:     babar count up to fifteen
   |
-  o  changeset:   4:5977072d13c5
+  o  changeset:   3:5977072d13c5
   |  parent:      0:29ec1554cfaf
   |  user:        test
   |  date:        Thu Jan 01 00:00:00 1970 +0000
@@ -109,12 +109,12 @@
   $ hg gdown
   gdown have been deprecated in favor of previous
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  [4] babar count up to ten
+  [3] babar count up to ten
   $ safesed 's/dix/ten/' babar
   $ hg diff
   diff -r 5977072d13c5 babar
   --- a/babar	Thu Jan 01 00:00:00 1970 +0000
-  +++ b/babar	* (glob)
+  +++ b/babar	Thu Jan 01 00:00:00 1970 +0000
   @@ -7,4 +7,4 @@
    sept
    eight
@@ -122,10 +122,10 @@
   -dix
   +ten
   $ hg amend
-  1 new unstable changesets
+  1 new orphan changesets
   $ hg evolve
-  move:[5] babar count up to fifteen
-  atop:[7] babar count up to ten
+  move:[4] babar count up to fifteen
+  atop:[5] babar count up to ten
   merging babar
   warning: conflicts while merging babar! (edit, then use 'hg resolve --mark')
   evolve failed!
@@ -135,20 +135,20 @@
   $ hg resolve -l
   U babar
   $ hg log -G
-  @  changeset:   7:e04690b09bc6
+  @  changeset:   5:e04690b09bc6
   |  tag:         tip
   |  parent:      0:29ec1554cfaf
   |  user:        test
   |  date:        Thu Jan 01 00:00:00 1970 +0000
   |  summary:     babar count up to ten
   |
-  | o  changeset:   5:71c18f70c34f
+  | o  changeset:   4:71c18f70c34f
   | |  user:        test
   | |  date:        Thu Jan 01 00:00:00 1970 +0000
-  | |  trouble:     unstable
+  | |  instability: orphan
   | |  summary:     babar count up to fifteen
   | |
-  | x  changeset:   4:5977072d13c5
+  | x  changeset:   3:5977072d13c5
   |/   parent:      0:29ec1554cfaf
   |    user:        test
   |    date:        Thu Jan 01 00:00:00 1970 +0000
@@ -168,16 +168,16 @@
   $ hg resolve --all -m
   (no more unresolved files)
   $ hg evolve --continue
-  grafting 5:71c18f70c34f "babar count up to fifteen"
+  grafting 4:71c18f70c34f "babar count up to fifteen"
   $ hg resolve -l
   $ hg log -G
-  @  changeset:   8:1836b91c6c1d
+  @  changeset:   6:1836b91c6c1d
   |  tag:         tip
   |  user:        test
   |  date:        Thu Jan 01 00:00:00 1970 +0000
   |  summary:     babar count up to fifteen
   |
-  o  changeset:   7:e04690b09bc6
+  o  changeset:   5:e04690b09bc6
   |  parent:      0:29ec1554cfaf
   |  user:        test
   |  date:        Thu Jan 01 00:00:00 1970 +0000
@@ -196,12 +196,12 @@
   $ hg gdown
   gdown have been deprecated in favor of previous
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  [7] babar count up to ten
+  [5] babar count up to ten
   $ safesed 's/ten/zehn/' babar
   $ hg diff
   diff -r e04690b09bc6 babar
   --- a/babar	Thu Jan 01 00:00:00 1970 +0000
-  +++ b/babar	* (glob)
+  +++ b/babar	Thu Jan 01 00:00:00 1970 +0000
   @@ -7,4 +7,4 @@
    sept
    eight
@@ -209,13 +209,13 @@
   -ten
   +zehn
   $ hg amend
-  1 new unstable changesets
+  1 new orphan changesets
   $ safesed 's/interactive=.*/interactive=true/' $HGRCPATH
   $ hg evolve --tool touch <<EOF
   > n
   > EOF
-  move:[8] babar count up to fifteen
-  atop:[10] babar count up to ten
+  move:[6] babar count up to fifteen
+  atop:[7] babar count up to ten
   merging babar
    output file babar appears unchanged
   was merge successful (yn)? n
@@ -227,20 +227,20 @@
   $ hg resolve -l
   U babar
   $ hg log -G
-  @  changeset:   10:b20d08eea373
+  @  changeset:   7:b20d08eea373
   |  tag:         tip
   |  parent:      0:29ec1554cfaf
   |  user:        test
   |  date:        Thu Jan 01 00:00:00 1970 +0000
   |  summary:     babar count up to ten
   |
-  | o  changeset:   8:1836b91c6c1d
+  | o  changeset:   6:1836b91c6c1d
   | |  user:        test
   | |  date:        Thu Jan 01 00:00:00 1970 +0000
-  | |  trouble:     unstable
+  | |  instability: orphan
   | |  summary:     babar count up to fifteen
   | |
-  | x  changeset:   7:e04690b09bc6
+  | x  changeset:   5:e04690b09bc6
   |/   parent:      0:29ec1554cfaf
   |    user:        test
   |    date:        Thu Jan 01 00:00:00 1970 +0000
--- a/tests/test-stabilize-order.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-stabilize-order.t	Tue Oct 10 22:40:41 2017 +0200
@@ -38,18 +38,18 @@
   [2] addb
   $ echo b >> b
   $ hg amend
-  1 new unstable changesets
+  1 new orphan changesets
   $ hg gdown
   gdown have been deprecated in favor of previous
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
   [1] adda
   $ echo a >> a
   $ hg amend
-  1 new unstable changesets
+  1 new orphan changesets
   $ glog
-  @  7:005fe5914f78@default(draft) adda
+  @  5:005fe5914f78@default(draft) adda
   |
-  | o  5:22619daeed78@default(draft) addb
+  | o  4:22619daeed78@default(draft) addb
   | |
   | | o  3:7a7552255fb5@default(draft) addc
   | | |
@@ -63,8 +63,8 @@
 Test stabilizing a predecessor child
 
   $ hg evolve -v
-  move:[5] addb
-  atop:[7] adda
+  move:[4] addb
+  atop:[5] adda
   hg rebase -r 22619daeed78 -d 005fe5914f78
   resolving manifests
   getting b
@@ -74,9 +74,9 @@
   committing changelog
   working directory is now at 81b8bbcd5892
   $ glog
-  @  8:81b8bbcd5892@default(draft) addb
+  @  6:81b8bbcd5892@default(draft) addb
   |
-  o  7:005fe5914f78@default(draft) adda
+  o  5:005fe5914f78@default(draft) adda
   |
   | o  3:7a7552255fb5@default(draft) addc
   | |
@@ -94,7 +94,7 @@
   $ hg debugobsolete > successors.old
   $ hg evolve -v
   move:[3] addc
-  atop:[8] addb
+  atop:[6] addb
   hg rebase -r 7a7552255fb5 -d 81b8bbcd5892
   resolving manifests
   getting b
@@ -109,21 +109,21 @@
   $ diff -u successors.old successors.new
   --- successors.old* (glob)
   +++ successors.new* (glob)
-  @@ -3,3 +3,4 @@
-   93418d2c0979643ad446f621195e78720edb05b4 005fe5914f78e8bc64c7eba28117b0b1fa210d0d 0 (*) {'ef1': '*', 'user': 'test'} (glob)
-   7a7d76dc97c57751de9e80f61ed2a639bd03cd24 0 {93418d2c0979643ad446f621195e78720edb05b4} (*) {'ef1': '*', 'user': 'test'} (glob)
-   22619daeed78036f80fbd326b6852519c4f0c25e 81b8bbcd5892841efed41433d7a5e9df922396cb 0 (*) {'ef1': '*', 'user': 'test'} (glob)
-  +7a7552255fb5f8bd745e46fba6f0ca633a4dd716 0f691739f91762462bf8ba21f35fdf71fe64310e 0 (*) {'ef1': '*', 'user': 'test'} (glob)
+  @@ -1,3 +1,4 @@
+   ef23d6ef94d68dea65d20587dfecc8b33d165617 22619daeed78036f80fbd326b6852519c4f0c25e 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '8', 'operation': 'amend', 'user': 'test'}
+   93418d2c0979643ad446f621195e78720edb05b4 005fe5914f78e8bc64c7eba28117b0b1fa210d0d 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '8', 'operation': 'amend', 'user': 'test'}
+   22619daeed78036f80fbd326b6852519c4f0c25e 81b8bbcd5892841efed41433d7a5e9df922396cb 0 (*) {'ef1': '4', 'user': 'test'} (glob)
+  +7a7552255fb5f8bd745e46fba6f0ca633a4dd716 0f691739f91762462bf8ba21f35fdf71fe64310e 0 (*) {'ef1': '4', 'user': 'test'} (glob)
   [1]
 
 
 
   $ glog
-  @  9:0f691739f917@default(draft) addc
+  @  7:0f691739f917@default(draft) addc
   |
-  o  8:81b8bbcd5892@default(draft) addb
+  o  6:81b8bbcd5892@default(draft) addb
   |
-  o  7:005fe5914f78@default(draft) adda
+  o  5:005fe5914f78@default(draft) adda
   |
   o  0:c471ef929e6a@default(draft) addroot
   
@@ -137,15 +137,15 @@
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
   $ echo b >> b
   $ hg amend
-  1 new unstable changesets
+  1 new orphan changesets
   $ glog
-  @  11:7a68bc4596ea@default(draft) addb
+  @  8:7a68bc4596ea@default(draft) addb
   |
-  | o  9:0f691739f917@default(draft) addc
+  | o  7:0f691739f917@default(draft) addc
   | |
-  | x  8:81b8bbcd5892@default(draft) addb
+  | x  6:81b8bbcd5892@default(draft) addb
   |/
-  o  7:005fe5914f78@default(draft) adda
+  o  5:005fe5914f78@default(draft) adda
   |
   o  0:c471ef929e6a@default(draft) addroot
   
@@ -156,8 +156,8 @@
   (1 other orphan in the repository, do you want --any or --rev)
   [2]
   $ hg evolve --any -v
-  move:[9] addc
-  atop:[11] addb
+  move:[7] addc
+  atop:[8] addb
   hg rebase -r 0f691739f917 -d 7a68bc4596ea
   resolving manifests
   removing c
@@ -170,11 +170,11 @@
   committing changelog
   working directory is now at 2256dae6521f
   $ glog
-  @  12:2256dae6521f@default(draft) addc
+  @  9:2256dae6521f@default(draft) addc
   |
-  o  11:7a68bc4596ea@default(draft) addb
+  o  8:7a68bc4596ea@default(draft) addb
   |
-  o  7:005fe5914f78@default(draft) adda
+  o  5:005fe5914f78@default(draft) adda
   |
   o  0:c471ef929e6a@default(draft) addroot
   
@@ -195,41 +195,41 @@
   $ hg up .^
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
   $ hg commit --amend -m "newmessage"
-  2 new unstable changesets
+  2 new orphan changesets
   $ hg log -G
-  @  changeset:   15:f83a0bce03e4
+  @  changeset:   12:f83a0bce03e4
   |  tag:         tip
-  |  parent:      11:7a68bc4596ea
+  |  parent:      8:7a68bc4596ea
   |  user:        test
   |  date:        Thu Jan 01 00:00:00 1970 +0000
   |  summary:     newmessage
   |
-  | o  changeset:   14:fa68011f392e
-  | |  parent:      12:2256dae6521f
+  | o  changeset:   11:fa68011f392e
+  | |  parent:      9:2256dae6521f
   | |  user:        test
   | |  date:        Thu Jan 01 00:00:00 1970 +0000
-  | |  trouble:     unstable
+  | |  instability: orphan
   | |  summary:     secondambiguous
   | |
-  | | o  changeset:   13:bdc003b6eec2
+  | | o  changeset:   10:bdc003b6eec2
   | |/   user:        test
   | |    date:        Thu Jan 01 00:00:00 1970 +0000
-  | |    trouble:     unstable
+  | |    instability: orphan
   | |    summary:     firstambiguous
   | |
-  | x  changeset:   12:2256dae6521f
+  | x  changeset:   9:2256dae6521f
   |/   user:        test
   |    date:        Thu Jan 01 00:00:00 1970 +0000
   |    obsolete:    reworded as f83a0bce03e4
   |    summary:     addc
   |
-  o  changeset:   11:7a68bc4596ea
-  |  parent:      7:005fe5914f78
+  o  changeset:   8:7a68bc4596ea
+  |  parent:      5:005fe5914f78
   |  user:        test
   |  date:        Thu Jan 01 00:00:00 1970 +0000
   |  summary:     addb
   |
-  o  changeset:   7:005fe5914f78
+  o  changeset:   5:005fe5914f78
   |  parent:      0:c471ef929e6a
   |  user:        test
   |  date:        Thu Jan 01 00:00:00 1970 +0000
--- a/tests/test-stabilize-result.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-stabilize-result.t	Tue Oct 10 22:40:41 2017 +0200
@@ -27,33 +27,30 @@
   (leaving bookmark changea)
   $ echo a >> a
   $ hg amend -m changea
-  1 new unstable changesets
+  1 new orphan changesets
   $ hg evolve -v --confirm
   move:[2] changea
-  atop:[4] changea
+  atop:[3] changea
   perform evolve? [Ny] n
   abort: evolve aborted by user
   [255]
   $ echo y | hg evolve -v --confirm --config ui.interactive=True
   move:[2] changea
-  atop:[4] changea
+  atop:[3] changea
   perform evolve? [Ny] y
   hg rebase -r cce2c55b8965 -d fb9d051ec0a4
   resolving manifests
   $ glog --hidden
-  @  4:fb9d051ec0a4@default(draft) bk:[changea] changea
+  @  3:fb9d051ec0a4@default(draft) bk:[changea] changea
   |
-  | x  3:c5727dbded3c@default(draft) bk:[] temporary amend commit for 102a90ea7b4a
+  | x  2:cce2c55b8965@default(draft) bk:[] changea
   | |
-  | | x  2:cce2c55b8965@default(draft) bk:[] changea
-  | |/
   | x  1:102a90ea7b4a@default(draft) bk:[] addb
   |/
   o  0:07f494440405@default(draft) bk:[] adda
   
   $ hg debugobsolete
   102a90ea7b4a3361e4082ed620918c261189a36a fb9d051ec0a450a4aa2ffc8c324979832ef88065 0 (*) {'ef1': '*', 'user': 'test'} (glob)
-  c5727dbded3c3a6877cf60d6bb552a76812cb844 0 {102a90ea7b4a3361e4082ed620918c261189a36a} (*) {'ef1': '*', 'user': 'test'} (glob)
   cce2c55b896511e0b6e04173c9450ba822ebc740 0 {102a90ea7b4a3361e4082ed620918c261189a36a} (*) {'ef1': '*', 'user': 'test'} (glob)
 
 Test evolve with conflict
@@ -73,20 +70,20 @@
   $ hg gdown
   gdown have been deprecated in favor of previous
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  [4] changea
+  [3] changea
   $ echo 'a' > a
   $ hg amend
-  1 new unstable changesets
+  1 new orphan changesets
   $ hg evolve
-  move:[5] newer a
-  atop:[7] changea
+  move:[4] newer a
+  atop:[5] changea
   merging a
   warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
   evolve failed!
   fix conflict and run 'hg evolve --continue' or use 'hg update -C .' to abort
   abort: unresolved merge conflicts (see hg help resolve)
   [255]
-  $ hg revert -r 'unstable()' a
+  $ hg revert -r "orphan()" a
   $ hg diff
   diff -r 66719795a494 a
   --- a/a	* (glob)
@@ -96,13 +93,13 @@
   +a
   +newer a
   $ hg evolve --continue
-  grafting 5:3655f0f50885 "newer a"
+  grafting 4:3655f0f50885 "newer a"
   abort: unresolved merge conflicts (see 'hg help resolve')
   [255]
   $ hg resolve -m a
   (no more unresolved files)
   $ hg evolve --continue
-  grafting 5:3655f0f50885 "newer a"
+  grafting 4:3655f0f50885 "newer a"
 
 Stabilize latecomer with different parent
 =========================================
@@ -110,9 +107,9 @@
 (the same-parent case is handled in test-evolve.t)
 
   $ glog
-  @  8:1cf0aacfd363@default(draft) bk:[] newer a
+  @  6:1cf0aacfd363@default(draft) bk:[] newer a
   |
-  o  7:66719795a494@default(draft) bk:[changea] changea
+  o  5:66719795a494@default(draft) bk:[changea] changea
   |
   o  0:07f494440405@default(draft) bk:[] adda
   
@@ -121,7 +118,7 @@
   $ hg gdown
   gdown have been deprecated in favor of previous
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  [7] changea
+  [5] changea
   $ echo 'c' > c
   $ hg add c
   $ hg commit -m 'add c'
@@ -130,7 +127,7 @@
 Get a successors of 8 on it
 
   $ hg grab 1cf0aacfd363
-  rebasing 8:1cf0aacfd363 "newer a"
+  rebasing 6:1cf0aacfd363 "newer a"
   ? files updated, 0 files merged, 0 files removed, 0 files unresolved (glob)
 
 Add real change to the successors
@@ -141,15 +138,15 @@
 Make precursors public
 
   $ hg phase --hidden --public 1cf0aacfd363
-  1 new bumped changesets
+  1 new phase-divergent changesets
   $ glog
-  @  12:(73b15c7566e9|d5c7ef82d003)@default\(draft\) bk:\[\] newer a (re)
+  @  9:(73b15c7566e9|d5c7ef82d003)@default\(draft\) bk:\[\] newer a (re)
   |
-  o  9:7bc2f5967f5e@default(draft) bk:[] add c
+  o  7:7bc2f5967f5e@default(draft) bk:[] add c
   |
-  | o  8:1cf0aacfd363@default(public) bk:[] newer a
+  | o  6:1cf0aacfd363@default(public) bk:[] newer a
   |/
-  o  7:66719795a494@default(public) bk:[changea] changea
+  o  5:66719795a494@default(public) bk:[changea] changea
   |
   o  0:07f494440405@default(public) bk:[] adda
   
@@ -157,34 +154,34 @@
 Stabilize!
 
   $ hg evolve --any --dry-run --phasedivergent
-  recreate:[12] newer a
-  atop:[8] newer a
-  hg rebase --rev (73b15c7566e9|d5c7ef82d003) --dest 66719795a494; (re)
+  recreate:[9] newer a
+  atop:[6] newer a
+  hg rebase --rev d5c7ef82d003 --dest 66719795a494;
   hg update 1cf0aacfd363;
-  hg revert --all --rev (73b15c7566e9|d5c7ef82d003); (re)
+  hg revert --all --rev d5c7ef82d003;
   hg commit --msg "bumped update to %s" (no-eol)
   $ hg evolve --any --confirm --phasedivergent
-  recreate:[12] newer a
-  atop:[8] newer a
+  recreate:[9] newer a
+  atop:[6] newer a
   perform evolve? [Ny] n
   abort: evolve aborted by user
   [255]
   $ echo y | hg evolve --any --confirm --config ui.interactive=True --phasedivergent
-  recreate:[12] newer a
-  atop:[8] newer a
+  recreate:[9] newer a
+  atop:[6] newer a
   perform evolve? [Ny] y
   rebasing to destination parent: 66719795a494
   computing new diff
   committed as c2c1151aa854
   working directory is now at c2c1151aa854
   $ glog
-  @  14:c2c1151aa854@default(draft) bk:[] bumped update to 1cf0aacfd363:
+  @  11:c2c1151aa854@default(draft) bk:[] bumped update to 1cf0aacfd363:
   |
-  | o  9:7bc2f5967f5e@default(draft) bk:[] add c
+  | o  7:7bc2f5967f5e@default(draft) bk:[] add c
   | |
-  o |  8:1cf0aacfd363@default(public) bk:[] newer a
+  o |  6:1cf0aacfd363@default(public) bk:[] newer a
   |/
-  o  7:66719795a494@default(public) bk:[changea] changea
+  o  5:66719795a494@default(public) bk:[changea] changea
   |
   o  0:07f494440405@default(public) bk:[] adda
   
@@ -205,15 +202,15 @@
   > EOF
   $ hg ci -m 'More addition'
   $ glog
-  @  15:3932c176bbaa@default(draft) bk:[] More addition
+  @  12:3932c176bbaa@default(draft) bk:[] More addition
   |
-  | o  14:(a7cabd7bd9c2|671b9d7eeaec)@default\(draft\) bk:\[\] bumped update to 1cf0aacfd363: (re)
+  | o  11:c2c1151aa854@default(draft) bk:[] bumped update to 1cf0aacfd363:
   | |
-  o |  9:7bc2f5967f5e@default(draft) bk:[] add c
+  o |  7:7bc2f5967f5e@default(draft) bk:[] add c
   | |
-  | o  8:1cf0aacfd363@default(public) bk:[] newer a
+  | o  6:1cf0aacfd363@default(public) bk:[] newer a
   |/
-  o  7:66719795a494@default(public) bk:[changea] changea
+  o  5:66719795a494@default(public) bk:[changea] changea
   |
   o  0:07f494440405@default(public) bk:[] adda
   
@@ -228,19 +225,19 @@
   $ cat a.old >> a
   $ rm a.old
   $ hg amend
-  2 new divergent changesets
+  2 new content-divergent changesets
   $ glog
-  @  19:eacc9c8240fe@default(draft) bk:[] More addition
+  @  14:eacc9c8240fe@default(draft) bk:[] More addition
   |
-  | o  17:d2f173e25686@default(draft) bk:[] More addition
+  | o  13:d2f173e25686@default(draft) bk:[] More addition
   |/
-  | o  14:(a7cabd7bd9c2|671b9d7eeaec)@default\(draft\) bk:\[\] bumped update to 1cf0aacfd363: (re)
+  | o  11:c2c1151aa854@default(draft) bk:[] bumped update to 1cf0aacfd363:
   | |
-  o |  9:7bc2f5967f5e@default(draft) bk:[] add c
+  o |  7:7bc2f5967f5e@default(draft) bk:[] add c
   | |
-  | o  8:1cf0aacfd363@default(public) bk:[] newer a
+  | o  6:1cf0aacfd363@default(public) bk:[] newer a
   |/
-  o  7:66719795a494@default(public) bk:[changea] changea
+  o  5:66719795a494@default(public) bk:[changea] changea
   |
   o  0:07f494440405@default(public) bk:[] adda
   
@@ -248,16 +245,16 @@
 Stabilize it
 
   $ hg evolve -qn --confirm --contentdivergent
-  merge:[19] More addition
-  with: [17] More addition
-  base: [15] More addition
+  merge:[14] More addition
+  with: [13] More addition
+  base: [12] More addition
   perform evolve? [Ny] n
   abort: evolve aborted by user
   [255]
   $ echo y | hg evolve -qn --confirm --config ui.interactive=True --contentdivergent
-  merge:[19] More addition
-  with: [17] More addition
-  base: [15] More addition
+  merge:[14] More addition
+  with: [13] More addition
+  base: [12] More addition
   perform evolve? [Ny] y
   hg update -c eacc9c8240fe &&
   hg merge d2f173e25686 &&
@@ -266,9 +263,9 @@
   hg revert --all --rev tip &&
   hg commit -m "`hg log -r eacc9c8240fe --template={desc}`";
   $ hg evolve -v --contentdivergent
-  merge:[19] More addition
-  with: [17] More addition
-  base: [15] More addition
+  merge:[14] More addition
+  with: [13] More addition
+  base: [12] More addition
   merging divergent changeset
   resolving manifests
   merging a
@@ -278,29 +275,24 @@
   a
   committing manifest
   committing changelog
-  copying changeset 283ccd10e2b8 to 7bc2f5967f5e
-  committing files:
-  a
-  committing manifest
-  committing changelog
-  committed changeset 21:f344982e63c4
+  committed changeset 15:f344982e63c4
   working directory is now at f344982e63c4
   $ hg st
   $ glog
-  @  21:f344982e63c4@default(draft) bk:[] More addition
+  @  15:f344982e63c4@default(draft) bk:[] More addition
   |
-  | o  14:(a7cabd7bd9c2|671b9d7eeaec)@default\(draft\) bk:\[\] bumped update to 1cf0aacfd363: (re)
+  | o  11:c2c1151aa854@default(draft) bk:[] bumped update to 1cf0aacfd363:
   | |
-  o |  9:7bc2f5967f5e@default(draft) bk:[] add c
+  o |  7:7bc2f5967f5e@default(draft) bk:[] add c
   | |
-  | o  8:1cf0aacfd363@default(public) bk:[] newer a
+  | o  6:1cf0aacfd363@default(public) bk:[] newer a
   |/
-  o  7:66719795a494@default(public) bk:[changea] changea
+  o  5:66719795a494@default(public) bk:[changea] changea
   |
   o  0:07f494440405@default(public) bk:[] adda
   
   $ hg summary
-  parent: 21:f344982e63c4 tip
+  parent: 15:f344982e63c4 tip
    More addition
   branch: default
   commit: (clean)
@@ -338,12 +330,12 @@
   (use 'hg evolve' to update to its successor: f344982e63c4)
   $ echo 'gotta break' >> a
   $ hg amend
-  2 new divergent changesets
+  2 new content-divergent changesets
 # reamend so that the case is not the first precursor.
   $ hg amend -m "More addition (2)"
-  $ hg phase 'divergent()'
-  21: draft
-  24: draft
+  $ hg phase 'contentdivergent()'
+  15: draft
+  17: draft
   $ hg evolve -qn --contentdivergent
   hg update -c 0b336205a5d0 &&
   hg merge f344982e63c4 &&
@@ -352,9 +344,9 @@
   hg revert --all --rev tip &&
   hg commit -m "`hg log -r 0b336205a5d0 --template={desc}`";
   $ hg evolve --contentdivergent
-  merge:[24] More addition (2)
-  with: [21] More addition
-  base: [15] More addition
+  merge:[17] More addition (2)
+  with: [15] More addition
+  base: [12] More addition
   merging a
   warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
--- a/tests/test-stack-branch.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-stack-branch.t	Tue Oct 10 22:40:41 2017 +0200
@@ -110,7 +110,7 @@
   $ echo bbb > ddd
   $ hg commit --amend
   $ hg log -G
-  @  7 foo {} draft c_d
+  @  6 foo {} draft c_d
   |
   | o  5 foo {} draft c_f
   | |
@@ -147,7 +147,7 @@
 
   $ hg log -r 'stack()'
   2 foo {} draft c_c
-  7 foo {} draft c_d
+  6 foo {} draft c_d
   4 foo {} draft c_e
   5 foo {} draft c_f
 
@@ -160,11 +160,11 @@
   rebasing 4:4f2a69f6d380 "c_e"
   rebasing 5:913c298d8b0a "c_f"
   $ hg log -G
-  o  9 foo {} draft c_f
+  o  8 foo {} draft c_f
   |
-  o  8 foo {} draft c_e
+  o  7 foo {} draft c_e
   |
-  @  7 foo {} draft c_d
+  @  6 foo {} draft c_d
   |
   o  2 foo {} draft c_c
   |
@@ -185,15 +185,15 @@
   $ hg add hhh
   $ hg commit -m c_h
   $ hg log -G
-  @  11 foo {} draft c_h
+  @  10 foo {} draft c_h
   |
-  o  10 foo {} draft c_g
+  o  9 foo {} draft c_g
   |
-  | o  9 foo {} draft c_f
+  | o  8 foo {} draft c_f
   | |
-  | o  8 foo {} draft c_e
+  | o  7 foo {} draft c_e
   |/
-  o  7 foo {} draft c_d
+  o  6 foo {} draft c_d
   |
   o  2 foo {} draft c_c
   |
@@ -206,11 +206,11 @@
 
   $ hg stack
   ### target: foo (branch) (2 heads)
-  b6: c_f
-  b5: c_e
+  b6@ c_h (current)
+  b5: c_g
   b2^ c_d (base)
-  b4@ c_h (current)
-  b3: c_g
+  b4: c_f
+  b3: c_e
   b2: c_d
   b1: c_c
   b0^ c_b (base)
@@ -225,20 +225,20 @@
   $ echo ccc > ddd
   $ hg commit --amend -m 'c_D' 
   $ hg rebase -d . -s 'desc(c_g)'
-  rebasing 10:2ebb6e48ab8a "c_g"
-  rebasing 11:634f38e27a1d "c_h"
+  rebasing 9:2ebb6e48ab8a "c_g"
+  rebasing 10:634f38e27a1d "c_h"
   $ hg log -G
-  o  15 foo {} draft c_h
+  o  13 foo {} draft c_h
   |
-  o  14 foo {} draft c_g
+  o  12 foo {} draft c_g
   |
-  @  13 foo {} draft c_D
+  @  11 foo {} draft c_D
   |
-  | o  9 foo {} draft c_f
+  | o  8 foo {} draft c_f
   | |
-  | o  8 foo {} draft c_e
+  | o  7 foo {} draft c_e
   | |
-  | x  7 foo {} draft c_d
+  | x  6 foo {} draft c_d
   |/
   o  2 foo {} draft c_c
   |
@@ -249,11 +249,11 @@
 
   $ hg stack
   ### target: foo (branch) (2 heads)
-  b6$ c_f (unstable)
-  b5$ c_e (unstable)
+  b6: c_h
+  b5: c_g
   b2^ c_D (base)
-  b4: c_h
-  b3: c_g
+  b4$ c_f (unstable)
+  b3$ c_e (unstable)
   b2@ c_D (current)
   b1: c_c
   b0^ c_b (base)
@@ -262,17 +262,17 @@
 ----------------------------------------------------------
 
   $ hg log --graph
-  o  15 foo {} draft c_h
+  o  13 foo {} draft c_h
   |
-  o  14 foo {} draft c_g
+  o  12 foo {} draft c_g
   |
-  @  13 foo {} draft c_D
+  @  11 foo {} draft c_D
   |
-  | o  9 foo {} draft c_f
+  | o  8 foo {} draft c_f
   | |
-  | o  8 foo {} draft c_e
+  | o  7 foo {} draft c_e
   | |
-  | x  7 foo {} draft c_d
+  | x  6 foo {} draft c_d
   |/
   o  2 foo {} draft c_c
   |
@@ -283,22 +283,22 @@
 
   $ hg stack
   ### target: foo (branch) (2 heads)
-  b6$ c_f (unstable)
-  b5$ c_e (unstable)
+  b6: c_h
+  b5: c_g
   b2^ c_D (base)
-  b4: c_h
-  b3: c_g
+  b4$ c_f (unstable)
+  b3$ c_e (unstable)
   b2@ c_D (current)
   b1: c_c
   b0^ c_b (base)
   $ hg phase --public b1
   $ hg stack
   ### target: foo (branch) (2 heads)
-  b5$ c_f (unstable)
-  b4$ c_e (unstable)
+  b5: c_h
+  b4: c_g
   b1^ c_D (base)
-  b3: c_h
-  b2: c_g
+  b3$ c_f (unstable)
+  b2$ c_e (unstable)
   b1@ c_D (current)
   b0^ c_c (base)
 
@@ -309,7 +309,7 @@
   changed topic on 2 changes
   $ hg stack
   ### target: foo (branch)
-  b3: c_h
-  b2: c_g
+  b3$ c_f (unstable)
+  b2$ c_e (unstable)
   b1@ c_D (current)
   b0^ c_c (base)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-topic-change.t	Tue Oct 10 22:40:41 2017 +0200
@@ -0,0 +1,405 @@
+Tests for changing and clearing topics
+======================================
+
+  $ . "$TESTDIR/testlib/topic_setup.sh"
+  $ cat <<EOF >> $HGRCPATH
+  > [experimental]
+  > # disable the new graph style until we drop 3.7 support
+  > graphstyle.missing = |
+  > evolution=createmarkers, allowunstable
+  > [phases]
+  > publish=false
+  > [alias]
+  > glog = log -G -T "{rev}:{node|short} \{{topics}}\n{desc}  ({bookmarks})\n\n"
+  > EOF
+
+About the glog output: {} contains the topic name and () will contain the bookmark
+
+Setting up a repo
+----------------
+
+  $ hg init topics
+  $ cd topics
+  $ for ch in a b c d e f g h; do touch $ch; echo "foo" >> $ch; hg ci -Aqm "Added "$ch; done
+
+  $ hg glog
+  @  7:ec2426147f0e {}
+  |  Added h  ()
+  |
+  o  6:87d6d6676308 {}
+  |  Added g  ()
+  |
+  o  5:825660c69f0c {}
+  |  Added f  ()
+  |
+  o  4:aa98ab95a928 {}
+  |  Added e  ()
+  |
+  o  3:62615734edd5 {}
+  |  Added d  ()
+  |
+  o  2:28ad74487de9 {}
+  |  Added c  ()
+  |
+  o  1:29becc82797a {}
+  |  Added b  ()
+  |
+  o  0:18d04c59bb5d {}
+     Added a  ()
+  
+
+Clearing topic from revision without topic
+
+  $ hg topic -r . --clear
+  changed topic on 0 changes
+
+Clearing current topic when no active topic is not error
+
+  $ hg topic
+  $ hg topic --clear
+
+Setting topics to all the revisions
+
+  $ hg topic -r 0:: foo
+  switching to topic foo
+  changed topic on 8 changes
+  $ hg glog
+  @  15:05095f607171 {foo}
+  |  Added h  ()
+  |
+  o  14:97505b53ab0d {foo}
+  |  Added g  ()
+  |
+  o  13:75a8360fe626 {foo}
+  |  Added f  ()
+  |
+  o  12:abcedffeae90 {foo}
+  |  Added e  ()
+  |
+  o  11:1315a3808ed0 {foo}
+  |  Added d  ()
+  |
+  o  10:1fa891977a22 {foo}
+  |  Added c  ()
+  |
+  o  9:a53ba98dd6b8 {foo}
+  |  Added b  ()
+  |
+  o  8:86a186070af2 {foo}
+     Added a  ()
+  
+
+Clearing the active topic using --clear
+
+  $ hg topic
+   * foo
+  $ hg topic --clear
+  $ hg topic
+     foo
+Changing topics on some revisions (also testing issue 5441)
+
+  $ hg topic -r 12:: bar
+  switching to topic bar
+  changed topic on 4 changes
+  $ hg glog
+  @  19:d7d36e193ea7 {bar}
+  |  Added h  ()
+  |
+  o  18:e7b418d79a05 {bar}
+  |  Added g  ()
+  |
+  o  17:82e0b14f4d9e {bar}
+  |  Added f  ()
+  |
+  o  16:edc4a6b9ea60 {bar}
+  |  Added e  ()
+  |
+  o  11:1315a3808ed0 {foo}
+  |  Added d  ()
+  |
+  o  10:1fa891977a22 {foo}
+  |  Added c  ()
+  |
+  o  9:a53ba98dd6b8 {foo}
+  |  Added b  ()
+  |
+  o  8:86a186070af2 {foo}
+     Added a  ()
+  
+
+Changing topics without passing topic name and clear
+
+  $ hg topic -r .
+  abort: changing topic requires a topic name or --clear
+  [255]
+
+Changing topic using --current flag
+
+  $ hg topic foobar
+  $ hg topic -r . --current
+  active topic 'foobar' grew its first changeset
+  changed topic on 1 changes
+  $ hg glog -r .
+  @  20:c2d6b7df5dcf {foobar}
+  |  Added h  ()
+  |
+
+Changing topic in between the stack
+
+  $ hg topic -r 9::10 --current
+  changed topic on 2 changes
+  $ hg glog
+  o  22:1b88140feefe {foobar}
+  |  Added c  ()
+  |
+  o  21:c39cabfcbbf7 {foobar}
+  |  Added b  ()
+  |
+  | @  20:c2d6b7df5dcf {foobar}
+  | |  Added h  ()
+  | |
+  | o  18:e7b418d79a05 {bar}
+  | |  Added g  ()
+  | |
+  | o  17:82e0b14f4d9e {bar}
+  | |  Added f  ()
+  | |
+  | o  16:edc4a6b9ea60 {bar}
+  | |  Added e  ()
+  | |
+  | o  11:1315a3808ed0 {foo}
+  | |  Added d  ()
+  | |
+  | x  10:1fa891977a22 {foo}
+  | |  Added c  ()
+  | |
+  | x  9:a53ba98dd6b8 {foo}
+  |/   Added b  ()
+  |
+  o  8:86a186070af2 {foo}
+     Added a  ()
+  
+  $ hg rebase -s 11 -d 22
+  rebasing 11:1315a3808ed0 "Added d" (foo)
+  switching to topic foo
+  rebasing 16:edc4a6b9ea60 "Added e" (bar)
+  switching to topic bar
+  rebasing 17:82e0b14f4d9e "Added f" (bar)
+  rebasing 18:e7b418d79a05 "Added g" (bar)
+  rebasing 20:c2d6b7df5dcf "Added h" (foobar)
+  switching to topic foobar
+
+  $ hg glog
+  @  27:a1a9465da59b {foobar}
+  |  Added h  ()
+  |
+  o  26:7c76c271395f {bar}
+  |  Added g  ()
+  |
+  o  25:7f26084dfaf1 {bar}
+  |  Added f  ()
+  |
+  o  24:b1f05e9ba0b5 {bar}
+  |  Added e  ()
+  |
+  o  23:f9869da2286e {foo}
+  |  Added d  ()
+  |
+  o  22:1b88140feefe {foobar}
+  |  Added c  ()
+  |
+  o  21:c39cabfcbbf7 {foobar}
+  |  Added b  ()
+  |
+  o  8:86a186070af2 {foo}
+     Added a  ()
+  
+Amending a topic
+----------------
+
+When the changeset has a topic and we have different active topic
+
+  $ hg topic wat
+  $ hg ci --amend
+  active topic 'wat' grew its first changeset
+  $ hg glog -r .
+  @  28:61470c956807 {wat}
+  |  Added h  ()
+  |
+
+Clear the current topic and amending
+
+  $ hg topic --clear
+  $ hg ci --amend
+  $ hg glog -r .
+  @  29:b584fa49f42e {}
+  |  Added h  ()
+  |
+
+When the changeset does not has a topic but we have an active topic
+
+  $ hg topic watwat
+  marked working directory as topic: watwat
+  $ hg ci --amend
+  active topic 'watwat' grew its first changeset
+  $ hg glog -r .
+  @  30:a24c31c35013 {watwat}
+  |  Added h  ()
+  |
+
+Testing changing topics on public changeset
+-------------------------------------------
+
+  $ hg phase -r 8 -p
+
+Clearing the topic
+
+  $ hg topic -r 8 --clear
+  abort: can't change topic of a public change
+  [255]
+
+Changing the topic
+
+  $ hg topic -r 8 foobarboo
+  abort: can't change topic of a public change
+  [255]
+
+Testing the bookmark movement
+-----------------------------
+
+  $ hg bookmark book
+  $ hg glog
+  @  30:a24c31c35013 {watwat}
+  |  Added h  (book)
+  |
+  o  26:7c76c271395f {bar}
+  |  Added g  ()
+  |
+  o  25:7f26084dfaf1 {bar}
+  |  Added f  ()
+  |
+  o  24:b1f05e9ba0b5 {bar}
+  |  Added e  ()
+  |
+  o  23:f9869da2286e {foo}
+  |  Added d  ()
+  |
+  o  22:1b88140feefe {foobar}
+  |  Added c  ()
+  |
+  o  21:c39cabfcbbf7 {foobar}
+  |  Added b  ()
+  |
+  o  8:86a186070af2 {}
+     Added a  ()
+  
+On clearing the topic
+
+  $ hg topic -r . --clear
+  clearing empty topic "watwat"
+  active topic 'watwat' is now empty
+  changed topic on 1 changes
+
+  $ hg glog
+  @  31:c48d6d71b2d9 {}
+  |  Added h  (book)
+  |
+  o  26:7c76c271395f {bar}
+  |  Added g  ()
+  |
+  o  25:7f26084dfaf1 {bar}
+  |  Added f  ()
+  |
+  o  24:b1f05e9ba0b5 {bar}
+  |  Added e  ()
+  |
+  o  23:f9869da2286e {foo}
+  |  Added d  ()
+  |
+  o  22:1b88140feefe {foobar}
+  |  Added c  ()
+  |
+  o  21:c39cabfcbbf7 {foobar}
+  |  Added b  ()
+  |
+  o  8:86a186070af2 {}
+     Added a  ()
+  
+
+On changing the topic
+
+  $ hg bookmark bookboo
+  $ hg topic -r . movebook
+  switching to topic movebook
+  changed topic on 1 changes
+  $ hg glog
+  @  32:1b83d11095b9 {movebook}
+  |  Added h  (book bookboo)
+  |
+  o  26:7c76c271395f {bar}
+  |  Added g  ()
+  |
+  o  25:7f26084dfaf1 {bar}
+  |  Added f  ()
+  |
+  o  24:b1f05e9ba0b5 {bar}
+  |  Added e  ()
+  |
+  o  23:f9869da2286e {foo}
+  |  Added d  ()
+  |
+  o  22:1b88140feefe {foobar}
+  |  Added c  ()
+  |
+  o  21:c39cabfcbbf7 {foobar}
+  |  Added b  ()
+  |
+  o  8:86a186070af2 {}
+     Added a  ()
+  
+Changing topic on secret changesets
+-----------------------------------
+
+  $ hg up 26
+  switching to topic bar
+  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  (leaving bookmark bookboo)
+
+  $ hg phase -r . -s -f
+  $ hg phase -r .
+  26: secret
+
+  $ hg topic -r . watwat
+  switching to topic watwat
+  changed topic on 1 changes
+
+  $ hg glog
+  @  33:894983f69e69 {watwat}
+  |  Added g  ()
+  |
+  | o  32:1b83d11095b9 {movebook}
+  | |  Added h  (book bookboo)
+  | |
+  | x  26:7c76c271395f {bar}
+  |/   Added g  ()
+  |
+  o  25:7f26084dfaf1 {bar}
+  |  Added f  ()
+  |
+  o  24:b1f05e9ba0b5 {bar}
+  |  Added e  ()
+  |
+  o  23:f9869da2286e {foo}
+  |  Added d  ()
+  |
+  o  22:1b88140feefe {foobar}
+  |  Added c  ()
+  |
+  o  21:c39cabfcbbf7 {foobar}
+  |  Added b  ()
+  |
+  o  8:86a186070af2 {}
+     Added a  ()
+  
+  $ hg phase -r .
+  33: secret
--- a/tests/test-topic-dest.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-topic-dest.t	Tue Oct 10 22:40:41 2017 +0200
@@ -109,7 +109,7 @@
   switching to topic elephant
   1 files updated, 0 files merged, 1 files removed, 0 files unresolved
   $ hg rebase
-  rebasing 4:cb7ae72f4a80 "babar"
+  rebasing 4:cb7ae72f4a80 "babar" (elephant)
   switching to topic elephant
   $ hg log -G
   @  7 (elephant) babar
@@ -130,7 +130,7 @@
   switching to topic monkey
   1 files updated, 0 files merged, 3 files removed, 0 files unresolved
   $ hg rebase
-  rebasing 5:d832ddc604ec "zephir"
+  rebasing 5:d832ddc604ec "zephir" (monkey)
   switching to topic monkey
   $ hg log -G
   @  8 (monkey) zephir
@@ -173,7 +173,7 @@
   o  0 () c_alpha
   
   $ hg rebase
-  rebasing 9:d79a104e2902 "Huc" (tip)
+  rebasing 9:d79a104e2902 "Huc" (tip monkey)
   $ hg log -G
   @  10 (monkey) Huc
   |
@@ -225,7 +225,7 @@
   switching to topic elephant
   1 files updated, 0 files merged, 1 files removed, 0 files unresolved
   $ hg rebase -d 'desc(c_zeta)' # make sure tip is elsewhere
-  rebasing 7:8d0b77140b05 "babar"
+  rebasing 7:8d0b77140b05 "babar" (elephant)
   switching to topic elephant
   $ hg up monkey
   switching to topic monkey
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-topic-mode.t	Tue Oct 10 22:40:41 2017 +0200
@@ -0,0 +1,313 @@
+  $ . "$TESTDIR/testlib/topic_setup.sh"
+
+Testing the config knob to forbid untopiced commit
+======================================================
+
+  $ hg init $TESTTMP/untopic-commit
+  $ cd $TESTTMP/untopic-commit
+  $ cat <<EOF >> .hg/hgrc
+  > [phases]
+  > publish=false
+  > EOF
+  $ cat <<EOF >> $HGRCPATH
+  > [experimental]
+  > topic-mode = enforce
+  > EOF
+  $ touch a b c d
+  $ hg add a
+  $ hg ci -m "Added a"
+  abort: no active topic
+  (see 'hg help -e topic.topic-mode' for details)
+  [255]
+
+(same test, checking we abort before the editor)
+
+  $ EDITOR=cat hg ci -m "Added a" --edit
+  abort: no active topic
+  (see 'hg help -e topic.topic-mode' for details)
+  [255]
+  $ hg ci -m "added a" --config experimental.topic-mode=ignore
+  $ hg log
+  changeset:   0:a154386e50d1
+  tag:         tip
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     added a
+  
+
+Testing the config knob to warn about untopiced commit
+==========================================================
+
+  $ hg init $TESTTMP/untopic-warn-commit
+  $ cd $TESTTMP/untopic-warn-commit
+  $ cat <<EOF >> .hg/hgrc
+  > [phases]
+  > publish=false
+  > EOF
+  $ cat <<EOF >> $HGRCPATH
+  > [experimental]
+  > topic-mode = warning
+  > EOF
+  $ touch a b c d
+  $ hg add a
+  $ hg ci -m "Added a"
+  warning: new draft commit without topic
+  (see 'hg help -e topic.topic-mode' for details) (no-eol)
+
+(same test, checking we abort before the editor)
+
+  $ EDITOR=cat hg ci --amend -m "Added a" --edit
+  warning: new draft commit without topic
+  (see 'hg help -e topic.topic-mode' for details) (no-eol)
+  $ hg ci --amend -m "added a'" --config experimental.topic-mode=ignore
+  $ hg log
+  changeset:   2:2e862d8b5eff
+  tag:         tip
+  parent:      -1:000000000000
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     added a'
+  
+
+Testing the config knob to warn about untopiced merge commit
+================================================================
+
+  $ hg init $TESTTMP/test-untopic-merge-commit
+  $ cd $TESTTMP/test-untopic-merge-commit
+  $ cat <<EOF >> .hg/hgrc
+  > [phases]
+  > publish=false
+  > EOF
+  $ cat <<EOF >> $HGRCPATH
+  > [experimental]
+  > topic-mode = enforce
+  > EOF
+  $ touch ROOT
+  $ hg commit -A -m "ROOT" --config experimental.topic-mode=ignore
+  adding ROOT
+  $ touch a
+  $ hg add a
+  $ hg topic mytopic
+  marked working directory as topic: mytopic
+  $ hg ci -m "Added a"
+  active topic 'mytopic' grew its first changeset
+
+  $ hg up -r "desc('ROOT')"
+  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  $ touch default
+  $ hg add default
+  $ hg commit -m "default" --config experimental.topic-mode=ignore
+
+  $ hg merge mytopic
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  (branch merge, don't forget to commit)
+  $ hg commit -m "merge mytopic"
+  warning: new draft commit without topic
+  (see 'hg help -e topic.topic-mode' for details) (no-eol)
+
+  $ hg log -G
+  @    changeset:   3:676a445d1c09
+  |\   tag:         tip
+  | |  parent:      2:a4da109ee59f
+  | |  parent:      1:e5b6c632bd8e
+  | |  user:        test
+  | |  date:        Thu Jan 01 00:00:00 1970 +0000
+  | |  summary:     merge mytopic
+  | |
+  | o  changeset:   2:a4da109ee59f
+  | |  parent:      0:ec1d2790416d
+  | |  user:        test
+  | |  date:        Thu Jan 01 00:00:00 1970 +0000
+  | |  summary:     default
+  | |
+  o |  changeset:   1:e5b6c632bd8e
+  |/   topic:       mytopic
+  |    user:        test
+  |    date:        Thu Jan 01 00:00:00 1970 +0000
+  |    summary:     Added a
+  |
+  o  changeset:   0:ec1d2790416d
+     user:        test
+     date:        Thu Jan 01 00:00:00 1970 +0000
+     summary:     ROOT
+  
+
+Testing the config knob to about on untopiced merge commit
+================================================================
+
+  $ hg init $TESTTMP/test-untopic-merge-commit-abort
+  $ cd $TESTTMP/test-untopic-merge-commit-abort
+  $ cat <<EOF >> .hg/hgrc
+  > [phases]
+  > publish=false
+  > EOF
+  $ cat <<EOF >> $HGRCPATH
+  > [experimental]
+  > topic-mode = enforce-all
+  > EOF
+  $ touch ROOT
+  $ hg commit -A -m "ROOT" --config experimental.topic-mode=ignore
+  adding ROOT
+  $ touch a
+  $ hg add a
+  $ hg topic mytopic
+  marked working directory as topic: mytopic
+  $ hg ci -m "Added a"
+  active topic 'mytopic' grew its first changeset
+
+  $ hg up -r "desc('ROOT')"
+  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  $ touch default
+  $ hg add default
+  $ hg commit -m "default" --config experimental.topic-mode=ignore
+
+  $ hg merge mytopic
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  (branch merge, don't forget to commit)
+  $ hg commit -m "merge mytopic"
+  abort: no active topic
+  (see 'hg help -e topic.topic-mode' for details)
+  [255]
+
+  $ hg log -G
+  @  changeset:   2:a4da109ee59f
+  |  tag:         tip
+  |  parent:      0:ec1d2790416d
+  |  user:        test
+  |  date:        Thu Jan 01 00:00:00 1970 +0000
+  |  summary:     default
+  |
+  | @  changeset:   1:e5b6c632bd8e
+  |/   topic:       mytopic
+  |    user:        test
+  |    date:        Thu Jan 01 00:00:00 1970 +0000
+  |    summary:     Added a
+  |
+  o  changeset:   0:ec1d2790416d
+     user:        test
+     date:        Thu Jan 01 00:00:00 1970 +0000
+     summary:     ROOT
+  
+Testing the config knob to use a random topic for untopic commit
+====================================================================
+
+  $ hg init $TESTTMP/test-untopic-random
+  $ cd $TESTTMP/test-untopic-random
+  $ cat <<EOF >> .hg/hgrc
+  > [phases]
+  > publish=false
+  > EOF
+  $ cat <<EOF >> $HGRCPATH
+  > [experimental]
+  > topic-mode = random
+  > EOF
+
+  $ touch ROOT
+  $ hg commit -A -m "ROOT" --config experimental.topic-mode=ignore
+  adding ROOT
+
+  $ touch A
+  $ hg add A
+  $ hg commit -m "Add A" --config devel.randomseed=42
+  active topic 'panoramic-antelope' grew its first changeset
+
+  $ hg up -r "desc(ROOT)"
+  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+
+  $ touch B
+  $ hg add B
+  $ hg commit -m "Add B" --config devel.randomseed=128
+  active topic 'various-dove' grew its first changeset
+
+Test a merge too
+
+  $ hg phase --public -r .
+  active topic 'various-dove' is now empty
+  $ hg up default
+  clearing empty topic "various-dove"
+  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ hg log -G
+  @  changeset:   2:2d2acb6efad5
+  |  tag:         tip
+  |  parent:      0:ec1d2790416d
+  |  user:        test
+  |  date:        Thu Jan 01 00:00:00 1970 +0000
+  |  summary:     Add B
+  |
+  | o  changeset:   1:d4b548f35972
+  |/   topic:       panoramic-antelope
+  |    user:        test
+  |    date:        Thu Jan 01 00:00:00 1970 +0000
+  |    summary:     Add A
+  |
+  o  changeset:   0:ec1d2790416d
+     user:        test
+     date:        Thu Jan 01 00:00:00 1970 +0000
+     summary:     ROOT
+  
+  $ hg merge panoramic-antelope
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  (branch merge, don't forget to commit)
+  $ hg ci -m 'merge'
+Testing the config knob to use a random topic for untopic commit (even for merge)
+=================================================================================
+
+  $ hg init $TESTTMP/test-untopic-random-all
+  $ cd $TESTTMP/test-untopic-random-all
+  $ cat <<EOF >> .hg/hgrc
+  > [phases]
+  > publish=false
+  > EOF
+  $ cat <<EOF >> $HGRCPATH
+  > [experimental]
+  > topic-mode = random-all
+  > EOF
+
+  $ touch ROOT
+  $ hg commit -A -m "ROOT" --config experimental.topic-mode=ignore
+  adding ROOT
+
+  $ touch A
+  $ hg add A
+  $ hg commit -m "Add A" --config devel.randomseed=42
+  active topic 'panoramic-antelope' grew its first changeset
+
+  $ hg up -r "desc(ROOT)"
+  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+
+  $ touch B
+  $ hg add B
+  $ hg commit -m "Add B" --config devel.randomseed=128
+  active topic 'various-dove' grew its first changeset
+
+Test a merge too
+
+  $ hg phase --public -r .
+  active topic 'various-dove' is now empty
+  $ hg up default
+  clearing empty topic "various-dove"
+  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ hg log -G
+  @  changeset:   2:2d2acb6efad5
+  |  tag:         tip
+  |  parent:      0:ec1d2790416d
+  |  user:        test
+  |  date:        Thu Jan 01 00:00:00 1970 +0000
+  |  summary:     Add B
+  |
+  | o  changeset:   1:d4b548f35972
+  |/   topic:       panoramic-antelope
+  |    user:        test
+  |    date:        Thu Jan 01 00:00:00 1970 +0000
+  |    summary:     Add A
+  |
+  o  changeset:   0:ec1d2790416d
+     user:        test
+     date:        Thu Jan 01 00:00:00 1970 +0000
+     summary:     ROOT
+  
+  $ hg merge panoramic-antelope
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  (branch merge, don't forget to commit)
+  $ hg ci -m 'merge'  --config devel.randomseed=1337
+  active topic 'omniscient-locust' grew its first changeset
--- a/tests/test-topic-push-concurrent-on.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-topic-push-concurrent-on.t	Tue Oct 10 22:40:41 2017 +0200
@@ -93,7 +93,7 @@
   $ hg outgoing -G
   comparing with $TESTTMP/main (glob)
   searching for changes
-  @  4 mountain  draft CC
+  @  3 mountain  draft CC
   
   $ hg push 
   pushing to $TESTTMP/main (glob)
@@ -108,7 +108,7 @@
   adding manifests
   adding file changes
   added 1 changesets with 1 changes to 1 files (+1 heads)
-  2 new obsolescence markers
+  1 new obsolescence markers
 
 Including on non-publishing
 
@@ -119,7 +119,7 @@
   adding manifests
   adding file changes
   added 3 changesets with 3 changes to 3 files (+1 heads)
-  2 new obsolescence markers
+  1 new obsolescence markers
 
 Testing topic behavior
 ======================
@@ -136,9 +136,9 @@
   $ hg commit -m 'CD'
   active topic 'babar' grew its first changeset
   $ hg log -G # keep track of phase because I saw some strange bug during developement
-  @  5 default babar draft CD
+  @  4 default babar draft CD
   |
-  | o  4 mountain  public CC
+  | o  3 mountain  public CC
   |/
   | o  1 default  public CB
   |/
@@ -155,9 +155,9 @@
   adding file changes
   added 1 changesets with 1 changes to 1 files (+1 heads)
   $ hg log -G
-  @  5 default babar draft CD
+  @  4 default babar draft CD
   |
-  | o  4 mountain  public CC
+  | o  3 mountain  public CC
   |/
   | o  1 default  public CB
   |/
@@ -173,9 +173,9 @@
   (merge or see 'hg help push' for details about pushing new heads)
   [255]
   $ hg log -G
-  @  5 default babar draft CD
+  @  4 default babar draft CD
   |
-  | o  4 mountain  public CC
+  | o  3 mountain  public CC
   |/
   | o  1 default  public CB
   |/
@@ -194,11 +194,11 @@
   $ hg commit -m 'CE'
   active topic 'celeste' grew its first changeset
   $ hg log -G # keep track of phase because I saw some strange bug during developement
-  @  6 default celeste draft CE
+  @  5 default celeste draft CE
   |
-  | o  5 default babar draft CD
+  | o  4 default babar draft CD
   |/
-  | o  4 mountain  public CC
+  | o  3 mountain  public CC
   |/
   | o  1 default  public CB
   |/
@@ -218,11 +218,11 @@
   (merge or see 'hg help push' for details about pushing new heads)
   [255]
   $ hg log -G
-  @  6 default celeste draft CE
+  @  5 default celeste draft CE
   |
-  | o  5 default babar draft CD
+  | o  4 default babar draft CD
   |/
-  | o  4 mountain  public CC
+  | o  3 mountain  public CC
   |/
   | o  1 default  public CB
   |/
@@ -241,11 +241,11 @@
   remote: adding file changes
   remote: added 1 changesets with 1 changes to 1 files (+1 heads)
   $ hg log -G
-  @  6 default celeste draft CE
+  @  5 default celeste draft CE
   |
-  | o  5 default babar draft CD
+  | o  4 default babar draft CD
   |/
-  | o  4 mountain  public CC
+  | o  3 mountain  public CC
   |/
   | o  1 default  public CB
   |/
@@ -261,11 +261,11 @@
   (merge or see 'hg help push' for details about pushing new heads)
   [255]
   $ hg log -G
-  @  6 default celeste draft CE
+  @  5 default celeste draft CE
   |
-  | o  5 default babar draft CD
+  | o  4 default babar draft CD
   |/
-  | o  4 mountain  public CC
+  | o  3 mountain  public CC
   |/
   | o  1 default  public CB
   |/
@@ -283,13 +283,13 @@
   $ hg add fff
   $ hg commit -m 'CF'
   $ hg log -G
-  @  7 default babar draft CF
+  @  6 default babar draft CF
   |
-  | o  6 default celeste draft CE
+  | o  5 default celeste draft CE
   | |
-  | | o  5 default babar draft CD
+  | | o  4 default babar draft CD
   | |/
-  | | o  4 mountain  public CC
+  | | o  3 mountain  public CC
   | |/
   o |  1 default  public CB
   |/
@@ -321,17 +321,17 @@
   (branch merge, don't forget to commit)
   $ hg commit -m 'CM'
   $ hg log -G
-  @    9 default babar draft CM
+  @    8 default babar draft CM
   |\
-  | o  8 default  draft CG
+  | o  7 default  draft CG
   | |
-  o |  7 default babar draft CF
+  o |  6 default babar draft CF
   | |
-  | | o  6 default celeste draft CE
+  | | o  5 default celeste draft CE
   | |/
-  | | o  5 default babar draft CD
+  | | o  4 default babar draft CD
   | |/
-  | | o  4 mountain  public CC
+  | | o  3 mountain  public CC
   | |/
   o |  1 default  public CB
   |/
--- a/tests/test-topic-push.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-topic-push.t	Tue Oct 10 22:40:41 2017 +0200
@@ -89,7 +89,7 @@
   $ hg outgoing -G
   comparing with $TESTTMP/main (glob)
   searching for changes
-  @  4 mountain  draft CC
+  @  3 mountain  draft CC
   
   $ hg push 
   pushing to $TESTTMP/main (glob)
@@ -104,7 +104,7 @@
   adding manifests
   adding file changes
   added 1 changesets with 1 changes to 1 files (+1 heads)
-  2 new obsolescence markers
+  1 new obsolescence markers
 
 Including on non-publishing
 
@@ -115,7 +115,7 @@
   adding manifests
   adding file changes
   added 3 changesets with 3 changes to 3 files (+1 heads)
-  2 new obsolescence markers
+  1 new obsolescence markers
 
 Testing topic behavior
 ======================
@@ -132,9 +132,9 @@
   $ hg commit -m 'CD'
   active topic 'babar' grew its first changeset
   $ hg log -G # keep track of phase because I saw some strange bug during developement
-  @  5 default babar draft CD
+  @  4 default babar draft CD
   |
-  | o  4 mountain  public CC
+  | o  3 mountain  public CC
   |/
   | o  1 default  public CB
   |/
@@ -151,9 +151,9 @@
   adding file changes
   added 1 changesets with 1 changes to 1 files (+1 heads)
   $ hg log -G
-  @  5 default babar draft CD
+  @  4 default babar draft CD
   |
-  | o  4 mountain  public CC
+  | o  3 mountain  public CC
   |/
   | o  1 default  public CB
   |/
@@ -178,13 +178,13 @@
   $ echo bbb >> bbb
   $ hg commit -m "C'B"
   $ hg log -G
-  @  7 default  draft C'B
+  @  6 default  draft C'B
   |
-  | o  6 default babar draft C'A
+  | o  5 default babar draft C'A
   | |
-  | o  5 default babar draft CD
+  | o  4 default babar draft CD
   | |
-  | | o  4 mountain  public CC
+  | | o  3 mountain  public CC
   | |/
   o |  1 default  public CB
   |/
@@ -193,7 +193,7 @@
   $ hg outgoing draft --topic babar
   comparing with $TESTTMP/draft
   searching for changes
-  6 default babar draft C'A
+  5 default babar draft C'A
   $ hg push draft --topic babar
   pushing to $TESTTMP/draft
   searching for changes
@@ -212,8 +212,8 @@
   |/
   o  0 default  public CA
   
-  $ hg strip --hidden --config extensions.strip= --no-backup -r 6: --quiet
-  $ hg strip --hidden --config extensions.strip= -R $TESTTMP/draft --no-backup -r 4: --quiet
+  $ hg strip --config extensions.strip= --no-backup -r 5: --quiet
+  $ hg strip --config extensions.strip= -R $TESTTMP/draft --no-backup -r 4: --quiet
 
 Pushing a new topic to a publishing server should be seen as a new head
 
@@ -224,9 +224,9 @@
   (merge or see 'hg help push' for details about pushing new heads)
   [255]
   $ hg log -G
-  @  5 default babar draft CD
+  @  4 default babar draft CD
   |
-  | o  4 mountain  public CC
+  | o  3 mountain  public CC
   |/
   | o  1 default  public CB
   |/
@@ -245,11 +245,11 @@
   $ hg commit -m 'CE'
   active topic 'celeste' grew its first changeset
   $ hg log -G # keep track of phase because I saw some strange bug during developement
-  @  6 default celeste draft CE
+  @  5 default celeste draft CE
   |
-  | o  5 default babar draft CD
+  | o  4 default babar draft CD
   |/
-  | o  4 mountain  public CC
+  | o  3 mountain  public CC
   |/
   | o  1 default  public CB
   |/
@@ -269,11 +269,11 @@
   (merge or see 'hg help push' for details about pushing new heads)
   [255]
   $ hg log -G
-  @  6 default celeste draft CE
+  @  5 default celeste draft CE
   |
-  | o  5 default babar draft CD
+  | o  4 default babar draft CD
   |/
-  | o  4 mountain  public CC
+  | o  3 mountain  public CC
   |/
   | o  1 default  public CB
   |/
@@ -292,11 +292,11 @@
   remote: adding file changes
   remote: added 1 changesets with 1 changes to 1 files (+1 heads)
   $ hg log -G
-  @  6 default celeste draft CE
+  @  5 default celeste draft CE
   |
-  | o  5 default babar draft CD
+  | o  4 default babar draft CD
   |/
-  | o  4 mountain  public CC
+  | o  3 mountain  public CC
   |/
   | o  1 default  public CB
   |/
@@ -312,11 +312,11 @@
   (merge or see 'hg help push' for details about pushing new heads)
   [255]
   $ hg log -G
-  @  6 default celeste draft CE
+  @  5 default celeste draft CE
   |
-  | o  5 default babar draft CD
+  | o  4 default babar draft CD
   |/
-  | o  4 mountain  public CC
+  | o  3 mountain  public CC
   |/
   | o  1 default  public CB
   |/
@@ -334,13 +334,13 @@
   $ hg add fff
   $ hg commit -m 'CF'
   $ hg log -G
-  @  7 default babar draft CF
+  @  6 default babar draft CF
   |
-  | o  6 default celeste draft CE
+  | o  5 default celeste draft CE
   | |
-  | | o  5 default babar draft CD
+  | | o  4 default babar draft CD
   | |/
-  | | o  4 mountain  public CC
+  | | o  3 mountain  public CC
   | |/
   o |  1 default  public CB
   |/
@@ -372,17 +372,17 @@
   (branch merge, don't forget to commit)
   $ hg commit -m 'CM'
   $ hg log -G
-  @    9 default babar draft CM
+  @    8 default babar draft CM
   |\
-  | o  8 default  draft CG
+  | o  7 default  draft CG
   | |
-  o |  7 default babar draft CF
+  o |  6 default babar draft CF
   | |
-  | | o  6 default celeste draft CE
+  | | o  5 default celeste draft CE
   | |/
-  | | o  5 default babar draft CD
+  | | o  4 default babar draft CD
   | |/
-  | | o  4 mountain  public CC
+  | | o  3 mountain  public CC
   | |/
   o |  1 default  public CB
   |/
--- a/tests/test-topic-rebase.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-topic-rebase.t	Tue Oct 10 22:40:41 2017 +0200
@@ -71,7 +71,7 @@
   switching to topic myfeature
   1 files updated, 0 files merged, 1 files removed, 0 files unresolved
   $ hg rebase
-  rebasing 1:39e7a938055e "add feature1"
+  rebasing 1:39e7a938055e "add feature1" (myfeature)
   switching to topic myfeature
   $ hg stack
   ### topic: myfeature
@@ -120,7 +120,7 @@
   switching to topic myotherfeature
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ hg rebase
-  rebasing 5:81f854012ec5 "myotherfeature1"
+  rebasing 5:81f854012ec5 "myotherfeature1" (myotherfeature)
   merging file
   warning: conflicts while merging file! (edit, then use 'hg resolve --mark')
   switching to topic myotherfeature
@@ -134,7 +134,7 @@
   (no more unresolved files)
   continue: hg rebase --continue
   $ hg rebase --continue
-  rebasing 5:81f854012ec5 "myotherfeature1"
+  rebasing 5:81f854012ec5 "myotherfeature1" (myotherfeature)
 
 Check the the commit has the right topic
 
--- a/tests/test-topic-stack-data.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-topic-stack-data.t	Tue Oct 10 22:40:41 2017 +0200
@@ -111,7 +111,7 @@
   commit: (clean)
   update: 2 new changesets (update)
   phases: 22 draft
-  unstable: 3 changesets
+  orphan: 3 changesets
   topic:  foo
   $ hg log --graph -T '{desc} ({branch}) [{topic}]'
   @  add foo_b (lake) []
--- a/tests/test-topic-stack.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-topic-stack.t	Tue Oct 10 22:40:41 2017 +0200
@@ -263,7 +263,7 @@
   $ echo bbb > ddd
   $ hg commit --amend
   $ hg log -G
-  @  7 default {foo} draft c_d
+  @  6 default {foo} draft c_d
   |
   | o  5 default {foo} draft c_f
   | |
@@ -310,7 +310,7 @@
 
   $ hg log -r 'stack()'
   2 default {foo} draft c_c
-  7 default {foo} draft c_d
+  6 default {foo} draft c_d
   4 default {foo} draft c_e
   5 default {foo} draft c_f
 
@@ -328,14 +328,14 @@
 Make things linear again
 
   $ hg rebase -s 'desc(c_e)' -d 'desc(c_d) - obsolete()'
-  rebasing 4:0f9ac936c87d "c_e"
-  rebasing 5:6559e6d93aea "c_f"
+  rebasing 4:0f9ac936c87d "c_e" (foo)
+  rebasing 5:6559e6d93aea "c_f" (foo)
   $ hg log -G
-  o  9 default {foo} draft c_f
+  o  8 default {foo} draft c_f
   |
-  o  8 default {foo} draft c_e
+  o  7 default {foo} draft c_e
   |
-  @  7 default {foo} draft c_d
+  @  6 default {foo} draft c_d
   |
   o  2 default {foo} draft c_c
   |
@@ -356,15 +356,15 @@
   $ hg add hhh
   $ hg commit -m c_h
   $ hg log -G
-  @  11 default {foo} draft c_h
+  @  10 default {foo} draft c_h
   |
-  o  10 default {foo} draft c_g
+  o  9 default {foo} draft c_g
   |
-  | o  9 default {foo} draft c_f
+  | o  8 default {foo} draft c_f
   | |
-  | o  8 default {foo} draft c_e
+  | o  7 default {foo} draft c_e
   |/
-  o  7 default {foo} draft c_d
+  o  6 default {foo} draft c_d
   |
   o  2 default {foo} draft c_c
   |
@@ -378,11 +378,11 @@
   $ hg top -l
   ### topic: foo (2 heads)
   ### target: default (branch)
-  t6: c_f
-  t5: c_e
+  t6@ c_h (current)
+  t5: c_g
   t2^ c_d (base)
-  t4@ c_h (current)
-  t3: c_g
+  t4: c_f
+  t3: c_e
   t2: c_d
   t1: c_c
   t0^ c_b (base)
@@ -397,20 +397,20 @@
   $ echo ccc > ddd
   $ hg commit --amend -m 'c_D' 
   $ hg rebase -d . -s 'desc(c_g)'
-  rebasing 10:81264ae8a36a "c_g"
-  rebasing 11:fde5f5941642 "c_h"
+  rebasing 9:81264ae8a36a "c_g" (foo)
+  rebasing 10:fde5f5941642 "c_h" (foo)
   $ hg log -G
-  o  15 default {foo} draft c_h
+  o  13 default {foo} draft c_h
   |
-  o  14 default {foo} draft c_g
+  o  12 default {foo} draft c_g
   |
-  @  13 default {foo} draft c_D
+  @  11 default {foo} draft c_D
   |
-  | o  9 default {foo} draft c_f
+  | o  8 default {foo} draft c_f
   | |
-  | o  8 default {foo} draft c_e
+  | o  7 default {foo} draft c_e
   | |
-  | x  7 default {foo} draft c_d
+  | x  6 default {foo} draft c_d
   |/
   o  2 default {foo} draft c_c
   |
@@ -422,11 +422,11 @@
   $ hg topic --list
   ### topic: foo (2 heads)
   ### target: default (branch)
-  t6$ c_f (unstable)
-  t5$ c_e (unstable)
+  t6: c_h
+  t5: c_g
   t2^ c_D (base)
-  t4: c_h
-  t3: c_g
+  t4$ c_f (unstable)
+  t3$ c_e (unstable)
   t2@ c_D (current)
   t1: c_c
   t0^ c_b (base)
@@ -443,17 +443,17 @@
 ==============================================================================
 
   $ hg log --graph
-  o  15 default {foo} draft c_h
+  o  13 default {foo} draft c_h
   |
-  o  14 default {foo} draft c_g
+  o  12 default {foo} draft c_g
   |
-  @  13 default {foo} draft c_D
+  @  11 default {foo} draft c_D
   |
-  | o  9 default {foo} draft c_f
+  | o  8 default {foo} draft c_f
   | |
-  | o  8 default {foo} draft c_e
+  | o  7 default {foo} draft c_e
   | |
-  | x  7 default {foo} draft c_d
+  | x  6 default {foo} draft c_d
   |/
   o  2 default {foo} draft c_c
   |
@@ -463,19 +463,19 @@
   
 Converting into a linear chain
   $ hg rebase -s 'desc("c_e") - obsolete()' -d 'desc("c_h") - obsolete()'
-  rebasing 8:215bc359096a "c_e"
-  rebasing 9:ec9267b3f33f "c_f"
+  rebasing 7:215bc359096a "c_e" (foo)
+  rebasing 8:ec9267b3f33f "c_f" (foo)
 
   $ hg log -G
-  o  17 default {foo} draft c_f
+  o  15 default {foo} draft c_f
   |
-  o  16 default {foo} draft c_e
+  o  14 default {foo} draft c_e
   |
-  o  15 default {foo} draft c_h
+  o  13 default {foo} draft c_h
   |
-  o  14 default {foo} draft c_g
+  o  12 default {foo} draft c_g
   |
-  @  13 default {foo} draft c_D
+  @  11 default {foo} draft c_D
   |
   o  2 default {foo} draft c_c
   |
@@ -488,19 +488,19 @@
   switching to topic foobar
   changed topic on 2 changes
   $ hg log -G
-  @  19 default {foobar} draft c_D
+  @  17 default {foobar} draft c_D
   |
-  | o  18 default {foobar} draft c_e
+  | o  16 default {foobar} draft c_e
   | |
-  | | o  17 default {foo} draft c_f
+  | | o  15 default {foo} draft c_f
   | | |
-  | | x  16 default {foo} draft c_e
+  | | x  14 default {foo} draft c_e
   | |/
-  | o  15 default {foo} draft c_h
+  | o  13 default {foo} draft c_h
   | |
-  | o  14 default {foo} draft c_g
+  | o  12 default {foo} draft c_g
   | |
-  | x  13 default {foo} draft c_D
+  | x  11 default {foo} draft c_D
   |/
   o  2 default {foo} draft c_c
   |
@@ -509,30 +509,30 @@
   o  0 default {} public c_a
   
   $ hg rebase -s 'desc("c_f") - obsolete()' -d 'desc("c_e") - obsolete()'
-  rebasing 17:77082e55de88 "c_f"
+  rebasing 15:77082e55de88 "c_f" (foo)
   switching to topic foo
   switching to topic foobar
   $ hg rebase -s 'desc("c_g") - obsolete()' -d 'desc("c_D") - obsolete()'
-  rebasing 14:0c3e8aed985d "c_g"
+  rebasing 12:0c3e8aed985d "c_g" (foo)
   switching to topic foo
-  rebasing 15:b9e4f3709bc5 "c_h"
-  rebasing 18:4bc813530301 "c_e"
+  rebasing 13:b9e4f3709bc5 "c_h" (foo)
+  rebasing 16:4bc813530301 "c_e" (foobar)
   switching to topic foobar
-  rebasing 20:4406ea4be852 "c_f" (tip)
+  rebasing 18:4406ea4be852 "c_f" (tip foo)
   switching to topic foo
   switching to topic foobar
   $ hg up
   3 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ hg log --graph
-  o  24 default {foo} draft c_f
+  o  22 default {foo} draft c_f
   |
-  @  23 default {foobar} draft c_e
+  @  21 default {foobar} draft c_e
   |
-  o  22 default {foo} draft c_h
+  o  20 default {foo} draft c_h
   |
-  o  21 default {foo} draft c_g
+  o  19 default {foo} draft c_g
   |
-  o  19 default {foobar} draft c_D
+  o  17 default {foobar} draft c_D
   |
   o  2 default {foo} draft c_c
   |
@@ -798,12 +798,12 @@
 get things linear again
 
   $ hg rebase -r t1 -d default
-  rebasing 16:1d84ec948370 "c_D" (tip)
+  rebasing 16:1d84ec948370 "c_D" (tip blue)
   switching to topic blue
   $ hg rebase -r t2 -d t1
-  rebasing 13:3ab2eedae500 "c_G"
+  rebasing 13:3ab2eedae500 "c_G" (blue)
   $ hg rebase -r t3 -d t2
-  rebasing 8:3bfe800e0486 "c_I"
+  rebasing 8:3bfe800e0486 "c_I" (blue)
   $ hg stack
   ### topic: blue
   ### target: default (branch)
@@ -856,11 +856,11 @@
   Done splitting? [yN] y
 
   $ hg --config extensions.evolve= obslog --all
-  o  dde94df880e9 (22) c_G
+  o  dde94df880e9 (21) c_G
   |
-  | @  e7ea874afbd5 (23) c_G
+  | @  e7ea874afbd5 (22) c_G
   |/
-  x  b24bab30ac12 (21) c_G
+  x  b24bab30ac12 (20) c_G
   |    rewritten(parent, content) as dde94df880e9, e7ea874afbd5 by test (Thu Jan 01 00:00:00 1970 +0000)
   |
   x  907f7d3c2333 (18) c_G
--- a/tests/test-topic-tutorial.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-topic-tutorial.t	Tue Oct 10 22:40:41 2017 +0200
@@ -483,10 +483,10 @@
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
 
   $ hg rebase
-  rebasing 1:13900241408b "adding condiments"
+  rebasing 1:13900241408b "adding condiments" (food)
   merging shopping
   switching to topic food
-  rebasing 2:287de11b401f "adding fruits"
+  rebasing 2:287de11b401f "adding fruits" (food)
   merging shopping
 
   $ hg log --graph
@@ -703,7 +703,7 @@
 
   $ cat << EOF >> .hg/hgrc
   > [experimental]
-  > enforce-topic = yes
+  > topic-mode = enforce
   > EOF
 
 You can also use `hg config --edit` to update your mercurial configuration.
@@ -714,7 +714,7 @@
   $ echo sickle >> shopping
   $ hg commit -m 'Adding sickle'
   abort: no active topic
-  (set a current topic or use '--config experimental.enforce-topic=no' to commit without a topic)
+  (see 'hg help -e topic.topic-mode' for details)
   [255]
 
 Ok, let's clean this up and delve into multiple topics.
@@ -1034,12 +1034,12 @@
 #endif
 
   $ hg rebase
-  rebasing 6:183984ef46d1 "Adding hammer"
+  rebasing 6:183984ef46d1 "Adding hammer" (tools)
   merging shopping
   switching to topic tools
-  rebasing 7:cffff85af537 "Adding saw"
+  rebasing 7:cffff85af537 "Adding saw" (tools)
   merging shopping
-  rebasing 8:34255b455dac "Adding drill"
+  rebasing 8:34255b455dac "Adding drill" (tools)
   merging shopping
 
 But what about the other topic? You can use 'hg topics --verbose' to see
@@ -1066,10 +1066,10 @@
 multiple *public* heads it would create on that branch:
 
   $ hg rebase -b drinks
-  rebasing 9:8dfa45bd5e0c "Adding apple juice"
+  rebasing 9:8dfa45bd5e0c "Adding apple juice" (drinks)
   merging shopping
   switching to topic drinks
-  rebasing 10:70dfa201ed73 "Adding orange juice"
+  rebasing 10:70dfa201ed73 "Adding orange juice" (drinks)
   merging shopping
   switching to topic tools
 
@@ -1182,7 +1182,7 @@
   t0^ add a pair of shoes (base)
 
   $ hg amend -m "Adding hammer to the shopping list"
-  2 new unstable changesets
+  2 new orphan changesets
 
 Understanding the current situation with hg log is not so easy, because
 it shows too many things:
@@ -1211,14 +1211,14 @@
   | |  topic:       tools
   | |  user:        test
   | |  date:        Thu Jan 01 00:00:00 1970 +0000
-  | |  trouble:     unstable
+  | |  instability: orphan
   | |  summary:     Adding drill
   | |
   | o  changeset:   14:d4f97f32f8a1
   | |  topic:       tools
   | |  user:        test
   | |  date:        Thu Jan 01 00:00:00 1970 +0000
-  | |  trouble:     unstable
+  | |  instability: orphan
   | |  summary:     Adding saw
   | |
   | x  changeset:   13:a8ab3599d53d
@@ -1754,9 +1754,9 @@
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
 
   $ hg rebase
-  rebasing 19:d5c51ee5762a "Adding saw"
+  rebasing 19:d5c51ee5762a "Adding saw" (tools)
   merging shopping
-  rebasing 20:bae3758e46bf "Adding drill"
+  rebasing 20:bae3758e46bf "Adding drill" (tools)
   merging shopping
 
   $ hg stack
--- a/tests/test-topic.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-topic.t	Tue Oct 10 22:40:41 2017 +0200
@@ -1,6 +1,6 @@
   $ . "$TESTDIR/testlib/topic_setup.sh"
 
-  $ hg init pinky --traceback
+  $ hg init pinky
   $ cd pinky
   $ cat <<EOF >> .hg/hgrc
   > [phases]
@@ -502,10 +502,6 @@
   $ hg topics
      fran
 
---clear when we don't have an active topic isn't an error:
-
-  $ hg topics --clear
-
 Topic revset
   $ hg log -r 'topic()' -G
   o  changeset:   9:0469d521db49
@@ -628,284 +624,36 @@
   |  date:        Thu Jan 01 00:00:00 1970 +0000
   |  summary:     start on fran
   |
+
   $ hg topics
      fran
-Changing topic fails if we don't give a topic
-  $ hg topic --rev 9
-  abort: changing topic requires a topic name or --clear
-  [255]
-
-Can't change topic of a public change
-  $ hg topic --rev 1:: --clear
-  abort: can't change topic of a public change
-  [255]
-
-Can clear topics
-  $ hg topic --rev 9 --clear
-  changed topic on 1 changes
-  $ hg log -Gr 'draft() and not obsolete()'
-  o  changeset:   11:0beca5ab56c3
-  |  tag:         tip
-  |  parent:      3:a53952faf762
-  |  user:        test
-  |  date:        Thu Jan 01 00:00:00 1970 +0000
-  |  summary:     start on fran
-  |
-  | @  changeset:   10:4073470c35e1
-  | |  user:        test
-  | |  date:        Thu Jan 01 00:00:00 1970 +0000
-  | |  trouble:     unstable
-  | |  summary:     fran?
-  | |
-
-Normally you'd do this with evolve, but we'll use rebase to avoid
-bonus deps in the testsuite.
-
-  $ hg rebase -d tip -s .
-  rebasing 10:4073470c35e1 "fran?"
-
-Can add a topic to an existing change
-  $ hg topic
-  $ hg sum
-  parent: 12:18b70b8de1f0 tip
-   fran?
-  branch: default
-  commit: (clean)
-  update: 5 new changesets, 2 branch heads (merge)
-  phases: 2 draft
-  $ hg topic --rev 11 wat
-  changed topic on 1 changes
-  $ hg log -r .
-  changeset:   12:18b70b8de1f0
-  user:        test
-  date:        Thu Jan 01 00:00:00 1970 +0000
-  trouble:     unstable
-  summary:     fran?
-  
-  $ hg sum
-  parent: 12:18b70b8de1f0  (unstable)
-   fran?
-  branch: default
-  commit: (clean)
-  update: 5 new changesets, 2 branch heads (merge)
-  phases: 3 draft
-  unstable: 1 changesets
-  $ hg topic
-     wat
-  $ hg log -Gr 'draft() and not obsolete()'
-  o  changeset:   13:686a642006db
-  |  tag:         tip
-  |  topic:       wat
-  |  parent:      3:a53952faf762
-  |  user:        test
-  |  date:        Thu Jan 01 00:00:00 1970 +0000
-  |  summary:     start on fran
-  |
-  | @  changeset:   12:18b70b8de1f0
-  | |  user:        test
-  | |  date:        Thu Jan 01 00:00:00 1970 +0000
-  | |  trouble:     unstable
-  | |  summary:     fran?
-  | |
-
-Normally you'd do this with evolve, but we'll use rebase to avoid
-bonus deps in the testsuite.
-
-  $ hg topic
-     wat
-  $ hg rebase -d tip -s .
-  rebasing 12:18b70b8de1f0 "fran?"
-  switching to topic wat
-  $ hg topic
-     wat
-
-  $ hg log -Gr 'draft()'
-  @  changeset:   14:45358f7a5892
-  |  tag:         tip
-  |  user:        test
-  |  date:        Thu Jan 01 00:00:00 1970 +0000
-  |  summary:     fran?
-  |
-  o  changeset:   13:686a642006db
-  |  topic:       wat
-  |  parent:      3:a53952faf762
-  |  user:        test
-  |  date:        Thu Jan 01 00:00:00 1970 +0000
-  |  summary:     start on fran
-  |
-
-Amend a topic
-
-  $ hg topic watwat
-  marked working directory as topic: watwat
-  $ hg ci --amend
-  active topic 'watwat' grew its first changeset
-  $ hg log -Gr 'draft()'
-  @  changeset:   16:6c40a4c21bbe
-  |  tag:         tip
-  |  topic:       watwat
-  |  parent:      13:686a642006db
-  |  user:        test
-  |  date:        Thu Jan 01 00:00:00 1970 +0000
-  |  summary:     fran?
-  |
-  o  changeset:   13:686a642006db
-  |  topic:       wat
-  |  parent:      3:a53952faf762
-  |  user:        test
-  |  date:        Thu Jan 01 00:00:00 1970 +0000
-  |  summary:     start on fran
-  |
-
-Clear and amend:
-
-  $ hg topic --clear
-  $ hg ci --amend
-  $ hg log -r .
-  changeset:   18:0f9cd5070654
-  tag:         tip
-  parent:      13:686a642006db
-  user:        test
-  date:        Thu Jan 01 00:00:00 1970 +0000
-  summary:     fran?
-  
-Reading the same topic with topic --rev should work:
-  $ hg topic --rev . watwat
-  switching to topic watwat
-  changed topic on 1 changes
-
-Testing issue5441
-  $ hg co 19
-  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  $ hg log -Gr 'draft()'
-  @  changeset:   19:980a0f608481
-  |  tag:         tip
-  |  topic:       watwat
-  |  parent:      13:686a642006db
-  |  user:        test
-  |  date:        Thu Jan 01 00:00:00 1970 +0000
-  |  summary:     fran?
-  |
-  o  changeset:   13:686a642006db
-  |  topic:       wat
-  |  parent:      3:a53952faf762
-  |  user:        test
-  |  date:        Thu Jan 01 00:00:00 1970 +0000
-  |  summary:     start on fran
-  |
-
-Using the current flag
-
-  $ hg topic changewat
-  $ hg topics --rev '13::19' --current
-  active topic 'changewat' grew its 2 first changesets
-  changed topic on 2 changes
-
-  $ hg log -Gr 'draft()'
-  @  changeset:   21:56c83be6105f
-  |  tag:         tip
-  |  topic:       changewat
-  |  user:        test
-  |  date:        Thu Jan 01 00:00:00 1970 +0000
-  |  summary:     fran?
-  |
-  o  changeset:   20:ceba5be9d56f
-  |  topic:       changewat
-  |  parent:      3:a53952faf762
-  |  user:        test
-  |  date:        Thu Jan 01 00:00:00 1970 +0000
-  |  summary:     start on fran
-  |
-
-Case with branching:
-
-  $ hg up changewat
-  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  $ hg up t1
-  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  $ echo gamma >> gamma
-  $ hg ci -m gamma
-
-  $ hg log -Gr 'draft()'
-  @  changeset:   22:0d3d805542b4
-  |  tag:         tip
-  |  topic:       changewat
-  |  parent:      20:ceba5be9d56f
-  |  user:        test
-  |  date:        Thu Jan 01 00:00:00 1970 +0000
-  |  summary:     gamma
-  |
-  | o  changeset:   21:56c83be6105f
-  |/   topic:       changewat
-  |    user:        test
-  |    date:        Thu Jan 01 00:00:00 1970 +0000
-  |    summary:     fran?
-  |
-  o  changeset:   20:ceba5be9d56f
-  |  topic:       changewat
-  |  parent:      3:a53952faf762
-  |  user:        test
-  |  date:        Thu Jan 01 00:00:00 1970 +0000
-  |  summary:     start on fran
-  |
-
-  $ hg topics --rev 't1::' changewut
-  switching to topic changewut
-  active topic 'changewat' is now empty
-  changed topic on 3 changes
-
-  $ hg log -Gr 'draft()'
-  @  changeset:   25:729ed5717393
-  |  tag:         tip
-  |  topic:       changewut
-  |  parent:      23:62e49f09f883
-  |  user:        test
-  |  date:        Thu Jan 01 00:00:00 1970 +0000
-  |  summary:     gamma
-  |
-  | o  changeset:   24:369c6e2e5474
-  |/   topic:       changewut
-  |    user:        test
-  |    date:        Thu Jan 01 00:00:00 1970 +0000
-  |    summary:     fran?
-  |
-  o  changeset:   23:62e49f09f883
-  |  topic:       changewut
-  |  parent:      3:a53952faf762
-  |  user:        test
-  |  date:        Thu Jan 01 00:00:00 1970 +0000
-  |  summary:     start on fran
-  |
 
 Testing for updating to t0
 ==========================
 
+  $ hg up fran
+  switching to topic fran
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ hg stack
-  ### topic: changewut (2 heads)
-  ### target: default (branch), 5 behind
-  t3: fran?
-  t1^ start on fran (base)
-  t2@ gamma (current)
-  t1: start on fran
+  ### topic: fran
+  ### target: default (branch), ambigious rebase destination - branch 'default' has 2 heads
+  t1@ start on fran (current)
   t0^ Add file delta (base)
 
   $ hg up t0
-  preserving the current topic 'changewut'
-  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  preserving the current topic 'fran'
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
 
   $ hg topic
-   * changewut
+   * fran
   $ hg stack
-  ### topic: changewut (2 heads)
-  ### target: default (branch), 5 behind
-  t3: fran?
-  t1^ start on fran (base)
-  t2: gamma
+  ### topic: fran
+  ### target: default (branch), ambigious rebase destination - branch 'default' has 2 heads
   t1: start on fran
   t0^ Add file delta (base)
 
   $ hg topics --age
-   * changewut (1970-01-01 by test)
+   * fran (1970-01-01 by test)
 
   $ cd ..
 
@@ -920,22 +668,22 @@
   > EOF
   $ cat <<EOF >> $HGRCPATH
   > [experimental]
-  > enforce-topic = yes
+  > topic-mode = enforce
   > EOF
   $ touch a b c d
   $ hg add a
   $ hg ci -m "Added a"
   abort: no active topic
-  (set a current topic or use '--config experimental.enforce-topic=no' to commit without a topic)
+  (see 'hg help -e topic.topic-mode' for details)
   [255]
 
 (same test, checking we abort before the editor)
 
   $ EDITOR=cat hg ci -m "Added a" --edit
   abort: no active topic
-  (set a current topic or use '--config experimental.enforce-topic=no' to commit without a topic)
+  (see 'hg help -e topic.topic-mode' for details)
   [255]
-  $ hg ci -m "added a" --config experimental.enforce-topic=no
+  $ hg ci -m "added a" --config experimental.topic-mode=off
   $ hg log
   changeset:   0:a154386e50d1
   tag:         tip
@@ -943,6 +691,7 @@
   date:        Thu Jan 01 00:00:00 1970 +0000
   summary:     added a
   
+
 Testing the --age flag for `hg topics`
 ======================================
 
--- a/tests/test-touch.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-touch.t	Tue Oct 10 22:40:41 2017 +0200
@@ -36,7 +36,7 @@
   working directory parent is obsolete! (*) (glob)
   (use 'hg evolve' to update to its successor: *) (glob)
   $ hg log -G
-  o  3:[0-9a-f]{12} ab (re)
+  o  2:[0-9a-f]{12} ab (re)
   
   @  1:[0-9a-f]{12} a (re)
   
@@ -44,13 +44,13 @@
   [1] a
   reviving this changeset will create divergence unless you make a duplicate.
   (a)llow divergence or (d)uplicate the changeset?  a
-  2 new divergent changesets
+  2 new content-divergent changesets
   $ hg log -G
-  @  4:[0-9a-f]{12} a (re)
+  @  3:[0-9a-f]{12} a (re)
   
-  o  3:[0-9a-f]{12} ab (re)
+  o  2:[0-9a-f]{12} ab (re)
   
-  $ hg prune 4
+  $ hg prune 3
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
   working directory now at 000000000000
   1 changesets pruned
@@ -59,9 +59,9 @@
 
   $ hg touch --duplicate .
   $ hg log -G
-  @  5:[0-9a-f]{12} (re)
+  @  4:[0-9a-f]{12} (re)
   
-  o  3:[0-9a-f]{12} ab (re)
+  o  2:[0-9a-f]{12} ab (re)
   
 
 Multiple touch
@@ -73,23 +73,23 @@
   $ hg add d
   $ hg commit -m d
   $ hg log -G
-  @  7:[0-9a-f]{12} d (re)
+  @  6:[0-9a-f]{12} d (re)
   |
-  o  6:[0-9a-f]{12} c (re)
+  o  5:[0-9a-f]{12} c (re)
   |
-  o  5:[0-9a-f]{12} (re)
+  o  4:[0-9a-f]{12} (re)
   
-  o  3:[0-9a-f]{12} ab (re)
+  o  2:[0-9a-f]{12} ab (re)
   
   $ hg touch .^:.
   $ hg log -G
-  @  9:[0-9a-f]{12} d (re)
+  @  8:[0-9a-f]{12} d (re)
   |
-  o  8:[0-9a-f]{12} c (re)
+  o  7:[0-9a-f]{12} c (re)
   |
-  o  5:[0-9a-f]{12} (re)
+  o  4:[0-9a-f]{12} (re)
   
-  o  3:[0-9a-f]{12} ab (re)
+  o  2:[0-9a-f]{12} ab (re)
   
 
 check move data kept after rebase on touch:
@@ -107,38 +107,36 @@
   1 files updated, 0 files merged, 1 files removed, 0 files unresolved
 
   $ hg touch
-  1 new unstable changesets
+  1 new orphan changesets
 
   $ hg log -G --hidden
-  | o  10:[0-9a-f]{12} move (re)
+  @  11:[0-9a-f]{12} gna1 (re)
   |
-  | x  9:[0-9a-f]{12} gna1 (re)
+  | o  10:[0-9a-f]{12} move (re)
   | |
-  | x  6:[0-9a-f]{12} d (re)
+  | x  9:[0-9a-f]{12} gna1 (re)
   |/
-  | x  5:[0-9a-f]{12} c (re)
+  o  8:[0-9a-f]{12} d (re)
   |
-  o  8:[0-9a-f]{12} c (re)
+  o  7:[0-9a-f]{12} c (re)
   |
-  | x  7:[0-9a-f]{12} d (re)
+  | x  6:[0-9a-f]{12} d (re)
   | |
-  | x  6:[0-9a-f]{12} c (re)
+  | x  5:[0-9a-f]{12} c (re)
   |/
-  o  5:[0-9a-f]{12} (re)
+  o  4:[0-9a-f]{12} (re)
   
-  x  4:[0-9a-f]{12} a (re)
+  x  3:[0-9a-f]{12} a (re)
   
-  o  3:[0-9a-f]{12} ab (re)
+  o  2:[0-9a-f]{12} ab (re)
   
-  x  2:[0-9a-f]{12} temporary amend commit for [0-9a-f]{12} (re)
-  |
   x  1:[0-9a-f]{12} a (re)
   
   x  0:[0-9a-f]{12} a (re)
   
 
-  $ hg rebase -s 11 -d 12
-  rebasing 11:[0-9a-f]{12} "move" (re)
+  $ hg rebase -s 10 -d 11
+  rebasing 10:[0-9a-f]{12} "move" (re)
   $ hg st -C --change=tip
   A gna2
     gna1
@@ -146,12 +144,12 @@
 
 check that the --duplicate option does not create divergence
 
-  $ hg touch --duplicate 11 --hidden
-  1 new unstable changesets
+  $ hg touch --duplicate 10 --hidden
+  1 new orphan changesets
 
 check that reviving a changeset with no successor does not show the prompt
 
-  $ hg prune 14
+  $ hg prune 13
   1 changesets pruned
-  $ hg touch 14 --hidden
-  1 new unstable changesets
+  $ hg touch 13 --hidden
+  1 new orphan changesets
--- a/tests/test-tutorial.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-tutorial.t	Tue Oct 10 22:40:41 2017 +0200
@@ -311,17 +311,17 @@
       		width=0.5];
       	0 -> 1	 [arrowhead=none,
       		penwidth=2.0];
-      	4	 [fillcolor="#9999FF",
+      	3	 [fillcolor="#9999FF",
       		fixedsize=true,
       		group=default,
       		height=0.5,
-      		label=4,
+      		label=3,
       		pin=true,
-      		pos="1,4!",
+      		pos="1,3!",
       		shape=pentagon,
       		style=filled,
       		width=0.5];
-      	1 -> 4	 [arrowhead=none,
+      	1 -> 3	 [arrowhead=none,
       		penwidth=2.0];
       }
 #endif
@@ -411,18 +411,6 @@
       		width=0.5];
       	0 -> 1	 [arrowhead=none,
       		penwidth=2.0];
-      	5	 [fillcolor="#9999FF",
-      		fixedsize=true,
-      		group=default,
-      		height=0.5,
-      		label=5,
-      		pin=true,
-      		pos="1,5!",
-      		shape=circle,
-      		style=filled,
-      		width=0.5];
-      	0 -> 5	 [arrowhead=none,
-      		penwidth=2.0];
       	4	 [fillcolor="#9999FF",
       		fixedsize=true,
       		group=default,
@@ -430,10 +418,22 @@
       		label=4,
       		pin=true,
       		pos="1,4!",
+      		shape=circle,
+      		style=filled,
+      		width=0.5];
+      	0 -> 4	 [arrowhead=none,
+      		penwidth=2.0];
+      	3	 [fillcolor="#9999FF",
+      		fixedsize=true,
+      		group=default,
+      		height=0.5,
+      		label=3,
+      		pin=true,
+      		pos="1,3!",
       		shape=pentagon,
       		style=filled,
       		width=0.5];
-      	1 -> 4	 [arrowhead=none,
+      	1 -> 3	 [arrowhead=none,
       		penwidth=2.0];
       }
 #endif
@@ -444,7 +444,7 @@
   $ hg rebase --dest 9ca060c80d74 --source 4d5dc8187023
   rebasing 1:4d5dc8187023 "adding condiment"
   merging shopping
-  rebasing 4:9d0363b81950 "adding fruit"
+  rebasing 3:9d0363b81950 "adding fruit"
   merging shopping
 
 
@@ -478,6 +478,18 @@
       		shape=circle,
       		style=filled,
       		width=0.5];
+      	4	 [fillcolor="#9999FF",
+      		fixedsize=true,
+      		group=default,
+      		height=0.5,
+      		label=4,
+      		pin=true,
+      		pos="1,4!",
+      		shape=circle,
+      		style=filled,
+      		width=0.5];
+      	0 -> 4	 [arrowhead=none,
+      		penwidth=2.0];
       	5	 [fillcolor="#9999FF",
       		fixedsize=true,
       		group=default,
@@ -485,10 +497,10 @@
       		label=5,
       		pin=true,
       		pos="1,5!",
-      		shape=circle,
+      		shape=pentagon,
       		style=filled,
       		width=0.5];
-      	0 -> 5	 [arrowhead=none,
+      	4 -> 5	 [arrowhead=none,
       		penwidth=2.0];
       	6	 [fillcolor="#9999FF",
       		fixedsize=true,
@@ -502,18 +514,6 @@
       		width=0.5];
       	5 -> 6	 [arrowhead=none,
       		penwidth=2.0];
-      	7	 [fillcolor="#9999FF",
-      		fixedsize=true,
-      		group=default,
-      		height=0.5,
-      		label=7,
-      		pin=true,
-      		pos="1,7!",
-      		shape=pentagon,
-      		style=filled,
-      		width=0.5];
-      	6 -> 7	 [arrowhead=none,
-      		penwidth=2.0];
       }
 #endif
 
@@ -580,6 +580,18 @@
       		shape=circle,
       		style=filled,
       		width=0.5];
+      	4	 [fillcolor="#9999FF",
+      		fixedsize=true,
+      		group=default,
+      		height=0.5,
+      		label=4,
+      		pin=true,
+      		pos="1,4!",
+      		shape=circle,
+      		style=filled,
+      		width=0.5];
+      	0 -> 4	 [arrowhead=none,
+      		penwidth=2.0];
       	5	 [fillcolor="#9999FF",
       		fixedsize=true,
       		group=default,
@@ -587,10 +599,10 @@
       		label=5,
       		pin=true,
       		pos="1,5!",
-      		shape=circle,
+      		shape=pentagon,
       		style=filled,
       		width=0.5];
-      	0 -> 5	 [arrowhead=none,
+      	4 -> 5	 [arrowhead=none,
       		penwidth=2.0];
       	6	 [fillcolor="#9999FF",
       		fixedsize=true,
@@ -604,18 +616,6 @@
       		width=0.5];
       	5 -> 6	 [arrowhead=none,
       		penwidth=2.0];
-      	7	 [fillcolor="#9999FF",
-      		fixedsize=true,
-      		group=default,
-      		height=0.5,
-      		label=7,
-      		pin=true,
-      		pos="1,7!",
-      		shape=pentagon,
-      		style=filled,
-      		width=0.5];
-      	6 -> 7	 [arrowhead=none,
-      		penwidth=2.0];
       }
 #endif
 
@@ -664,7 +664,7 @@
   $ hg up 'p1(10b8aeaa8cc8)' # going on "bathroom stuff" parent
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ hg grab fac207dec9f5 # moving "SPAM SPAM" to the working directory parent
-  rebasing 10:fac207dec9f5 "SPAM SPAM" (tip)
+  rebasing 9:fac207dec9f5 "SPAM SPAM" (tip)
   merging shopping
   ? files updated, 0 files merged, 0 files removed, 0 files unresolved (glob)
   $ hg log -G
@@ -700,6 +700,18 @@
       		shape=circle,
       		style=filled,
       		width=0.5];
+      	4	 [fillcolor="#9999FF",
+      		fixedsize=true,
+      		group=default,
+      		height=0.5,
+      		label=4,
+      		pin=true,
+      		pos="1,4!",
+      		shape=circle,
+      		style=filled,
+      		width=0.5];
+      	0 -> 4	 [arrowhead=none,
+      		penwidth=2.0];
       	5	 [fillcolor="#9999FF",
       		fixedsize=true,
       		group=default,
@@ -707,10 +719,10 @@
       		label=5,
       		pin=true,
       		pos="1,5!",
-      		shape=circle,
+      		shape=pentagon,
       		style=filled,
       		width=0.5];
-      	0 -> 5	 [arrowhead=none,
+      	4 -> 5	 [arrowhead=none,
       		penwidth=2.0];
       	6	 [fillcolor="#9999FF",
       		fixedsize=true,
@@ -724,41 +736,29 @@
       		width=0.5];
       	5 -> 6	 [arrowhead=none,
       		penwidth=2.0];
-      	7	 [fillcolor="#9999FF",
-      		fixedsize=true,
-      		group=default,
-      		height=0.5,
-      		label=7,
-      		pin=true,
-      		pos="1,7!",
-      		shape=pentagon,
-      		style=filled,
-      		width=0.5];
-      	6 -> 7	 [arrowhead=none,
-      		penwidth=2.0];
-      	9	 [fillcolor="#9999FF",
+      	8	 [fillcolor="#9999FF",
       		fixedsize=true,
       		group=default,
       		height=0.5,
-      		label=9,
+      		label=8,
       		pin=true,
-      		pos="1,9!",
+      		pos="1,8!",
       		shape=pentagon,
       		style=filled,
       		width=0.5];
-      	7 -> 9	 [arrowhead=none,
+      	6 -> 8	 [arrowhead=none,
       		penwidth=2.0];
-      	11	 [fillcolor="#9999FF",
+      	10	 [fillcolor="#9999FF",
       		fixedsize=true,
       		group=default,
       		height=0.5,
-      		label=11,
+      		label=10,
       		pin=true,
-      		pos="1,11!",
+      		pos="1,10!",
       		shape=pentagon,
       		style=filled,
       		width=0.5];
-      	7 -> 11	 [arrowhead=none,
+      	6 -> 10	 [arrowhead=none,
       		penwidth=2.0];
       }
 #endif
@@ -802,12 +802,12 @@
   adding manifests
   adding file changes
   added 3 changesets with 3 changes to 1 files
-  6 new obsolescence markers
+  5 new obsolescence markers
 
 for simplicity sake we get the bathroom change in line again
 
   $ hg grab 10b8aeaa8cc8
-  rebasing 9:10b8aeaa8cc8 "bathroom stuff"
+  rebasing 8:10b8aeaa8cc8 "bathroom stuff"
   merging shopping
   ? files updated, 0 files merged, 0 files removed, 0 files unresolved (glob)
   $ hg phase --draft .
@@ -844,6 +844,18 @@
       		shape=circle,
       		style=filled,
       		width=0.5];
+      	4	 [fillcolor="#9999FF",
+      		fixedsize=true,
+      		group=default,
+      		height=0.5,
+      		label=4,
+      		pin=true,
+      		pos="1,4!",
+      		shape=circle,
+      		style=filled,
+      		width=0.5];
+      	0 -> 4	 [arrowhead=none,
+      		penwidth=2.0];
       	5	 [fillcolor="#9999FF",
       		fixedsize=true,
       		group=default,
@@ -854,7 +866,7 @@
       		shape=circle,
       		style=filled,
       		width=0.5];
-      	0 -> 5	 [arrowhead=none,
+      	4 -> 5	 [arrowhead=none,
       		penwidth=2.0];
       	6	 [fillcolor="#9999FF",
       		fixedsize=true,
@@ -868,17 +880,17 @@
       		width=0.5];
       	5 -> 6	 [arrowhead=none,
       		penwidth=2.0];
-      	7	 [fillcolor="#9999FF",
+      	10	 [fillcolor="#9999FF",
       		fixedsize=true,
       		group=default,
       		height=0.5,
-      		label=7,
+      		label=10,
       		pin=true,
-      		pos="1,7!",
+      		pos="1,10!",
       		shape=circle,
       		style=filled,
       		width=0.5];
-      	6 -> 7	 [arrowhead=none,
+      	6 -> 10	 [arrowhead=none,
       		penwidth=2.0];
       	11	 [fillcolor="#9999FF",
       		fixedsize=true,
@@ -887,22 +899,10 @@
       		label=11,
       		pin=true,
       		pos="1,11!",
-      		shape=circle,
-      		style=filled,
-      		width=0.5];
-      	7 -> 11	 [arrowhead=none,
-      		penwidth=2.0];
-      	12	 [fillcolor="#9999FF",
-      		fixedsize=true,
-      		group=default,
-      		height=0.5,
-      		label=12,
-      		pin=true,
-      		pos="1,12!",
       		shape=pentagon,
       		style=filled,
       		width=0.5];
-      	11 -> 12	 [arrowhead=none,
+      	10 -> 11	 [arrowhead=none,
       		penwidth=2.0];
       }
 #endif
@@ -1135,6 +1135,18 @@
       		shape=circle,
       		style=filled,
       		width=0.5];
+      	4	 [fillcolor="#9999FF",
+      		fixedsize=true,
+      		group=default,
+      		height=0.5,
+      		label=4,
+      		pin=true,
+      		pos="1,4!",
+      		shape=circle,
+      		style=filled,
+      		width=0.5];
+      	0 -> 4	 [arrowhead=none,
+      		penwidth=2.0];
       	5	 [fillcolor="#9999FF",
       		fixedsize=true,
       		group=default,
@@ -1145,7 +1157,7 @@
       		shape=circle,
       		style=filled,
       		width=0.5];
-      	0 -> 5	 [arrowhead=none,
+      	4 -> 5	 [arrowhead=none,
       		penwidth=2.0];
       	6	 [fillcolor="#9999FF",
       		fixedsize=true,
@@ -1159,41 +1171,29 @@
       		width=0.5];
       	5 -> 6	 [arrowhead=none,
       		penwidth=2.0];
-      	7	 [fillcolor="#9999FF",
-      		fixedsize=true,
-      		group=default,
-      		height=0.5,
-      		label=7,
-      		pin=true,
-      		pos="1,7!",
-      		shape=circle,
-      		style=filled,
-      		width=0.5];
-      	6 -> 7	 [arrowhead=none,
-      		penwidth=2.0];
-      	11	 [fillcolor="#9999FF",
+      	10	 [fillcolor="#9999FF",
       		fixedsize=true,
       		group=default,
       		height=0.5,
-      		label=11,
+      		label=10,
       		pin=true,
-      		pos="1,11!",
+      		pos="1,10!",
       		shape=circle,
       		style=filled,
       		width=0.5];
-      	7 -> 11	 [arrowhead=none,
+      	6 -> 10	 [arrowhead=none,
       		penwidth=2.0];
-      	14	 [fillcolor="#9999FF",
+      	12	 [fillcolor="#9999FF",
       		fixedsize=true,
       		group=default,
       		height=0.5,
-      		label=14,
+      		label=12,
       		pin=true,
-      		pos="1,14!",
+      		pos="1,12!",
       		shape=pentagon,
       		style=filled,
       		width=0.5];
-      	11 -> 14	 [arrowhead=none,
+      	10 -> 12	 [arrowhead=none,
       		penwidth=2.0];
       }
 #endif
@@ -1206,9 +1206,9 @@
   adding changesets
   adding manifests
   adding file changes
-  added 1 changesets with 1 changes to 1 files (+1 heads)
-  (run 'hg heads' to see heads, 'hg merge' to merge)
-  1 new unstable changesets
+  added 1 changesets with 1 changes to 1 files
+  (run 'hg update' to get a working copy)
+  1 new orphan changesets
 
 
 The new changeset "animal" is based on an old changeset of "bathroom". You can
@@ -1251,6 +1251,18 @@
       		shape=circle,
       		style=filled,
       		width=0.5];
+      	4	 [fillcolor="#9999FF",
+      		fixedsize=true,
+      		group=default,
+      		height=0.5,
+      		label=4,
+      		pin=true,
+      		pos="1,4!",
+      		shape=circle,
+      		style=filled,
+      		width=0.5];
+      	0 -> 4	 [arrowhead=none,
+      		penwidth=2.0];
       	5	 [fillcolor="#9999FF",
       		fixedsize=true,
       		group=default,
@@ -1261,7 +1273,7 @@
       		shape=circle,
       		style=filled,
       		width=0.5];
-      	0 -> 5	 [arrowhead=none,
+      	4 -> 5	 [arrowhead=none,
       		penwidth=2.0];
       	6	 [fillcolor="#9999FF",
       		fixedsize=true,
@@ -1275,69 +1287,57 @@
       		width=0.5];
       	5 -> 6	 [arrowhead=none,
       		penwidth=2.0];
-      	7	 [fillcolor="#9999FF",
+      	10	 [fillcolor="#9999FF",
       		fixedsize=true,
       		group=default,
       		height=0.5,
-      		label=7,
+      		label=10,
       		pin=true,
-      		pos="1,7!",
+      		pos="1,10!",
       		shape=circle,
       		style=filled,
       		width=0.5];
-      	6 -> 7	 [arrowhead=none,
+      	6 -> 10	 [arrowhead=none,
       		penwidth=2.0];
-      	11	 [fillcolor="#9999FF",
+      	11	 [fillcolor="#DFDFFF",
       		fixedsize=true,
-      		group=default,
+      		group=default_alt,
       		height=0.5,
       		label=11,
       		pin=true,
-      		pos="1,11!",
-      		shape=circle,
-      		style=filled,
+      		pos="2,11!",
+      		shape=pentagon,
+      		style="dotted, filled",
       		width=0.5];
-      	7 -> 11	 [arrowhead=none,
+      	10 -> 11	 [arrowhead=none,
       		penwidth=2.0];
-      	12	 [fillcolor="#DFDFFF",
+      	12	 [fillcolor="#9999FF",
       		fixedsize=true,
-      		group=default_alt,
+      		group=default,
       		height=0.5,
       		label=12,
       		pin=true,
-      		pos="2,12!",
-      		shape=pentagon,
-      		style="dotted, filled",
-      		width=0.5];
-      	11 -> 12	 [arrowhead=none,
-      		penwidth=2.0];
-      	14	 [fillcolor="#9999FF",
-      		fixedsize=true,
-      		group=default,
-      		height=0.5,
-      		label=14,
-      		pin=true,
-      		pos="1,14!",
+      		pos="1,12!",
       		shape=pentagon,
       		style=filled,
       		width=0.5];
-      	11 -> 14	 [arrowhead=none,
+      	10 -> 12	 [arrowhead=none,
       		penwidth=2.0];
-      	12 -> 14	 [arrowhead=none,
+      	11 -> 12	 [arrowhead=none,
       		minlen=0,
       		penwidth=2.0,
       		style=dashed];
-      	15	 [fillcolor="#FF4F4F",
+      	13	 [fillcolor="#FF4F4F",
       		fixedsize=true,
       		group=default_alt,
       		height=0.5,
-      		label=15,
+      		label=13,
       		pin=true,
-      		pos="2,15!",
+      		pos="2,13!",
       		shape=pentagon,
       		style=filled,
       		width=0.5];
-      	12 -> 15	 [arrowhead=none,
+      	11 -> 13	 [arrowhead=none,
       		penwidth=2.0];
       }
 #endif
@@ -1353,7 +1353,7 @@
   $ hg push other
   pushing to $TESTTMP/other (glob)
   searching for changes
-  abort: push includes unstable changeset: bf1b0d202029!
+  abort: push includes orphan changeset: bf1b0d202029!
   (use 'hg evolve' to get a stable history or --force to ignore warnings)
   [255]
  
@@ -1364,15 +1364,15 @@
 It has a --dry-run option to only suggest the next move.
 
   $ hg evolve --dry-run
-  move:[15] animals
-  atop:[14] bathroom stuff
+  move:[13] animals
+  atop:[12] bathroom stuff
   hg rebase -r bf1b0d202029 -d a44c85f957d3
 
 Let's do it
 
   $ hg evolve
-  move:[15] animals
-  atop:[14] bathroom stuff
+  move:[13] animals
+  atop:[12] bathroom stuff
   merging shopping
   working directory is now at ee942144f952
 
@@ -1413,6 +1413,18 @@
       		shape=circle,
       		style=filled,
       		width=0.5];
+      	4	 [fillcolor="#9999FF",
+      		fixedsize=true,
+      		group=default,
+      		height=0.5,
+      		label=4,
+      		pin=true,
+      		pos="1,4!",
+      		shape=circle,
+      		style=filled,
+      		width=0.5];
+      	0 -> 4	 [arrowhead=none,
+      		penwidth=2.0];
       	5	 [fillcolor="#9999FF",
       		fixedsize=true,
       		group=default,
@@ -1423,7 +1435,7 @@
       		shape=circle,
       		style=filled,
       		width=0.5];
-      	0 -> 5	 [arrowhead=none,
+      	4 -> 5	 [arrowhead=none,
       		penwidth=2.0];
       	6	 [fillcolor="#9999FF",
       		fixedsize=true,
@@ -1437,29 +1449,29 @@
       		width=0.5];
       	5 -> 6	 [arrowhead=none,
       		penwidth=2.0];
-      	7	 [fillcolor="#9999FF",
+      	10	 [fillcolor="#9999FF",
       		fixedsize=true,
       		group=default,
       		height=0.5,
-      		label=7,
+      		label=10,
       		pin=true,
-      		pos="1,7!",
+      		pos="1,10!",
       		shape=circle,
       		style=filled,
       		width=0.5];
-      	6 -> 7	 [arrowhead=none,
+      	6 -> 10	 [arrowhead=none,
       		penwidth=2.0];
-      	11	 [fillcolor="#9999FF",
+      	12	 [fillcolor="#9999FF",
       		fixedsize=true,
       		group=default,
       		height=0.5,
-      		label=11,
+      		label=12,
       		pin=true,
-      		pos="1,11!",
-      		shape=circle,
+      		pos="1,12!",
+      		shape=pentagon,
       		style=filled,
       		width=0.5];
-      	7 -> 11	 [arrowhead=none,
+      	10 -> 12	 [arrowhead=none,
       		penwidth=2.0];
       	14	 [fillcolor="#9999FF",
       		fixedsize=true,
@@ -1471,19 +1483,7 @@
       		shape=pentagon,
       		style=filled,
       		width=0.5];
-      	11 -> 14	 [arrowhead=none,
-      		penwidth=2.0];
-      	16	 [fillcolor="#9999FF",
-      		fixedsize=true,
-      		group=default,
-      		height=0.5,
-      		label=16,
-      		pin=true,
-      		pos="1,16!",
-      		shape=pentagon,
-      		style=filled,
-      		width=0.5];
-      	14 -> 16	 [arrowhead=none,
+      	12 -> 14	 [arrowhead=none,
       		penwidth=2.0];
       }
 #endif
@@ -1497,7 +1497,7 @@
   adding manifests
   adding file changes
   added 2 changesets with 2 changes to 1 files (+1 heads)
-  3 new obsolescence markers
+  2 new obsolescence markers
   obsoleted 2 changesets
 
 Remote get a warning that current working directory is based on an obsolete
@@ -1578,6 +1578,18 @@
       		shape=circle,
       		style=filled,
       		width=0.5];
+      	4	 [fillcolor="#9999FF",
+      		fixedsize=true,
+      		group=default,
+      		height=0.5,
+      		label=4,
+      		pin=true,
+      		pos="1,4!",
+      		shape=circle,
+      		style=filled,
+      		width=0.5];
+      	0 -> 4	 [arrowhead=none,
+      		penwidth=2.0];
       	5	 [fillcolor="#9999FF",
       		fixedsize=true,
       		group=default,
@@ -1588,7 +1600,7 @@
       		shape=circle,
       		style=filled,
       		width=0.5];
-      	0 -> 5	 [arrowhead=none,
+      	4 -> 5	 [arrowhead=none,
       		penwidth=2.0];
       	6	 [fillcolor="#9999FF",
       		fixedsize=true,
@@ -1602,29 +1614,29 @@
       		width=0.5];
       	5 -> 6	 [arrowhead=none,
       		penwidth=2.0];
-      	7	 [fillcolor="#9999FF",
+      	10	 [fillcolor="#9999FF",
       		fixedsize=true,
       		group=default,
       		height=0.5,
-      		label=7,
+      		label=10,
       		pin=true,
-      		pos="1,7!",
+      		pos="1,10!",
       		shape=circle,
       		style=filled,
       		width=0.5];
-      	6 -> 7	 [arrowhead=none,
+      	6 -> 10	 [arrowhead=none,
       		penwidth=2.0];
-      	11	 [fillcolor="#9999FF",
+      	12	 [fillcolor="#9999FF",
       		fixedsize=true,
       		group=default,
       		height=0.5,
-      		label=11,
+      		label=12,
       		pin=true,
-      		pos="1,11!",
-      		shape=circle,
+      		pos="1,12!",
+      		shape=pentagon,
       		style=filled,
       		width=0.5];
-      	7 -> 11	 [arrowhead=none,
+      	10 -> 12	 [arrowhead=none,
       		penwidth=2.0];
       	14	 [fillcolor="#9999FF",
       		fixedsize=true,
@@ -1636,31 +1648,19 @@
       		shape=pentagon,
       		style=filled,
       		width=0.5];
-      	11 -> 14	 [arrowhead=none,
+      	12 -> 14	 [arrowhead=none,
       		penwidth=2.0];
-      	16	 [fillcolor="#9999FF",
+      	15	 [fillcolor="#9999FF",
       		fixedsize=true,
       		group=default,
       		height=0.5,
-      		label=16,
+      		label=15,
       		pin=true,
-      		pos="1,16!",
+      		pos="1,15!",
       		shape=pentagon,
       		style=filled,
       		width=0.5];
-      	14 -> 16	 [arrowhead=none,
-      		penwidth=2.0];
-      	17	 [fillcolor="#9999FF",
-      		fixedsize=true,
-      		group=default,
-      		height=0.5,
-      		label=17,
-      		pin=true,
-      		pos="1,17!",
-      		shape=pentagon,
-      		style=filled,
-      		width=0.5];
-      	16 -> 17	 [arrowhead=none,
+      	14 -> 15	 [arrowhead=none,
       		penwidth=2.0];
       }
 #endif
@@ -1671,7 +1671,7 @@
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   working directory now at a44c85f957d3
   1 changesets pruned
-  1 new unstable changesets
+  1 new orphan changesets
 
 
 The animals changeset is still displayed because the "SPAM SPAM SPAM" changeset
@@ -1714,6 +1714,18 @@
       		shape=circle,
       		style=filled,
       		width=0.5];
+      	4	 [fillcolor="#9999FF",
+      		fixedsize=true,
+      		group=default,
+      		height=0.5,
+      		label=4,
+      		pin=true,
+      		pos="1,4!",
+      		shape=circle,
+      		style=filled,
+      		width=0.5];
+      	0 -> 4	 [arrowhead=none,
+      		penwidth=2.0];
       	5	 [fillcolor="#9999FF",
       		fixedsize=true,
       		group=default,
@@ -1724,7 +1736,7 @@
       		shape=circle,
       		style=filled,
       		width=0.5];
-      	0 -> 5	 [arrowhead=none,
+      	4 -> 5	 [arrowhead=none,
       		penwidth=2.0];
       	6	 [fillcolor="#9999FF",
       		fixedsize=true,
@@ -1738,74 +1750,62 @@
       		width=0.5];
       	5 -> 6	 [arrowhead=none,
       		penwidth=2.0];
-      	7	 [fillcolor="#9999FF",
+      	10	 [fillcolor="#9999FF",
       		fixedsize=true,
       		group=default,
       		height=0.5,
-      		label=7,
+      		label=10,
       		pin=true,
-      		pos="1,7!",
+      		pos="1,10!",
       		shape=circle,
       		style=filled,
       		width=0.5];
-      	6 -> 7	 [arrowhead=none,
+      	6 -> 10	 [arrowhead=none,
       		penwidth=2.0];
-      	11	 [fillcolor="#9999FF",
+      	12	 [fillcolor="#9999FF",
       		fixedsize=true,
       		group=default,
       		height=0.5,
-      		label=11,
+      		label=12,
       		pin=true,
-      		pos="1,11!",
-      		shape=circle,
+      		pos="1,12!",
+      		shape=pentagon,
       		style=filled,
       		width=0.5];
-      	7 -> 11	 [arrowhead=none,
+      	10 -> 12	 [arrowhead=none,
       		penwidth=2.0];
-      	14	 [fillcolor="#9999FF",
+      	14	 [fillcolor="#DFDFFF",
       		fixedsize=true,
-      		group=default,
+      		group=default_alt,
       		height=0.5,
       		label=14,
       		pin=true,
-      		pos="1,14!",
+      		pos="2,14!",
       		shape=pentagon,
-      		style=filled,
+      		style="dotted, filled",
       		width=0.5];
-      	11 -> 14	 [arrowhead=none,
+      	12 -> 14	 [arrowhead=none,
       		penwidth=2.0];
-      	16	 [fillcolor="#DFDFFF",
+      	15	 [fillcolor="#FF4F4F",
       		fixedsize=true,
       		group=default_alt,
       		height=0.5,
-      		label=16,
+      		label=15,
       		pin=true,
-      		pos="2,16!",
-      		shape=pentagon,
-      		style="dotted, filled",
-      		width=0.5];
-      	14 -> 16	 [arrowhead=none,
-      		penwidth=2.0];
-      	17	 [fillcolor="#FF4F4F",
-      		fixedsize=true,
-      		group=default_alt,
-      		height=0.5,
-      		label=17,
-      		pin=true,
-      		pos="2,17!",
+      		pos="2,15!",
       		shape=pentagon,
       		style=filled,
       		width=0.5];
-      	16 -> 17	 [arrowhead=none,
+      	14 -> 15	 [arrowhead=none,
       		penwidth=2.0];
       }
 #endif
 
-  $ hg log -r "unstable()"
+  $ hg log -r "orphan()"
   99f039c5ec9e (draft): SPAM SPAM SPAM
 
 #if docgraph-ext
-  $ hg docgraph -r "unstable()" --sphinx-directive --rankdir LR #rest-ignore
+  $ hg docgraph -r "orphan()" --sphinx-directive --rankdir LR #rest-ignore
   .. graphviz::
   
       strict digraph  {
@@ -1813,13 +1813,13 @@
       		splines=polyline
       	];
       	node [label="\N"];
-      	17	 [fillcolor="#FF4F4F",
+      	15	 [fillcolor="#FF4F4F",
       		fixedsize=true,
       		group=default_alt,
       		height=0.5,
-      		label=17,
+      		label=15,
       		pin=true,
-      		pos="1,17!",
+      		pos="1,15!",
       		shape=pentagon,
       		style=filled,
       		width=0.5];
@@ -1827,8 +1827,8 @@
 #endif
 
   $ hg evolve
-  move:[17] SPAM SPAM SPAM
-  atop:[14] bathroom stuff
+  move:[15] SPAM SPAM SPAM
+  atop:[12] bathroom stuff
   merging shopping
   working directory is now at 40aa40daeefb
 
@@ -1867,6 +1867,18 @@
       		shape=circle,
       		style=filled,
       		width=0.5];
+      	4	 [fillcolor="#9999FF",
+      		fixedsize=true,
+      		group=default,
+      		height=0.5,
+      		label=4,
+      		pin=true,
+      		pos="1,4!",
+      		shape=circle,
+      		style=filled,
+      		width=0.5];
+      	0 -> 4	 [arrowhead=none,
+      		penwidth=2.0];
       	5	 [fillcolor="#9999FF",
       		fixedsize=true,
       		group=default,
@@ -1877,7 +1889,7 @@
       		shape=circle,
       		style=filled,
       		width=0.5];
-      	0 -> 5	 [arrowhead=none,
+      	4 -> 5	 [arrowhead=none,
       		penwidth=2.0];
       	6	 [fillcolor="#9999FF",
       		fixedsize=true,
@@ -1891,53 +1903,41 @@
       		width=0.5];
       	5 -> 6	 [arrowhead=none,
       		penwidth=2.0];
-      	7	 [fillcolor="#9999FF",
+      	10	 [fillcolor="#9999FF",
       		fixedsize=true,
       		group=default,
       		height=0.5,
-      		label=7,
+      		label=10,
       		pin=true,
-      		pos="1,7!",
-      		shape=circle,
-      		style=filled,
-      		width=0.5];
-      	6 -> 7	 [arrowhead=none,
-      		penwidth=2.0];
-      	11	 [fillcolor="#9999FF",
-      		fixedsize=true,
-      		group=default,
-      		height=0.5,
-      		label=11,
-      		pin=true,
-      		pos="1,11!",
+      		pos="1,10!",
       		shape=circle,
       		style=filled,
       		width=0.5];
-      	7 -> 11	 [arrowhead=none,
+      	6 -> 10	 [arrowhead=none,
       		penwidth=2.0];
-      	14	 [fillcolor="#9999FF",
+      	12	 [fillcolor="#9999FF",
       		fixedsize=true,
       		group=default,
       		height=0.5,
-      		label=14,
+      		label=12,
       		pin=true,
-      		pos="1,14!",
+      		pos="1,12!",
       		shape=pentagon,
       		style=filled,
       		width=0.5];
-      	11 -> 14	 [arrowhead=none,
+      	10 -> 12	 [arrowhead=none,
       		penwidth=2.0];
-      	18	 [fillcolor="#9999FF",
+      	16	 [fillcolor="#9999FF",
       		fixedsize=true,
       		group=default,
       		height=0.5,
-      		label=18,
+      		label=16,
       		pin=true,
-      		pos="1,18!",
+      		pos="1,16!",
       		shape=pentagon,
       		style=filled,
       		width=0.5];
-      	14 -> 18	 [arrowhead=none,
+      	12 -> 16	 [arrowhead=none,
       		penwidth=2.0];
       }
 #endif
--- a/tests/test-uncommit-interactive.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-uncommit-interactive.t	Tue Oct 10 22:40:41 2017 +0200
@@ -302,7 +302,7 @@
 
   $ hg amend
   $ glog
-  @  7:905eb2a23ea2@default(draft) another one
+  @  6:905eb2a23ea2@default(draft) another one
   |
   o  0:7733902a8d94@default(draft) The base commit
   
@@ -445,9 +445,9 @@
   undeleting a
 
   $ glog
-  @  12:42cc15efbec2@default(draft) Added foo
+  @  10:42cc15efbec2@default(draft) Added foo
   |
-  o  7:905eb2a23ea2@default(draft) another one
+  o  6:905eb2a23ea2@default(draft) another one
   |
   o  0:7733902a8d94@default(draft) The base commit
   
@@ -517,15 +517,15 @@
 =====================================================
 
   $ glog
-  @  18:25a080d13cb2@default(draft) Added x
+  @  16:25a080d13cb2@default(draft) Added x
   |
-  o  12:42cc15efbec2@default(draft) Added foo
+  o  10:42cc15efbec2@default(draft) Added foo
   |
-  o  7:905eb2a23ea2@default(draft) another one
+  o  6:905eb2a23ea2@default(draft) another one
   |
   o  0:7733902a8d94@default(draft) The base commit
   
-  $ hg up 7
+  $ hg up 6
   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
 
   $ touch bar
@@ -597,7 +597,7 @@
   
   patching file a
   Hunk #1 succeeded at 1 with fuzz 1 (offset -1 lines).
-  2 new unstable changesets
+  2 new orphan changesets
 
   $ hg diff
   diff -r 676366511f95 a
--- a/tests/test-uncommit.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-uncommit.t	Tue Oct 10 22:40:41 2017 +0200
@@ -244,7 +244,7 @@
   (use 'hg evolve' to update to its successor: e8db4aa611f6)
   $ hg --config extensions.purge= purge
   $ hg uncommit -I 'set:added() and e'
-  2 new divergent changesets
+  2 new content-divergent changesets
   $ hg st --copies
   A e
   $ hg st --copies --change .
@@ -290,7 +290,7 @@
   (5eb72dbe0cb4 has diverged, use 'hg evolve --list --contentdivergent' to resolve the issue)
   $ hg --config extensions.purge= purge
   $ hg uncommit --all -X e
-  1 new divergent changesets
+  1 new content-divergent changesets
   $ hg st --copies
   M b
   M d
@@ -337,7 +337,7 @@
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
   [8] touncommit
   $ hg uncommit aa
-  1 new unstable changesets
+  1 new orphan changesets
 
 Test uncommiting agains a different base
 
--- a/tests/test-unstable.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-unstable.t	Tue Oct 10 22:40:41 2017 +0200
@@ -42,7 +42,7 @@
   $ hg up "desc(_b)"
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
   $ hg amend -m "bprime"
-  1 new unstable changesets
+  1 new orphan changesets
   $ hg log -G
   @  3:36050226a9b9@default(draft) bprime
   |
@@ -86,7 +86,7 @@
   $ hg up "desc(_a)"
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
   $ hg amend -m "aprime"
-  1 new unstable changesets
+  1 new orphan changesets
   $ hg log -G
   @  4:47127ea62e5f@default(draft) aprime
   |
@@ -134,7 +134,7 @@
   $ hg up "desc(_a)"
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
   $ hg amend -m "aprime"
-  1 new unstable changesets
+  1 new orphan changesets
   $ hg up "desc(_c)"
   1 files updated, 0 files merged, 1 files removed, 0 files unresolved
   $ hg amend -m "cprime"
@@ -185,7 +185,7 @@
   created new head
   $ hg prune "desc(_b)" -s "desc(bprimesplit1) + desc(bprimesplit2)" --split
   1 changesets pruned
-  1 new unstable changesets
+  1 new orphan changesets
   $ hg log -G
   @  4:2a4ccc0bb20c@default(draft) add bprimesplit2
   |
@@ -230,14 +230,14 @@
   created new head
   $ hg prune "desc(_b)" -s "desc(bprimesplit1) + desc(bprimesplit2)" --split
   1 changesets pruned
-  1 new unstable changesets
+  1 new orphan changesets
   $ hg up "desc(_a)"
   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
   $ mkcommits bsecondsplit1 bsecondsplit2
   created new head
   $ hg prune "desc(bprimesplit1)" -s "desc(bsecondsplit2)"
   1 changesets pruned
-  1 new unstable changesets
+  1 new orphan changesets
   $ hg prune "desc(bprimesplit2)" -s "desc(bsecondsplit1)"
   1 changesets pruned
   $ hg log -G
@@ -288,7 +288,7 @@
   created new head
   $ hg prune "desc(_b)" -s "desc(bprimesplit1) + desc(bprimesplit2)" --split
   1 changesets pruned
-  1 new unstable changesets
+  1 new orphan changesets
   $ hg log -G
   @  4:3c69ea6aa93e@default(draft) add bprimesplit2
   |
--- a/tests/test-userguide.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-userguide.t	Tue Oct 10 22:40:41 2017 +0200
@@ -42,10 +42,8 @@
   (use --hidden to access hidden revisions; successor: 934359450037)
   [255]
   $ hg --hidden shortlog -G
-  @  3:934359450037  draft  implement feature Y
+  @  2:934359450037  draft  implement feature Y
   |
-  | x  2:6c5f78d5d467  draft  temporary amend commit for fe0ecd3bd2a4
-  | |
   | x  1:fe0ecd3bd2a4  draft  implement feature Y
   |/
   o  0:08c4b6f4efc8  draft  init
@@ -54,10 +52,8 @@
   $ hg rollback -q
   $ hg amend -u alice -d '2 0' -m 'implement feature Y'
   $ hg --hidden shortlog -G
-  @  3:934359450037  draft  implement feature Y
+  @  2:934359450037  draft  implement feature Y
   |
-  | x  2:6c5f78d5d467  draft  temporary amend commit for fe0ecd3bd2a4
-  | |
   | x  1:fe0ecd3bd2a4  draft  implement feature Y
   |/
   o  0:08c4b6f4efc8  draft  init
@@ -70,11 +66,11 @@
   working directory now at 934359450037
   1 changesets pruned
   $ hg parents --template '{rev}:{node|short}  {desc|firstline}\n'
-  3:934359450037  implement feature Y
-  $ hg --hidden shortlog -G -r 3:
-  x  4:a3e0ef24aaf0  draft  debug hack
+  2:934359450037  implement feature Y
+  $ hg --hidden shortlog -G -r 934359450037:
+  x  3:a3e0ef24aaf0  draft  debug hack
   |
-  @  3:934359450037  draft  implement feature Y
+  @  2:934359450037  draft  implement feature Y
   |
   ~
 
@@ -85,16 +81,16 @@
   $ hg uncommit file2.c
   $ hg status
   M file2.c
-  $ hg --hidden shortlog -G -r 'descendants(3) - 4'
-  @  6:c8defeecf7a4  draft  fix bug 234
+  $ hg --hidden shortlog -G -r 'descendants(934359450037) - a3e0ef24aaf0'
+  @  5:c8defeecf7a4  draft  fix bug 234
   |
-  | x  5:da4331967f5f  draft  fix bug 234
+  | x  4:da4331967f5f  draft  fix bug 234
   |/
-  o  3:934359450037  draft  implement feature Y
+  o  2:934359450037  draft  implement feature Y
   |
   ~
   $ hg parents --template '{rev}:{node|short}  {desc|firstline}\n{files}\n'
-  6:c8defeecf7a4  fix bug 234
+  5:c8defeecf7a4  fix bug 234
   file1.c
   $ hg revert --no-backup file2.c
 
@@ -105,32 +101,32 @@
   $ hg commit -m 'step 2'
   $ echo step3 >> file2.c
   $ hg commit -m 'step 3'
-  $ hg log --template '{rev}:{node|short}  {desc|firstline}\n' -r 7::
-  7:05e61aab8294  step 1
-  8:be6d5bc8e4cc  step 2
-  9:35f432d9f7c1  step 3
-  $ hg fold -d '0 0' -m 'fix bug 64' --from -r 7::
+  $ hg log --template '{rev}:{node|short}  {desc|firstline}\n' -r 05e61aab8294::
+  6:05e61aab8294  step 1
+  7:be6d5bc8e4cc  step 2
+  8:35f432d9f7c1  step 3
+  $ hg fold -d '0 0' -m 'fix bug 64' --from -r 05e61aab8294::
   3 changesets folded
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  $ hg --hidden shortlog -G -r 6::
-  @  10:171c6a79a27b  draft  fix bug 64
+  $ hg --hidden shortlog -G -r c8defeecf7a4::
+  @  9:171c6a79a27b  draft  fix bug 64
   |
-  | x  9:35f432d9f7c1  draft  step 3
+  | x  8:35f432d9f7c1  draft  step 3
   | |
-  | x  8:be6d5bc8e4cc  draft  step 2
+  | x  7:be6d5bc8e4cc  draft  step 2
   | |
-  | x  7:05e61aab8294  draft  step 1
+  | x  6:05e61aab8294  draft  step 1
   |/
-  o  6:c8defeecf7a4  draft  fix bug 234
+  o  5:c8defeecf7a4  draft  fix bug 234
   |
   ~
-  $ hg --hidden log -q -r 'successors(7) | successors(8) | successors(9)'
-  10:171c6a79a27b
-  $ hg --hidden log -q -r 'precursors(10)'
-  7:05e61aab8294
-  8:be6d5bc8e4cc
-  9:35f432d9f7c1
-  $ hg diff -c 10 -U 0
+  $ hg --hidden log -q -r 'successors(05e61aab8294) | successors(be6d5bc8e4cc) | successors(35f432d9f7c1)'
+  9:171c6a79a27b
+  $ hg --hidden log -q -r 'precursors(171c6a79a27b)'
+  6:05e61aab8294
+  7:be6d5bc8e4cc
+  8:35f432d9f7c1
+  $ hg diff -c 171c6a79a27b -U 0
   diff -r c8defeecf7a4 -r 171c6a79a27b file1.c
   --- a/file1.c	Thu Jan 01 00:00:10 1970 +0000
   +++ b/file1.c	Thu Jan 01 00:00:00 1970 +0000
@@ -150,50 +146,48 @@
   $ hg commit -u bob -d '4 0' -m 'cleanup'
   $ echo 'new feature' >> file1.c
   $ hg commit -u bob -d '5 0' -m 'feature 23'
-  $ hg --hidden shortlog -G -r 10::
-  @  13:dadcbba2d606  draft  feature 23
+  $ hg --hidden shortlog -G -r 171c6a79a27b::
+  @  12:dadcbba2d606  draft  feature 23
   |
-  o  12:debd46bb29dc  draft  cleanup
+  o  11:debd46bb29dc  draft  cleanup
   |
-  o  11:3e1cb8f70c02  draft  fix bug 17
+  o  10:3e1cb8f70c02  draft  fix bug 17
   |
-  o  10:171c6a79a27b  draft  fix bug 64
+  o  9:171c6a79a27b  draft  fix bug 64
   |
   ~
 
 example 7: amend an older changeset (figures 6, 7)
-  $ hg update -q 11
+  $ hg update -q -r 3e1cb8f70c02
   $ echo 'fix fix fix fix' > file2.c
   $ hg amend -u bob -d '6 0'
-  2 new unstable changesets
+  2 new orphan changesets
   $ hg shortlog -r 'obsolete()'
-  11:3e1cb8f70c02  draft  fix bug 17
-  $ hg shortlog -r 'unstable()'
-  12:debd46bb29dc  draft  cleanup
-  13:dadcbba2d606  draft  feature 23
-  $ hg --hidden shortlog -G -r 10::
-  @  15:395cbeda3a06  draft  fix bug 17
+  10:3e1cb8f70c02  draft  fix bug 17
+  $ hg shortlog -r "orphan()"
+  11:debd46bb29dc  draft  cleanup
+  12:dadcbba2d606  draft  feature 23
+  $ hg --hidden shortlog -G -r 171c6a79a27b::
+  @  13:395cbeda3a06  draft  fix bug 17
   |
-  | x  14:f7fab707e247  draft  temporary amend commit for 3e1cb8f70c02
+  | o  12:dadcbba2d606  draft  feature 23
+  | |
+  | o  11:debd46bb29dc  draft  cleanup
   | |
-  | | o  13:dadcbba2d606  draft  feature 23
-  | | |
-  | | o  12:debd46bb29dc  draft  cleanup
-  | |/
-  | x  11:3e1cb8f70c02  draft  fix bug 17
+  | x  10:3e1cb8f70c02  draft  fix bug 17
   |/
-  o  10:171c6a79a27b  draft  fix bug 64
+  o  9:171c6a79a27b  draft  fix bug 64
   |
   ~
   $ hg evolve -q --all
-  $ hg shortlog -G -r 10::
-  @  17:91b4b0f8b5c5  draft  feature 23
+  $ hg shortlog -G -r 171c6a79a27b::
+  @  15:91b4b0f8b5c5  draft  feature 23
   |
-  o  16:fe8858bd9bc2  draft  cleanup
+  o  14:fe8858bd9bc2  draft  cleanup
   |
-  o  15:395cbeda3a06  draft  fix bug 17
+  o  13:395cbeda3a06  draft  fix bug 17
   |
-  o  10:171c6a79a27b  draft  fix bug 64
+  o  9:171c6a79a27b  draft  fix bug 64
   |
   ~
 
@@ -204,38 +198,36 @@
   $ hg commit -u carl -d '8 0' -m 'debug hack'
   $ echo 'more useful' >> file1.c
   $ hg commit -u carl -d '9 0' -m 'more work'
-  $ hg shortlog -G -r 17::
-  @  20:ea8fafca914b  draft  more work
+  $ hg shortlog -G -r 91b4b0f8b5c5::
+  @  18:ea8fafca914b  draft  more work
   |
-  o  19:b23d06b457a8  draft  debug hack
+  o  17:b23d06b457a8  draft  debug hack
   |
-  o  18:1f33e68b18b9  draft  useful work
+  o  16:1f33e68b18b9  draft  useful work
   |
-  o  17:91b4b0f8b5c5  draft  feature 23
+  o  15:91b4b0f8b5c5  draft  feature 23
   |
   ~
 
 example 8: prune an older changeset (figures 8, 9)
-  $ hg prune 19
+  $ hg prune b23d06b457a8
   1 changesets pruned
-  1 new unstable changesets
-  $ hg --hidden shortlog -G -r 18::
-  @  20:ea8fafca914b  draft  more work
+  1 new orphan changesets
+  $ hg --hidden shortlog -G -r b23d06b457a8::
+  @  18:ea8fafca914b  draft  more work
   |
-  x  19:b23d06b457a8  draft  debug hack
-  |
-  o  18:1f33e68b18b9  draft  useful work
+  x  17:b23d06b457a8  draft  debug hack
   |
   ~
   $ hg evolve -q --all --any
-  $ hg --hidden shortlog -G -r 18::
-  @  21:4393e5877437  draft  more work
+  $ hg --hidden shortlog -G -r 1f33e68b18b9::
+  @  19:4393e5877437  draft  more work
   |
-  | x  20:ea8fafca914b  draft  more work
+  | x  18:ea8fafca914b  draft  more work
   | |
-  | x  19:b23d06b457a8  draft  debug hack
+  | x  17:b23d06b457a8  draft  debug hack
   |/
-  o  18:1f33e68b18b9  draft  useful work
+  o  16:1f33e68b18b9  draft  useful work
   |
   ~
 
@@ -246,35 +238,35 @@
   $ hg commit -u dan -d '11 0' -m 'fix bug 53'
   $ echo 'and this handles bug 67' >> file1.c
   $ hg commit -u dan -d '12 0' -m 'fix bug 67'
-  $ hg update 22
+  $ hg update -r f84357446753
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  $ hg shortlog -G -r 21::
-  o  23:4db2428c8ae3  draft  fix bug 67
+  $ hg shortlog -G -r 4393e5877437::
+  o  21:4db2428c8ae3  draft  fix bug 67
   |
-  @  22:f84357446753  draft  fix bug 53
+  @  20:f84357446753  draft  fix bug 53
   |
-  o  21:4393e5877437  draft  more work
+  o  19:4393e5877437  draft  more work
   |
   ~
   $ hg uncommit file2.c
-  1 new unstable changesets
+  1 new orphan changesets
   $ hg status
   M file2.c
   $ hg revert file2.c
   $ hg evolve --all --any
-  move:[23] fix bug 67
-  atop:[24] fix bug 53
+  move:[21] fix bug 67
+  atop:[22] fix bug 53
   working directory is now at 0d972d6888e6
-  $ hg --hidden shortlog -G -r 21::
-  @  25:0d972d6888e6  draft  fix bug 67
+  $ hg --hidden shortlog -G -r 4393e5877437::
+  @  23:0d972d6888e6  draft  fix bug 67
   |
-  o  24:71bb83d674c5  draft  fix bug 53
+  o  22:71bb83d674c5  draft  fix bug 53
   |
-  | x  23:4db2428c8ae3  draft  fix bug 67
+  | x  21:4db2428c8ae3  draft  fix bug 67
   | |
-  | x  22:f84357446753  draft  fix bug 53
+  | x  20:f84357446753  draft  fix bug 53
   |/
-  o  21:4393e5877437  draft  more work
+  o  19:4393e5877437  draft  more work
   |
   ~
   $ rm file2.c.orig
@@ -286,48 +278,48 @@
   $ hg commit -u dan -d '11 0' -m 'fix a bug'
   $ echo 'new feature' >> file1.c
   $ hg commit -u dan -d '12 0' -m 'new feature'
-  $ hg update 26
+  $ hg update 5b31a1239ab9
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  $ hg --hidden shortlog -G -r 25::
-  o  27:fbb3c6d50427  draft  new feature
+  $ hg --hidden shortlog -G -r 0d972d6888e6::
+  o  25:fbb3c6d50427  draft  new feature
   |
-  @  26:5b31a1239ab9  draft  fix a bug
+  @  24:5b31a1239ab9  draft  fix a bug
   |
-  o  25:0d972d6888e6  draft  fix bug 67
+  o  23:0d972d6888e6  draft  fix bug 67
   |
   ~
   $ hg uncommit file2.c
-  1 new unstable changesets
+  1 new orphan changesets
   $ hg status
   M file2.c
   $ hg commit -m 'useful tweak'
   $ hg --hidden shortlog -G -r 0d972d6888e6::
-  @  29:51e0d8c0a922  draft  useful tweak
+  @  27:51e0d8c0a922  draft  useful tweak
   |
-  o  28:2594e98553a9  draft  fix a bug
+  o  26:2594e98553a9  draft  fix a bug
   |
-  | o  27:fbb3c6d50427  draft  new feature
+  | o  25:fbb3c6d50427  draft  new feature
   | |
-  | x  26:5b31a1239ab9  draft  fix a bug
+  | x  24:5b31a1239ab9  draft  fix a bug
   |/
-  o  25:0d972d6888e6  draft  fix bug 67
+  o  23:0d972d6888e6  draft  fix bug 67
   |
   ~
   $ hg evolve --all --any
-  move:[27] new feature
-  atop:[28] fix a bug
+  move:[25] new feature
+  atop:[26] fix a bug
   working directory is now at 166c1c368ab6
   $ hg --hidden shortlog -G -r 0d972d6888e6::
-  @  30:166c1c368ab6  draft  new feature
+  @  28:166c1c368ab6  draft  new feature
   |
-  | o  29:51e0d8c0a922  draft  useful tweak
+  | o  27:51e0d8c0a922  draft  useful tweak
   |/
-  o  28:2594e98553a9  draft  fix a bug
+  o  26:2594e98553a9  draft  fix a bug
   |
-  | x  27:fbb3c6d50427  draft  new feature
+  | x  25:fbb3c6d50427  draft  new feature
   | |
-  | x  26:5b31a1239ab9  draft  fix a bug
+  | x  24:5b31a1239ab9  draft  fix a bug
   |/
-  o  25:0d972d6888e6  draft  fix bug 67
+  o  23:0d972d6888e6  draft  fix bug 67
   |
   ~
--- a/tests/test-wireproto-bundle1.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-wireproto-bundle1.t	Tue Oct 10 22:40:41 2017 +0200
@@ -69,7 +69,7 @@
   remote: adding manifests
   remote: adding file changes
   remote: added 1 changesets with 1 changes to 1 files (+1 heads)
-  remote: 2 new obsolescence markers
+  remote: 1 new obsolescence markers
   remote: obsoleted 1 changesets
   $ hg push
   pushing to ssh://user@dummy/server
@@ -87,7 +87,7 @@
   adding manifests
   adding file changes
   added 1 changesets with 1 changes to [12] files \(\+1 heads\) (re)
-  2 new obsolescence markers
+  1 new obsolescence markers
   obsoleted 1 changesets
   (run 'hg heads' to see heads)
   $ hg -R ../other pull
--- a/tests/test-wireproto.t	Tue Oct 10 21:12:14 2017 +0200
+++ b/tests/test-wireproto.t	Tue Oct 10 22:40:41 2017 +0200
@@ -72,8 +72,8 @@
   remote: adding manifests
   remote: adding file changes
   remote: added 1 changesets with 1 changes to 1 files (+1 heads)
-  remote: obsmarker-exchange: 151 bytes received
-  remote: 2 new obsolescence markers
+  remote: obsmarker-exchange: 92 bytes received
+  remote: 1 new obsolescence markers
   remote: obsoleted 1 changesets
   $ hg push
   pushing to ssh://user@dummy/server
@@ -91,8 +91,8 @@
   adding manifests
   adding file changes
   added 1 changesets with 1 changes to [12] files \(\+1 heads\) (re)
-  obsmarker-exchange: 151 bytes received
-  2 new obsolescence markers
+  obsmarker-exchange: 92 bytes received
+  1 new obsolescence markers
   obsoleted 1 changesets
   (run 'hg heads' to see heads)
   $ hg -R ../other pull
@@ -115,8 +115,8 @@
   remote: adding manifests
   remote: adding file changes
   remote: added 1 changesets with 1 changes to 1 files
-  remote: obsmarker-exchange: 151 bytes received
-  remote: 2 new obsolescence markers
+  remote: obsmarker-exchange: 92 bytes received
+  remote: 1 new obsolescence markers
   $ hg -R ../other pull
   pulling from ssh://user@dummy/server
   searching for changes
@@ -124,8 +124,8 @@
   adding manifests
   adding file changes
   added 1 changesets with 1 changes to 1 files
-  obsmarker-exchange: 151 bytes received
-  2 new obsolescence markers
+  obsmarker-exchange: 92 bytes received
+  1 new obsolescence markers
   (run 'hg update' to get a working copy)
 
 some common hidden
@@ -138,7 +138,7 @@
   remote: adding manifests
   remote: adding file changes
   remote: added 1 changesets with 0 changes to 1 files (+1 heads)
-  remote: obsmarker-exchange: 226 bytes received
+  remote: obsmarker-exchange: 167 bytes received
   remote: 1 new obsolescence markers
   remote: obsoleted 1 changesets
   $ hg -R ../other pull
@@ -148,7 +148,7 @@
   adding manifests
   adding file changes
   added 1 changesets with 0 changes to 1 files (+1 heads)
-  obsmarker-exchange: 226 bytes received
+  obsmarker-exchange: 167 bytes received
   1 new obsolescence markers
   obsoleted 1 changesets
   (run 'hg heads' to see heads)
@@ -173,7 +173,7 @@
   (skipping discovery of obsolescence markers, will exchange everything)
   (controled by 'experimental.evolution.obsdiscovery' configuration)
   no changes found
-  remote: obsmarker-exchange: 376 bytes received
+  remote: obsmarker-exchange: 258 bytes received
   [1]
   $ hg -R ../other pull --config experimental.evolution.obsdiscovery=no
   pulling from ssh://user@dummy/server
@@ -181,6 +181,6 @@
   no changes found
   (skipping discovery of obsolescence markers, will exchange everything)
   (controled by 'experimental.evolution.obsdiscovery' configuration)
-  obsmarker-exchange: 376 bytes received
+  obsmarker-exchange: 258 bytes received
 
   $ cd ..