hgext/rebase.py
changeset 38504 02004e5c6b56
parent 38503 999e5c218daf
child 38505 53800d6eed26
equal deleted inserted replaced
38503:999e5c218daf 38504:02004e5c6b56
   817         userrevs = list(repo.revs(opts.get(r'auto_orphans')))
   817         userrevs = list(repo.revs(opts.get(r'auto_orphans')))
   818         opts[r'rev'] = [revsetlang.formatspec('%ld and orphan()', userrevs)]
   818         opts[r'rev'] = [revsetlang.formatspec('%ld and orphan()', userrevs)]
   819         opts[r'dest'] = '_destautoorphanrebase(SRC)'
   819         opts[r'dest'] = '_destautoorphanrebase(SRC)'
   820 
   820 
   821     if dryrun:
   821     if dryrun:
   822         return _dryrunrebase(ui, repo, **opts)
   822         return _dryrunrebase(ui, repo, opts)
   823     elif inmemory:
   823     elif inmemory:
   824         try:
   824         try:
   825             # in-memory merge doesn't support conflicts, so if we hit any, abort
   825             # in-memory merge doesn't support conflicts, so if we hit any, abort
   826             # and re-run as an on-disk merge.
   826             # and re-run as an on-disk merge.
   827             overrides = {('rebase', 'singletransaction'): True}
   827             overrides = {('rebase', 'singletransaction'): True}
   828             with ui.configoverride(overrides, 'rebase'):
   828             with ui.configoverride(overrides, 'rebase'):
   829                 return _dorebase(ui, repo, inmemory=inmemory, **opts)
   829                 return _dorebase(ui, repo, opts, inmemory=inmemory)
   830         except error.InMemoryMergeConflictsError:
   830         except error.InMemoryMergeConflictsError:
   831             ui.warn(_('hit merge conflicts; re-running rebase without in-memory'
   831             ui.warn(_('hit merge conflicts; re-running rebase without in-memory'
   832                       ' merge\n'))
   832                       ' merge\n'))
   833             _dorebase(ui, repo, abort=True)
   833             _dorebase(ui, repo, {r'abort': True})
   834             return _dorebase(ui, repo, inmemory=False, **opts)
   834             return _dorebase(ui, repo, opts, inmemory=False)
   835     else:
   835     else:
   836         return _dorebase(ui, repo, **opts)
   836         return _dorebase(ui, repo, opts)
   837 
   837 
   838 def _dryrunrebase(ui, repo, **opts):
   838 def _dryrunrebase(ui, repo, opts):
   839     rbsrt = rebaseruntime(repo, ui, inmemory=True,
   839     rbsrt = rebaseruntime(repo, ui, inmemory=True,
   840                           opts=pycompat.byteskwargs(opts))
   840                           opts=pycompat.byteskwargs(opts))
   841     with repo.wlock(), repo.lock():
   841     with repo.wlock(), repo.lock():
   842         try:
   842         try:
   843             overrides = {('rebase', 'singletransaction'): True}
   843             overrides = {('rebase', 'singletransaction'): True}
   844             with ui.configoverride(overrides, 'rebase'):
   844             with ui.configoverride(overrides, 'rebase'):
   845                 _origrebase(ui, repo, rbsrt, inmemory=True,
   845                 _origrebase(ui, repo, opts, rbsrt, inmemory=True,
   846                             leaveunfinished=True, **opts)
   846                             leaveunfinished=True)
   847         except error.InMemoryMergeConflictsError:
   847         except error.InMemoryMergeConflictsError:
   848             ui.status(_('hit a merge conflict\n'))
   848             ui.status(_('hit a merge conflict\n'))
   849             return 1
   849             return 1
   850         else:
   850         else:
   851             ui.status(_('there will be no conflict, you can rebase\n'))
   851             ui.status(_('there will be no conflict, you can rebase\n'))
   853         finally:
   853         finally:
   854             # no need to store backup in case of dryrun
   854             # no need to store backup in case of dryrun
   855             rbsrt._prepareabortorcontinue(isabort=True, backup=False,
   855             rbsrt._prepareabortorcontinue(isabort=True, backup=False,
   856                                           suppwarns=True)
   856                                           suppwarns=True)
   857 
   857 
   858 def _dorebase(ui, repo, inmemory=False, **opts):
   858 def _dorebase(ui, repo, opts, inmemory=False):
   859     rbsrt = rebaseruntime(repo, ui, inmemory, pycompat.byteskwargs(opts))
   859     rbsrt = rebaseruntime(repo, ui, inmemory, pycompat.byteskwargs(opts))
   860     return _origrebase(ui, repo, rbsrt, inmemory=inmemory, **opts)
   860     return _origrebase(ui, repo, opts, rbsrt, inmemory=inmemory)
   861 
   861 
   862 def _origrebase(ui, repo, rbsrt, inmemory=False, leaveunfinished=False, **opts):
   862 def _origrebase(ui, repo, opts, rbsrt, inmemory=False, leaveunfinished=False):
   863     opts = pycompat.byteskwargs(opts)
   863     opts = pycompat.byteskwargs(opts)
   864     with repo.wlock(), repo.lock():
   864     with repo.wlock(), repo.lock():
   865         # Validate input and define rebasing points
   865         # Validate input and define rebasing points
   866         destf = opts.get('dest', None)
   866         destf = opts.get('dest', None)
   867         srcf = opts.get('source', None)
   867         srcf = opts.get('source', None)