# HG changeset patch # User Stefano Tortarolo # Date 2011-07-18 20:58:21 # Node ID b9daa5b7a3afdf29ad5eb42504f90e4d1d7c903f # Parent d2d592718e907d62ad95f4360211061bcfb5c643 rebase: block collapse with keepbranches on multiple named branches (issue2112) Collapse and keepbranches should be blocked when there is more than one named branch on the branch that's going to be rebased. diff --git a/hgext/rebase.py b/hgext/rebase.py --- a/hgext/rebase.py +++ b/hgext/rebase.py @@ -175,6 +175,14 @@ def rebase(ui, repo, **opts): assert not extrafn, 'cannot use both keepbranches and extrafn' def extrafn(ctx, extra): extra['branch'] = ctx.branch() + if collapsef: + branches = set() + for rev in state: + branches.add(repo[rev].branch()) + if len(branches) > 1: + raise util.Abort(_('cannot collapse multiple named ' + 'branches')) + # Rebase if not targetancestors: diff --git a/tests/test-rebase-collapse.t b/tests/test-rebase-collapse.t --- a/tests/test-rebase-collapse.t +++ b/tests/test-rebase-collapse.t @@ -442,3 +442,41 @@ Rebase and collapse - B onto F: D F +Interactions between collapse and keepbranches + $ cd .. + $ hg init e + $ cd e + $ echo 'a' > a + $ hg ci -Am 'A' + adding a + + $ hg branch '1' + marked working directory as branch 1 + $ echo 'b' > b + $ hg ci -Am 'B' + adding b + + $ hg branch '2' + marked working directory as branch 2 + $ echo 'c' > c + $ hg ci -Am 'C' + adding c + + $ hg up -q 0 + $ echo 'd' > d + $ hg ci -Am 'D' + adding d + + $ hg tglog + @ 3: 'D' + | + | o 2: 'C' 2 + | | + | o 1: 'B' 1 + |/ + o 0: 'A' + + $ hg rebase --keepbranches --collapse -s 1 -d 3 + abort: cannot collapse multiple named branches + [255] +