changeset 27963:07a5de79ec30 stable

rebase: better way to detect non-detaching revisions (issue5044) Rather than look for the lowest revision, see if the rebase state is tracking the parents of this revision. Otherwise we can't handle multiple revisions in one rebase that includes a merge revision. Fixes issue5044.
author Martijn Pieters <mj@zopatista.com>
date Mon, 01 Feb 2016 15:41:43 +0000
parents 0ec12435b78b
children ac5057d5fc37
files hgext/rebase.py tests/test-rebase-parameters.t
diffstat 2 files changed, 12 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/hgext/rebase.py	Mon Feb 01 22:14:06 2016 +0900
+++ b/hgext/rebase.py	Mon Feb 01 15:41:43 2016 +0000
@@ -712,8 +712,8 @@
     repo.ui.debug(" future parents are %d and %d\n" %
                             (repo[p1].rev(), repo[p2].rev()))
 
-    if rev == min(state):
-        # Case (1) initial changeset of a non-detaching rebase.
+    if not any(p.rev() in state for p in parents):
+        # Case (1) root changeset of a non-detaching rebase set.
         # Let the merge mechanism find the base itself.
         base = None
     elif not repo[rev].p2():
--- a/tests/test-rebase-parameters.t	Mon Feb 01 22:14:06 2016 +0900
+++ b/tests/test-rebase-parameters.t	Mon Feb 01 15:41:43 2016 +0000
@@ -412,6 +412,16 @@
   
   $ cd ..
 
+Rebasing both a single revision and a merge in one command
+
+  $ hg clone -q -u . a aX
+  $ cd aX
+  $ hg rebase -r 3 -r 6
+  rebasing 3:32af7686d403 "D"
+  rebasing 6:eea13746799a "G"
+  saved backup bundle to $TESTTMP/aX/.hg/strip-backup/eea13746799a-ad273fd6-backup.hg (glob)
+  $ cd ..
+
 Test --tool parameter:
 
   $ hg init b