diff -r 749b057b01f3 -r cf8ad0e6c0e4 hgext/rebase.py --- a/hgext/rebase.py Tue Mar 07 16:30:31 2017 -0800 +++ b/hgext/rebase.py Tue Mar 07 16:27:32 2017 -0800 @@ -343,7 +343,7 @@ if dest.closesbranch() and not self.keepbranchesf: self.ui.status(_('reopening closed branch head %s\n') % dest) - def _performrebase(self): + def _performrebase(self, tr): repo, ui, opts = self.repo, self.ui, self.opts if self.keepbranchesf: # insert _savebranch at the start of extrafns so if @@ -393,7 +393,7 @@ self.state, self.targetancestors, self.obsoletenotrebased) - self.storestatus() + self.storestatus(tr=tr) storecollapsemsg(repo, self.collapsemsg) if len(repo[None].parents()) == 2: repo.ui.debug('resuming interrupted rebase\n') @@ -711,7 +711,12 @@ if retcode is not None: return retcode - rbsrt._performrebase() + with repo.transaction('rebase') as tr: + try: + rbsrt._performrebase(tr) + except error.InterventionRequired: + tr.close() + raise rbsrt._finishrebase() finally: release(lock, wlock)