D2876: rebase: allow in-memory merge of the working copy parent
martinvonz (Martin von Zweigbergk)
phabricator at mercurial-scm.org
Sat Mar 17 15:08:38 EDT 2018
This revision was automatically updated to reflect the committed changes.
Closed by commit rHG795eb53f1d3e: rebase: allow in-memory merge of the working copy parent (authored by martinvonz, committed by ).
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D2876?vs=7073&id=7093
REVISION DETAIL
https://phab.mercurial-scm.org/D2876
AFFECTED FILES
hgext/rebase.py
tests/test-rebase-inmemory.t
CHANGE DETAILS
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
@@ -140,12 +140,11 @@
$ ls -l f | cut -c -10
-rwxr-xr-x
-Rebase the working copy parent, which should default to an on-disk merge even if
-we requested in-memory.
+Rebase the working copy parent
$ hg up -C 3
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg rebase -r 3 -d 0 --debug | grep rebasing
- rebasing on disk
+ rebasing in-memory
rebasing 3:753feb6fd12a "c" (tip)
$ hg tglog
@ 3: 844a7de3e617 'c'
diff --git a/hgext/rebase.py b/hgext/rebase.py
--- a/hgext/rebase.py
+++ b/hgext/rebase.py
@@ -599,8 +599,7 @@
if newwd < 0:
# original directory is a parent of rebase set root or ignored
newwd = self.originalwd
- if (newwd not in [c.rev() for c in repo[None].parents()] and
- not self.inmemory):
+ if newwd not in [c.rev() for c in repo[None].parents()]:
ui.note(_("update back to initial working directory parent\n"))
hg.updaterepo(repo, newwd, False)
@@ -957,20 +956,10 @@
ui.status(_('nothing to rebase from %s to %s\n') %
('+'.join(bytes(repo[r]) for r in base), dest))
return None
- # If rebasing the working copy parent, force in-memory merge to be off.
- #
- # This is because the extra work of checking out the newly rebased commit
- # outweights the benefits of rebasing in-memory, and executing an extra
- # update command adds a bit of overhead, so better to just do it on disk. In
- # all other cases leave it on.
- #
- # Note that there are cases where this isn't true -- e.g., rebasing large
- # stacks that include the WCP. However, I'm not yet sure where the cutoff
- # is.
+
rebasingwcp = repo['.'].rev() in rebaseset
ui.log("rebase", "", rebase_rebasing_wcp=rebasingwcp)
if rbsrt.inmemory and rebasingwcp:
- rbsrt.inmemory = False
# Check these since we did not before.
cmdutil.checkunfinished(repo)
cmdutil.bailifchanged(repo)
To: martinvonz, #hg-reviewers, phillco, pulkit
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list