Mercurial > hg
diff hgext/rebase.py @ 43934:71fee4564410
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
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Wed, 18 Dec 2019 09:18:02 +0300 |
parents | 9fb9f3a5cad7 |
children | d77230743968 |
line wrap: on
line diff
--- a/hgext/rebase.py Tue Dec 17 10:53:51 2019 -0800 +++ b/hgext/rebase.py Wed Dec 18 09:18:02 2019 +0300 @@ -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())