# HG changeset patch # User Phil Cohen # Date 1512681923 28800 # Node ID 482614b3802a9f30ee12c69e273835825c499901 # Parent 2f8c476c49fe6c801be5b77feca2b3a27bc0a6ee rebase: add the --inmemory option flag; assign a wctx object for the rebase In the future, the --inmemory flag might be deprecated in favor of something more intelligent (for example, always rebasing in-memory if the working copy parent isn't in the rebaseset). But we might keep it as a way to explicitly force IMM on or off. Differential Revision: https://phab.mercurial-scm.org/D1232 diff -r 2f8c476c49fe -r 482614b3802a hgext/rebase.py --- a/hgext/rebase.py Thu Dec 07 13:20:47 2017 -0800 +++ b/hgext/rebase.py Thu Dec 07 13:25:23 2017 -0800 @@ -179,6 +179,7 @@ self.keepopen = opts.get('keepopen', False) self.obsoletenotrebased = {} self.obsoletewithoutsuccessorindestination = set() + self.inmemory = opts.get('inmemory', False) @property def repo(self): @@ -383,6 +384,12 @@ def _performrebase(self, tr): repo, ui = self.repo, self.ui + # Assign a working copy object. + if self.inmemory: + from mercurial.context import overlayworkingctx + self.wctx = overlayworkingctx(self.repo) + else: + self.wctx = self.repo[None] if self.keepbranchesf: # insert _savebranch at the start of extrafns so if # there's a user-provided extrafn it can clobber branch if @@ -608,6 +615,7 @@ ('i', 'interactive', False, _('(DEPRECATED)')), ('t', 'tool', '', _('specify merge tool')), ('c', 'continue', False, _('continue an interrupted rebase')), + ('', 'inmemory', False, _('run rebase in-memory (EXPERIMENTAL)')), ('a', 'abort', False, _('abort an interrupted rebase'))] + cmdutil.formatteropts, _('[-s REV | -b REV] [-d REV] [OPTION]')) @@ -726,6 +734,8 @@ """ opts = pycompat.byteskwargs(opts) + if 'inmemory' not in opts: + opts['inmemory'] = False rbsrt = rebaseruntime(repo, ui, opts) with repo.wlock(), repo.lock():