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.
--- 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