Mercurial > hg
diff hgext/rebase.py @ 46836:80cac9936324
reabase: call rewriteutil.precheck() a bit later
We now filter out descendants of divergence-causing commits in
`_handleskippingobsolete()`. The filtered-out commits are removed from
the rebase set (`destmap` and `state`). We should therefore call
`rewriteutil.precheck()` after `_handleskippingobsolete()`. This patch
does that. It hasn't mattered so far because `rewriteutil.precheck()`
doesn't yet check for divergence, but it will soon.
This affects one test where we now fail because the user is trying to
rebase an ancestor instead of failing because they tried to rebase a
public commit. We have several similar tests just after, where we
still fail because of the phase, so that seems fine. The difference in
behavior also seems fine to me.
Differential Revision: https://phab.mercurial-scm.org/D10258
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Tue, 23 Mar 2021 14:15:40 -0700 |
parents | c2438f2f635c |
children | 27ba8acd5684 2cdb05da997d |
line wrap: on
line diff
--- a/hgext/rebase.py Tue Mar 23 14:49:31 2021 -0700 +++ b/hgext/rebase.py Tue Mar 23 14:15:40 2021 -0700 @@ -413,15 +413,6 @@ if not destmap: return _nothingtorebase() - rebaseset = destmap.keys() - 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) if not result: @@ -450,6 +441,15 @@ # Calculate self.obsolete_* sets self._handleskippingobsolete() + rebaseset = destmap.keys() + 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 + self.prepared = True def _assignworkingcopy(self):