fix: use rewriteutil.precheck() instead of reimplementing it
Differential Revision: https://phab.mercurial-scm.org/D7687
--- a/hgext/fix.py Tue Dec 17 11:09:22 2019 -0800
+++ b/hgext/fix.py Tue Dec 17 10:55:50 2019 -0800
@@ -144,9 +144,9 @@
match as matchmod,
mdiff,
merge,
- obsolete,
pycompat,
registrar,
+ rewriteutil,
scmutil,
util,
worker,
@@ -403,7 +403,7 @@
checkfixablectx(ui, repo, repo[rev])
if revs:
cmdutil.checkunfinished(repo)
- checknodescendants(repo, revs)
+ rewriteutil.precheck(repo, revs, b'fix')
if opts.get(b'working_dir'):
revs.add(wdirrev)
if list(merge.mergestate.read(repo).unresolved()):
@@ -415,22 +415,8 @@
return revs
-def checknodescendants(repo, revs):
- if not obsolete.isenabled(repo, obsolete.allowunstableopt) and repo.revs(
- b'(%ld::) - (%ld)', revs, revs
- ):
- raise error.Abort(
- _(b'can only fix a changeset together with all its descendants')
- )
-
-
def checkfixablectx(ui, repo, ctx):
"""Aborts if the revision shouldn't be replaced with a fixed one."""
- if not ctx.mutable():
- raise error.Abort(
- b'can\'t fix immutable changeset %s'
- % (scmutil.formatchangeid(ctx),)
- )
if ctx.obsolete():
# It would be better to actually check if the revision has a successor.
allowdivergence = ui.configbool(
--- a/tests/test-fix.t Tue Dec 17 11:09:22 2019 -0800
+++ b/tests/test-fix.t Tue Dec 17 10:55:50 2019 -0800
@@ -264,10 +264,12 @@
$ hg commit -Aqm "hello"
$ hg phase -r 0 --public
$ hg fix -r 0
- abort: can't fix immutable changeset 0:6470986d2e7b
+ abort: cannot fix public changesets
+ (see 'hg help phases' for details)
[255]
$ hg fix -r 0 --working-dir
- abort: can't fix immutable changeset 0:6470986d2e7b
+ abort: cannot fix public changesets
+ (see 'hg help phases' for details)
[255]
$ hg cat -r tip hello.whole
hello
@@ -1171,7 +1173,7 @@
$ printf "two\n" > foo.whole
$ hg commit -m "second"
$ hg --config experimental.evolution.allowunstable=False fix -r '.^'
- abort: can only fix a changeset together with all its descendants
+ abort: cannot fix changeset with children
[255]
$ hg fix -r '.^'
1 new orphan changesets