# HG changeset patch # User Nathan Goldbaum # Date 1414544788 25200 # Node ID 160fd06312fcd2e86ab6d22131286f1f2c2eba66 # Parent 9d85fd6e14744a5800584658a5a23eb87d62aee3 uncommit: abort when rev specifies the current changeset The uncommit command now fails when the rev argument indicates the current changeset. Previously this aborted in the changeset obsolescence machinery when the current commit tries to obsolete itself. Using the rev argument like this indicates a misunderstanding, so printing an uncommit-specific error should make it easier to understand what went wrong. diff --git a/hgext/evolve.py b/hgext/evolve.py --- a/hgext/evolve.py +++ b/hgext/evolve.py @@ -1987,6 +1987,9 @@ rev = None if opts.get('rev'): rev = scmutil.revsingle(repo, opts.get('rev')) + ctx = repo[None] + if ctx.p1() == rev or ctx.p2() == rev: + raise util.Abort(_("cannot uncommit to parent changeset")) # Recommit the filtered changeset tr = repo.transaction('uncommit') diff --git a/tests/test-uncommit.t b/tests/test-uncommit.t --- a/tests/test-uncommit.t +++ b/tests/test-uncommit.t @@ -347,6 +347,9 @@ $ hg cat b --rev 0 b: no such file in rev 07f494440405 [1] + $ hg uncommit --rev . b + abort: cannot uncommit to parent changeset + [255] $ hg uncommit --rev 0 b $ hg cat b --rev . b: no such file in rev 5b27f6b17da2