Commit 2207ce02 authored by Pulkit Goyal's avatar Pulkit Goyal
Browse files

rewriteutil: use precheck() in uncommit and amend commands

Differential Revision: https://phab.mercurial-scm.org/D1526
parent 490df753894d
......@@ -28,10 +28,10 @@ from mercurial import (
copies,
error,
node,
obsolete,
obsutil,
pycompat,
registrar,
rewriteutil,
scmutil,
)
......@@ -155,23 +155,14 @@ def uncommit(ui, repo, *pats, **opts):
opts = pycompat.byteskwargs(opts)
with repo.wlock(), repo.lock():
wctx = repo[None]
if not pats and not repo.ui.configbool('experimental',
'uncommitondirtywdir'):
cmdutil.bailifchanged(repo)
if wctx.parents()[0].node() == node.nullid:
raise error.Abort(_("cannot uncommit null changeset"))
if len(wctx.parents()) > 1:
raise error.Abort(_("cannot uncommit while merging"))
old = repo['.']
if not old.mutable():
raise error.Abort(_('cannot uncommit public changesets'))
rewriteutil.precheck(repo, [old.rev()], 'uncommit')
if len(old.parents()) > 1:
raise error.Abort(_("cannot uncommit merge changeset"))
allowunstable = obsolete.isenabled(repo, obsolete.allowunstableopt)
if not allowunstable and old.children():
raise error.Abort(_('cannot uncommit changeset with children'))
with repo.transaction('uncommit'):
match = scmutil.match(old, pats, opts)
......
......@@ -49,6 +49,7 @@ from . import (
rcutil,
registrar,
revsetlang,
rewriteutil,
scmutil,
server,
sshserver,
......@@ -1541,13 +1542,7 @@ def _docommit(ui, repo, *pats, **opts):
raise error.Abort(_('cannot amend with ui.commitsubrepos enabled'))
old = repo['.']
if not old.mutable():
raise error.Abort(_('cannot amend public changesets'))
if len(repo[None].parents()) > 1:
raise error.Abort(_('cannot amend while merging'))
allowunstable = obsolete.isenabled(repo, obsolete.allowunstableopt)
if not allowunstable and old.children():
raise error.Abort(_('cannot amend changeset with children'))
rewriteutil.precheck(repo, [old.rev()], 'amend')
# Currently histedit gets confused if an amend happens while histedit
# is in progress. Since we have a checkunfinished command, we are
......
......@@ -213,6 +213,7 @@ Cannot amend public changeset
$ hg update -C -q A
$ hg amend -m AMEND
abort: cannot amend public changesets
(see 'hg help phases' for details)
[255]
Amend a merge changeset
......
......@@ -16,6 +16,7 @@ Refuse to amend public csets:
$ hg phase -r . -p
$ hg ci --amend
abort: cannot amend public changesets
(see 'hg help phases' for details)
[255]
$ hg phase -r . -f -d
......
......@@ -41,6 +41,7 @@ Uncommit with no commits should fail
$ hg uncommit
abort: cannot uncommit null changeset
(no changeset checked out)
[255]
Create some commits
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment