Patchwork D3827: rebase: no need to store backup during dry-run while aborting

login
register
mail settings
Submitter phabricator
Date June 24, 2018, 9:30 a.m.
Message ID <73ebb0c5e1cb55db86e7b07a210ed6bf@localhost.localdomain>
Download mbox | patch
Permalink /patch/32395/
State Not Applicable
Headers show

Comments

phabricator - June 24, 2018, 9:30 a.m.
khanchi97 updated this revision to Diff 9265.

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D3827?vs=9262&id=9265

REVISION DETAIL
  https://phab.mercurial-scm.org/D3827

AFFECTED FILES
  hgext/rebase.py
  tests/test-rebase-inmemory.t

CHANGE DETAILS




To: khanchi97, #hg-reviewers
Cc: yuja, mercurial-devel
Yuya Nishihara - June 25, 2018, 12:14 p.m.
> -            retcode = rbsrt._prepareabortorcontinue(abortf)
> +            # If in-memory, means aborting during dry-run, no need to backup
> +            backup = not rbsrt.inmemory
> +            retcode = rbsrt._prepareabortorcontinue(abortf, backup=backup)

This seems confusing and is probably wrong since we wouldn't overwrite
`inmemory` to `False` if in-memory rebase were resumable.

I think explicit `backup` flag is less bad.
phabricator - June 25, 2018, 12:14 p.m.
yuja added a comment.


  > - retcode = rbsrt._prepareabortorcontinue(abortf) +            # If in-memory, means aborting during dry-run, no need to backup +            backup = not rbsrt.inmemory +            retcode = rbsrt._prepareabortorcontinue(abortf, backup=backup)
  
  This seems confusing and is probably wrong since we wouldn't overwrite
  `inmemory` to `False` if in-memory rebase were resumable.
  
  I think explicit `backup` flag is less bad.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D3827

To: khanchi97, #hg-reviewers
Cc: yuja, mercurial-devel

Patch

diff --git a/tests/test-rebase-inmemory.t b/tests/test-rebase-inmemory.t
--- a/tests/test-rebase-inmemory.t
+++ b/tests/test-rebase-inmemory.t
@@ -212,7 +212,6 @@ 
   rebasing 3:055a42cdd887 "d"
   rebasing 4:e860deea161a "e"
   there will be no conflict, you can rebase
-  saved backup bundle to $TESTTMP/repo1/repo2/skrepo/.hg/strip-backup/c83b1da5b1ae-f1e0beb9-backup.hg
   rebase aborted
 
   $ hg diff
diff --git a/hgext/rebase.py b/hgext/rebase.py
--- a/hgext/rebase.py
+++ b/hgext/rebase.py
@@ -325,7 +325,7 @@ 
         skippedset.update(obsoleteextinctsuccessors)
         _checkobsrebase(self.repo, self.ui, obsoleteset, skippedset)
 
-    def _prepareabortorcontinue(self, isabort):
+    def _prepareabortorcontinue(self, isabort, backup=True):
         try:
             self.restorestatus()
             self.collapsemsg = restorecollapsemsg(self.repo, isabort)
@@ -341,8 +341,8 @@ 
                 hint = _('use "hg rebase --abort" to clear broken state')
                 raise error.Abort(msg, hint=hint)
         if isabort:
-            return abort(self.repo, self.originalwd, self.destmap,
-                         self.state, activebookmark=self.activebookmark)
+            return abort(self.repo, self.originalwd, self.destmap, self.state,
+                         activebookmark=self.activebookmark, backup=backup)
 
     def _preparenewrebase(self, destmap):
         if not destmap:
@@ -828,7 +828,7 @@ 
         else:
             ui.status(_('there will be no conflict, you can rebase\n'))
         finally:
-            _origrebase(ui, repo, abort=True)
+            _origrebase(ui, repo, inmemory=True, abort=True)
     elif inmemory:
         try:
             # in-memory merge doesn't support conflicts, so if we hit any, abort
@@ -889,7 +889,9 @@ 
                 ms = mergemod.mergestate.read(repo)
                 mergeutil.checkunresolved(ms)
 
-            retcode = rbsrt._prepareabortorcontinue(abortf)
+            # If in-memory, means aborting during dry-run, no need to backup
+            backup = not rbsrt.inmemory
+            retcode = rbsrt._prepareabortorcontinue(abortf, backup=backup)
             if retcode is not None:
                 return retcode
         else:
@@ -1543,7 +1545,7 @@ 
 
     return False
 
-def abort(repo, originalwd, destmap, state, activebookmark=None):
+def abort(repo, originalwd, destmap, state, activebookmark=None, backup=True):
     '''Restore the repository to its original state.  Additional args:
 
     activebookmark: the name of the bookmark that should be active after the
@@ -1588,7 +1590,7 @@ 
 
             # Strip from the first rebased revision
             if rebased:
-                repair.strip(repo.ui, repo, strippoints)
+                    repair.strip(repo.ui, repo, strippoints, backup=backup)
 
         if activebookmark and activebookmark in repo._bookmarks:
             bookmarks.activate(repo, activebookmark)