rebase: block collapse with keepbranches on multiple named branches (issue2112) stable
authorStefano Tortarolo <stefano.tortarolo@gmail.com>
Mon, 18 Jul 2011 22:58:21 +0200
branchstable
changeset 14897 b9daa5b7a3af
parent 14892 d2d592718e90
child 14898 95ced9f5bf29
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.
hgext/rebase.py
tests/test-rebase-collapse.t
--- a/hgext/rebase.py	Sat Jul 16 15:24:28 2011 +0300
+++ b/hgext/rebase.py	Mon Jul 18 22:58:21 2011 +0200
@@ -175,6 +175,14 @@
             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:
--- a/tests/test-rebase-collapse.t	Sat Jul 16 15:24:28 2011 +0300
+++ b/tests/test-rebase-collapse.t	Mon Jul 18 22:58:21 2011 +0200
@@ -442,3 +442,41 @@
   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]
+