HomePhabricator

rebase: don't run IMM if running rebase in a transaction

Authored by phillco.

Description

rebase: don't run IMM if running rebase in a transaction

Some callers to rebase.rebase(), like _moverelative in fbamend/movement.py,
wrap the entire rebase call in a transaction. This raises havoc when IMM tries
to retry the rebase when it hits merge conflicts, because the abort will fail
the whole transaction, not the subset. It also fails at the end, losing any
conflict resolution, as @sid0 noticed.

The right long-term fix that @quark and I have discussed is to change the
restarting logic such that it doesn't abort at all, but simply switches between
IMM and non-IMM fluidly for each commit, which has other nice properties. In
the meantime this will do for now.

Differential Revision: https://phab.mercurial-scm.org/D1782

Details

Committed
phillcoDec 27 2017, 6:38 PM
Differential Revision
D1782: rebase: don't run IMM if running rebase in a transaction
Parents
rHGa71316bfac87: python3: whitelist two more passing tests
Branches
Unknown
Tags
Unknown