split: use precheck to validate revision
This gives us standard check and standard error message.
--- a/README Mon Jul 24 01:45:03 2017 +0200
+++ b/README Sun Jul 23 20:33:19 2017 +0200
@@ -126,6 +126,7 @@
- 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
- 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
--- a/hgext3rd/evolve/cmdrewrite.py Mon Jul 24 01:45:03 2017 +0200
+++ b/hgext3rd/evolve/cmdrewrite.py Sun Jul 23 20:33:19 2017 +0200
@@ -781,14 +781,9 @@
lock = repo.lock()
rev = scmutil.revsingle(repo, revarg[0])
cmdutil.bailifchanged(repo)
+ rewriteutil.precheck(repo, [rev], action='split')
tr = repo.transaction('split')
ctx = repo[rev]
- disallowunstable = not obsolete.isenabled(repo,
- obsolete.allowunstableopt)
- if disallowunstable:
- # XXX We should check head revs
- if repo.revs("(%d::) - %d", rev, rev):
- raise error.Abort(_("cannot split commit: %s not a head") % ctx)
if len(ctx.parents()) > 1:
raise error.Abort(_("cannot split merge commits"))
--- a/tests/test-split.t Mon Jul 24 01:45:03 2017 +0200
+++ b/tests/test-split.t Sun Jul 23 20:33:19 2017 +0200
@@ -131,10 +131,21 @@
$ hg split
abort: uncommitted changes
[255]
+ $ hg up "desc(_c)" -C
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+
+Cannot split public changeset
+
+ $ hg phase --rev 'desc("_a")'
+ 0: draft
+ $ hg phase --rev 'desc("_a")' --public
+ $ hg split --rev 'desc("_a")'
+ abort: cannot split public changesets: 135f39f4bd78
+ (see 'hg help phases' for details)
+ [255]
+ $ hg phase --rev 'desc("_a")' --draft --force
Split a revision specified with -r
- $ hg up "desc(_c)" -C
- 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo "change to b" >> _b
$ hg amend -m "_cprim"
2 new unstable changesets
@@ -338,7 +349,8 @@
> evolutioncommands=split
> EOF
$ hg split -r "desc(split3)"
- abort: cannot split commit: ead2066d1dbf not a head
+ abort: split will orphan 4 descendants
+ (see 'hg help evolution.instability')
[255]
Changing evolution level to createmarkers