Skip to content
Snippets Groups Projects
Commit 71fee456 authored by Martin von Zweigbergk's avatar Martin von Zweigbergk
Browse files

rebase: use rewriteutil.precheck() instead of reimplementing it

After this patch, there's still another place in `rebase.py`, in the
`--stop` code path, that reimplements `rewriteutil.precheck()`. I
couldn't fix that place because it `rewriteutil.precheck()` checks
that there is only one dirstate parent, which fails because we have
two parents at that point. I think it's incorrect that rebase leaves
the user with two parents during conflicts, but changing that is way
out of scope for this series.

Differential Revision: https://phab.mercurial-scm.org/D7685
parent bde97bee
No related branches found
No related tags found
No related merge requests found
......@@ -46,6 +46,7 @@
repair,
revset,
revsetlang,
rewriteutil,
scmutil,
smartset,
state as statemod,
......@@ -393,17 +394,13 @@
return _nothingtorebase()
rebaseset = destmap.keys()
allowunstable = obsolete.isenabled(self.repo, obsolete.allowunstableopt)
if not (self.keepf or allowunstable) and self.repo.revs(
b'first(children(%ld) - %ld)', rebaseset, rebaseset
):
raise error.Abort(
_(
b"can't remove original changesets with"
b" unrebased descendants"
),
hint=_(b'use --keep to keep original changesets'),
)
if not self.keepf:
try:
rewriteutil.precheck(self.repo, rebaseset, action=b'rebase')
except error.Abort as e:
if e.hint is None:
e.hint = b'use --keep to keep original changesets'
raise e
result = buildstate(self.repo, destmap, self.collapsef)
......@@ -412,13 +409,6 @@
self.ui.status(_(b'nothing to rebase\n'))
return _nothingtorebase()
for root in self.repo.set(b'roots(%ld)', rebaseset):
if not self.keepf and not root.mutable():
raise error.Abort(
_(b"can't rebase public changeset %s") % root,
hint=_(b"see 'hg help phases' for details"),
)
(self.originalwd, self.destmap, self.state) = result
if self.collapsef:
dests = set(self.destmap.values())
......
......@@ -592,7 +592,7 @@
o 0: f447d5abf5ea 'add'
$ hg rebase --collapse -r 1 -d 0
abort: can't remove original changesets with unrebased descendants
abort: cannot rebase changeset with children
(use --keep to keep original changesets)
[255]
......
......@@ -325,6 +325,7 @@
$ hg pull --config phases.publish=True -q -r 6 . # update phase of 6
$ hg rebase -d 0 -b 6
nothing to rebase
[1]
abort: cannot rebase public changesets
(see 'hg help phases' for details)
[255]
$ hg rebase -d 5 -b 6
......@@ -330,5 +331,5 @@
$ hg rebase -d 5 -b 6
abort: can't rebase public changeset e1c4361dd923
abort: cannot rebase public changesets
(see 'hg help phases' for details)
[255]
$ hg rebase -d 5 -r '1 + (6::)'
......@@ -332,7 +333,7 @@
(see 'hg help phases' for details)
[255]
$ hg rebase -d 5 -r '1 + (6::)'
abort: can't rebase public changeset e1c4361dd923
abort: cannot rebase public changesets
(see 'hg help phases' for details)
[255]
......@@ -452,7 +453,7 @@
$ hg clone -q -u . ah ah1
$ cd ah1
$ hg rebase -r '2::8' -d 1
abort: can't remove original changesets with unrebased descendants
abort: cannot rebase changeset with children
(use --keep to keep original changesets)
[255]
$ hg rebase -r '2::8' -d 1 -k
......@@ -498,7 +499,7 @@
$ hg clone -q -u . ah ah2
$ cd ah2
$ hg rebase -r '3::8' -d 1
abort: can't remove original changesets with unrebased descendants
abort: cannot rebase changeset with children
(use --keep to keep original changesets)
[255]
$ hg rebase -r '3::8' -d 1 --keep
......@@ -541,7 +542,7 @@
$ hg clone -q -u . ah ah3
$ cd ah3
$ hg rebase -r '3::7' -d 1
abort: can't remove original changesets with unrebased descendants
abort: cannot rebase changeset with children
(use --keep to keep original changesets)
[255]
$ hg rebase -r '3::7' -d 1 --keep
......@@ -581,7 +582,7 @@
$ hg clone -q -u . ah ah4
$ cd ah4
$ hg rebase -r '3::(7+5)' -d 1
abort: can't remove original changesets with unrebased descendants
abort: cannot rebase changeset with children
(use --keep to keep original changesets)
[255]
$ hg rebase -r '3::(7+5)' -d 1 --keep
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment