From patchwork Wed Jun 27 14:26:02 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: D3849: rebase: refactor dryrun implementation From: phabricator X-Patchwork-Id: 32462 Message-Id: To: mercurial-devel@mercurial-scm.org Date: Wed, 27 Jun 2018 14:26:02 +0000 khanchi97 updated this revision to Diff 9324. REPOSITORY rHG Mercurial CHANGES SINCE LAST UPDATE https://phab.mercurial-scm.org/D3849?vs=9321&id=9324 REVISION DETAIL https://phab.mercurial-scm.org/D3849 AFFECTED FILES hgext/rebase.py CHANGE DETAILS To: khanchi97, #hg-reviewers Cc: yuja, mercurial-devel diff --git a/hgext/rebase.py b/hgext/rebase.py --- a/hgext/rebase.py +++ b/hgext/rebase.py @@ -818,19 +818,23 @@ opts[r'dest'] = '_destautoorphanrebase(SRC)' if dryrun: + leaveunfinished = True + inmemory = True + rbsrt = rebaseruntime(repo, ui, inmemory, opts) try: overrides = {('rebase', 'singletransaction'): True} with ui.configoverride(overrides, 'rebase'): - _origrebase(ui, repo, inmemory=True, leaveunfinished=True, - **opts) + _origrebase(ui, repo, inmemory=True, rbsrt=rbsrt, + leaveunfinished=leaveunfinished, **opts) except error.InMemoryMergeConflictsError: ui.status(_('hit a merge conflict\n')) return 1 else: ui.status(_('there will be no conflict, you can rebase\n')) return 0 finally: - _origrebase(ui, repo, abort=True) + with repo.wlock(), repo.lock(): + rbsrt._prepareabortorcontinue(isabort=True) elif inmemory: try: # in-memory merge doesn't support conflicts, so if we hit any, abort @@ -846,9 +850,11 @@ else: return _origrebase(ui, repo, **opts) -def _origrebase(ui, repo, inmemory=False, leaveunfinished=False, **opts): +def _origrebase(ui, repo, inmemory=False, leaveunfinished=False, rbsrt=None, + **opts): opts = pycompat.byteskwargs(opts) - rbsrt = rebaseruntime(repo, ui, inmemory, opts) + if not rbsrt: + rbsrt = rebaseruntime(repo, ui, inmemory, opts) with repo.wlock(), repo.lock(): # Validate input and define rebasing points