comparison hgext/rebase.py @ 35320:d901a88891fe

rebase: rerun a rebase on-disk if IMM merge conflicts arise Differential Revision: https://phab.mercurial-scm.org/D1249
author Phil Cohen <phillco@fb.com>
date Fri, 08 Dec 2017 12:14:38 -0800
parents 228916ca12b5
children 03bec089e105
comparison
equal deleted inserted replaced
35319:228916ca12b5 35320:d901a88891fe
757 757
758 Returns 0 on success, 1 if nothing to rebase or there are 758 Returns 0 on success, 1 if nothing to rebase or there are
759 unresolved conflicts. 759 unresolved conflicts.
760 760
761 """ 761 """
762 if opts.get('continue') or opts.get('abort'):
763 # in-memory rebase is not compatible with resuming rebases.
764 opts['inmemory'] = False
765
766 if opts.get('inmemory', False):
767 try:
768 # in-memory merge doesn't support conflicts, so if we hit any, abort
769 # and re-run as an on-disk merge.
770 return _origrebase(ui, repo, **opts)
771 except error.InMemoryMergeConflictsError:
772 ui.warn(_('hit merge conflicts; re-running rebase without in-memory'
773 ' merge\n'))
774 _origrebase(ui, repo, **{'abort': True})
775 opts['inmemory'] = False
776 return _origrebase(ui, repo, **opts)
777 else:
778 return _origrebase(ui, repo, **opts)
779
780 def _origrebase(ui, repo, **opts):
762 opts = pycompat.byteskwargs(opts) 781 opts = pycompat.byteskwargs(opts)
763 if 'inmemory' not in opts: 782 if 'inmemory' not in opts:
764 opts['inmemory'] = False 783 opts['inmemory'] = False
765 rbsrt = rebaseruntime(repo, ui, opts) 784 rbsrt = rebaseruntime(repo, ui, opts)
766 785