From patchwork Wed Oct 29 01:07:42 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [evolve-ext] uncommit: abort when rev specifies the current changeset From: Nathan Goldbaum X-Patchwork-Id: 6490 Message-Id: <34989d80484df48893be.1414544862@ROUS> To: mercurial-devel@selenic.com Date: Tue, 28 Oct 2014 18:07:42 -0700 # HG changeset patch # User Nathan Goldbaum # Date 1414544788 25200 # Tue Oct 28 18:06:28 2014 -0700 # Node ID 34989d80484df48893be948ff0a47dd33aaeaf2e # Parent b7d85cd8ec7bd5a4ba5a61d156745269a999450b 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 -r b7d85cd8ec7b -r 34989d80484d hgext/evolve.py --- a/hgext/evolve.py Sat Oct 25 22:25:42 2014 -0400 +++ b/hgext/evolve.py Tue Oct 28 18:06:28 2014 -0700 @@ -1979,6 +1979,9 @@ rev = None if opts.get('rev'): rev = scmutil.revsingle(repo, opts.get('rev')) + if repo[None].p1() == rev: + raise util.Abort(_('cannot reapply changes to the current ' + 'changeset')) # Recommit the filtered changeset tr = repo.transaction('uncommit') diff -r b7d85cd8ec7b -r 34989d80484d tests/test-uncommit.t --- a/tests/test-uncommit.t Sat Oct 25 22:25:42 2014 -0400 +++ b/tests/test-uncommit.t Tue Oct 28 18:06:28 2014 -0700 @@ -347,6 +347,9 @@ $ hg cat b --rev 0 b: no such file in rev 07f494440405 [1] + $ hg uncommit --rev . b + abort: cannot reapply changes to the current changeset + [255] $ hg uncommit --rev 0 b $ hg cat b --rev . b: no such file in rev 5b27f6b17da2