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