D1526: rewriteutil: use precheck() in uncommit and amend commands
pulkit (Pulkit Goyal)
phabricator at mercurial-scm.org
Tue Dec 5 23:01:19 UTC 2017
This revision was automatically updated to reflect the committed changes.
Closed by commit rHG98f97eb20597: rewriteutil: use precheck() in uncommit and amend commands (authored by pulkit, committed by ).
CHANGED PRIOR TO COMMIT
https://phab.mercurial-scm.org/D1526?vs=3901&id=4146#toc
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D1526?vs=3901&id=4146
REVISION DETAIL
https://phab.mercurial-scm.org/D1526
AFFECTED FILES
hgext/uncommit.py
mercurial/commands.py
tests/test-amend.t
tests/test-commit-amend.t
tests/test-uncommit.t
CHANGE DETAILS
diff --git a/tests/test-uncommit.t b/tests/test-uncommit.t
--- a/tests/test-uncommit.t
+++ b/tests/test-uncommit.t
@@ -41,6 +41,7 @@
$ hg uncommit
abort: cannot uncommit null changeset
+ (no changeset checked out)
[255]
Create some commits
diff --git a/tests/test-commit-amend.t b/tests/test-commit-amend.t
--- a/tests/test-commit-amend.t
+++ b/tests/test-commit-amend.t
@@ -16,6 +16,7 @@
$ hg phase -r . -p
$ hg ci --amend
abort: cannot amend public changesets
+ (see 'hg help phases' for details)
[255]
$ hg phase -r . -f -d
diff --git a/tests/test-amend.t b/tests/test-amend.t
--- a/tests/test-amend.t
+++ b/tests/test-amend.t
@@ -213,6 +213,7 @@
$ 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
diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -49,6 +49,7 @@
rcutil,
registrar,
revsetlang,
+ rewriteutil,
scmutil,
server,
sshserver,
@@ -1541,13 +1542,7 @@
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
diff --git a/hgext/uncommit.py b/hgext/uncommit.py
--- a/hgext/uncommit.py
+++ b/hgext/uncommit.py
@@ -28,10 +28,10 @@
copies,
error,
node,
- obsolete,
obsutil,
pycompat,
registrar,
+ rewriteutil,
scmutil,
)
@@ -155,23 +155,14 @@
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)
To: pulkit, #hg-reviewers, dlax, durin42
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list