diff hgext/rebase.py @ 38495:ba6d2c32f34a

rebase: add lock to cover whole dryrun process Before this patch it is easy for another hg to interrupt the dryrun. This patch make sure that dryrun will complete without any interruption. Differential Revision: https://phab.mercurial-scm.org/D3854
author Sushil khanchi <sushilkhanchi97@gmail.com>
date Thu, 28 Jun 2018 23:36:45 +0530
parents 2394cd58b81f
children c92fdc27cbdd
line wrap: on
line diff
--- a/hgext/rebase.py	Tue May 29 00:26:20 2018 +0200
+++ b/hgext/rebase.py	Thu Jun 28 23:36:45 2018 +0530
@@ -818,22 +818,21 @@
         opts[r'dest'] = '_destautoorphanrebase(SRC)'
 
     if dryrun:
-        leaveunfinished = True
-        inmemory = True
-        rbsrt = rebaseruntime(repo, ui, inmemory, pycompat.byteskwargs(opts))
-        try:
-            overrides = {('rebase', 'singletransaction'): True}
-            with ui.configoverride(overrides, 'rebase'):
-                _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:
-            with repo.wlock(), repo.lock():
+        rbsrt = rebaseruntime(repo, ui, inmemory=True,
+                              opts=pycompat.byteskwargs(opts))
+        with repo.wlock(), repo.lock():
+            try:
+                overrides = {('rebase', 'singletransaction'): True}
+                with ui.configoverride(overrides, 'rebase'):
+                    _origrebase(ui, repo, inmemory=True, rbsrt=rbsrt,
+                                leaveunfinished=True, **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:
                 rbsrt._prepareabortorcontinue(isabort=True)
     elif inmemory:
         try: