# HG changeset patch # User Martijn Pieters # Date 2016-02-01 15:41:43 # Node ID 07a5de79ec30620d534729fb71c2a6d302eef852 # Parent 0ec12435b78bf5e06827b057c9a6a363d6eba06e 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. diff --git a/hgext/rebase.py b/hgext/rebase.py --- a/hgext/rebase.py +++ b/hgext/rebase.py @@ -712,8 +712,8 @@ def defineparents(repo, rev, target, sta 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(): diff --git a/tests/test-rebase-parameters.t b/tests/test-rebase-parameters.t --- a/tests/test-rebase-parameters.t +++ b/tests/test-rebase-parameters.t @@ -412,6 +412,16 @@ Specify only revs (from 2 onto 8) $ 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