D1249: rebase: rerun a rebase on-disk if IMM merge conflicts arise
phillco (Phil Cohen)
phabricator at mercurial-scm.org
Thu Dec 7 21:46:04 UTC 2017
phillco updated this revision to Diff 4214.
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D1249?vs=4195&id=4214
REVISION DETAIL
https://phab.mercurial-scm.org/D1249
AFFECTED FILES
hgext/rebase.py
CHANGE DETAILS
diff --git a/hgext/rebase.py b/hgext/rebase.py
--- a/hgext/rebase.py
+++ b/hgext/rebase.py
@@ -646,6 +646,25 @@
cmdutil.formatteropts,
_('[-s REV | -b REV] [-d REV] [OPTION]'))
def rebase(ui, repo, **opts):
+ if opts.get('continue') or opts.get('abort'):
+ # in-memory rebase is not compatible with resuming rebases.
+ opts['inmemory'] = False
+
+ if opts.get('inmemory', False):
+ try:
+ # in-memory merge doesn't support conflicts, so if we hit any, abort
+ # and re-run as an on-disk merge.
+ return _origrebase(ui, repo, **opts)
+ except error.InMemoryMergeConflictsError as e:
+ ui.warn(_('hit merge conflicts; re-running rebase without in-memory'
+ ' merge\n'))
+ _origrebase(ui, repo, **{'abort': True})
+ opts['inmemory'] = False
+ return _origrebase(ui, repo, **opts)
+ else:
+ return _origrebase(ui, repo, **opts)
+
+def _origrebase(ui, repo, **opts):
"""move changeset (and descendants) to a different branch
Rebase uses repeated merging to graft changesets from one part of
To: phillco, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list