tests/test-rebase-collapse.t
changeset 12608 16b854cb80f1
parent 11208 2313dc4d9817
child 12640 6cc4b14fb76b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-rebase-collapse.t	Fri Oct 01 16:10:06 2010 +0200
@@ -0,0 +1,441 @@
+  $ cat >> $HGRCPATH <<EOF
+  > [extensions]
+  > graphlog=
+  > rebase=
+  > 
+  > [alias]
+  > tglog = log -G --template "{rev}: '{desc}' {branches}\n"
+  > EOF
+
+Create repo a:
+
+  $ hg init a
+  $ cd a
+
+  $ echo A > A
+  $ hg ci -Am A
+  adding A
+  $ echo B > B
+  $ hg ci -Am B
+  adding B
+  $ echo C > C
+  $ hg ci -Am C
+  adding C
+  $ echo D > D
+  $ hg ci -Am D
+  adding D
+
+  $ hg up -q -C 0
+
+  $ echo E > E
+  $ hg ci -Am E
+  adding E
+  created new head
+
+  $ hg up -q -C 0
+
+  $ echo F > F
+  $ hg ci -Am F
+  adding F
+  created new head
+
+  $ hg merge -r 4
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  (branch merge, don't forget to commit)
+  $ hg ci -m G
+
+  $ hg up -q -C 5
+
+  $ echo H > H
+  $ hg ci -Am H
+  adding H
+  created new head
+
+  $ hg tglog
+  @  7: 'H'
+  |
+  | o  6: 'G'
+  |/|
+  o |  5: 'F'
+  | |
+  | o  4: 'E'
+  |/
+  | o  3: 'D'
+  | |
+  | o  2: 'C'
+  | |
+  | o  1: 'B'
+  |/
+  o  0: 'A'
+  
+  $ cd ..
+
+
+Rebasing B onto H:
+
+  $ hg clone -q -u 3 a a1
+  $ cd a1
+
+  $ hg rebase --collapse --keepbranches
+  saved backup bundle to */.hg/strip-backup/*-backup.hg (glob)
+
+  $ hg tglog
+  @  5: 'Collapsed revision
+  |  * B
+  |  * C
+  |  * D'
+  o  4: 'H'
+  |
+  | o  3: 'G'
+  |/|
+  o |  2: 'F'
+  | |
+  | o  1: 'E'
+  |/
+  o  0: 'A'
+  
+  $ hg manifest
+  A
+  B
+  C
+  D
+  F
+  H
+
+  $ cd ..
+
+
+Rebasing G onto H:
+
+  $ hg clone -q -u . a a2
+  $ cd a2
+
+  $ hg rebase --base 6 --collapse
+  saved backup bundle to */.hg/strip-backup/*-backup.hg (glob)
+
+  $ hg tglog
+  @  6: 'Collapsed revision
+  |  * E
+  |  * G'
+  o  5: 'H'
+  |
+  o  4: 'F'
+  |
+  | o  3: 'D'
+  | |
+  | o  2: 'C'
+  | |
+  | o  1: 'B'
+  |/
+  o  0: 'A'
+  
+  $ hg manifest
+  A
+  E
+  F
+  H
+
+  $ cd ..
+
+
+Create repo b:
+
+  $ hg init b
+  $ cd b
+
+  $ echo A > A
+  $ hg ci -Am A
+  adding A
+  $ echo B > B
+  $ hg ci -Am B
+  adding B
+
+  $ hg up -q 0
+
+  $ echo C > C
+  $ hg ci -Am C
+  adding C
+  created new head
+
+  $ hg merge
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  (branch merge, don't forget to commit)
+
+  $ echo D > D
+  $ hg ci -Am D
+  adding D
+
+  $ hg up -q 1
+
+  $ echo E > E
+  $ hg ci -Am E
+  adding E
+  created new head
+
+  $ echo F > F
+  $ hg ci -Am F
+  adding F
+
+  $ hg merge
+  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  (branch merge, don't forget to commit)
+  $ hg ci -m G
+
+  $ hg up -q 0
+
+  $ echo H > H
+  $ hg ci -Am H
+  adding H
+  created new head
+
+  $ hg tglog
+  @  7: 'H'
+  |
+  | o    6: 'G'
+  | |\
+  | | o  5: 'F'
+  | | |
+  | | o  4: 'E'
+  | | |
+  | o |  3: 'D'
+  | |\|
+  | o |  2: 'C'
+  |/ /
+  | o  1: 'B'
+  |/
+  o  0: 'A'
+  
+  $ cd ..
+
+
+Rebase and collapse - more than one external (fail):
+
+  $ hg clone -q -u . b b1
+  $ cd b1
+
+  $ hg rebase -s 2 --collapse
+  abort: unable to collapse, there is more than one external parent
+  [255]
+
+Rebase and collapse - E onto H:
+
+  $ hg rebase -s 4 --collapse
+  saved backup bundle to */.hg/strip-backup/*-backup.hg (glob)
+
+  $ hg tglog
+  @    5: 'Collapsed revision
+  |\   * E
+  | |  * F
+  | |  * G'
+  | o  4: 'H'
+  | |
+  o |    3: 'D'
+  |\ \
+  | o |  2: 'C'
+  | |/
+  o /  1: 'B'
+  |/
+  o  0: 'A'
+  
+  $ hg manifest
+  A
+  B
+  C
+  D
+  E
+  F
+  H
+
+  $ cd ..
+
+
+Create repo c:
+
+  $ hg init c
+  $ cd c
+
+  $ echo A > A
+  $ hg ci -Am A
+  adding A
+  $ echo B > B
+  $ hg ci -Am B
+  adding B
+
+  $ hg up -q 0
+
+  $ echo C > C
+  $ hg ci -Am C
+  adding C
+  created new head
+
+  $ hg merge
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  (branch merge, don't forget to commit)
+
+  $ echo D > D
+  $ hg ci -Am D
+  adding D
+
+  $ hg up -q 1
+
+  $ echo E > E
+  $ hg ci -Am E
+  adding E
+  created new head
+  $ echo F > E
+  $ hg ci -m 'F'
+
+  $ echo G > G
+  $ hg ci -Am G
+  adding G
+
+  $ hg merge
+  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  (branch merge, don't forget to commit)
+
+  $ hg ci -m H
+
+  $ hg up -q 0
+
+  $ echo I > I
+  $ hg ci -Am I
+  adding I
+  created new head
+
+  $ hg tglog
+  @  8: 'I'
+  |
+  | o    7: 'H'
+  | |\
+  | | o  6: 'G'
+  | | |
+  | | o  5: 'F'
+  | | |
+  | | o  4: 'E'
+  | | |
+  | o |  3: 'D'
+  | |\|
+  | o |  2: 'C'
+  |/ /
+  | o  1: 'B'
+  |/
+  o  0: 'A'
+  
+  $ cd ..
+
+
+Rebase and collapse - E onto I:
+
+  $ hg clone -q -u . c c1
+  $ cd c1
+
+  $ hg rebase -s 4 --collapse
+  merging E
+  saved backup bundle to */.hg/strip-backup/*-backup.hg (glob)
+
+  $ hg tglog
+  @    5: 'Collapsed revision
+  |\   * E
+  | |  * F
+  | |  * G
+  | |  * H'
+  | o  4: 'I'
+  | |
+  o |    3: 'D'
+  |\ \
+  | o |  2: 'C'
+  | |/
+  o /  1: 'B'
+  |/
+  o  0: 'A'
+  
+  $ hg manifest
+  A
+  B
+  C
+  D
+  E
+  G
+  I
+
+  $ cat E
+  F
+
+  $ cd ..
+
+
+Create repo d:
+
+  $ hg init d
+  $ cd d
+
+  $ echo A > A
+  $ hg ci -Am A
+  adding A
+  $ echo B > B
+  $ hg ci -Am B
+  adding B
+  $ echo C > C
+  $ hg ci -Am C
+  adding C
+
+  $ hg up -q 1
+
+  $ echo D > D
+  $ hg ci -Am D
+  adding D
+  created new head
+  $ hg merge
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  (branch merge, don't forget to commit)
+
+  $ hg ci -m E
+
+  $ hg up -q 0
+
+  $ echo F > F
+  $ hg ci -Am F
+  adding F
+  created new head
+
+  $ hg tglog
+  @  5: 'F'
+  |
+  | o    4: 'E'
+  | |\
+  | | o  3: 'D'
+  | | |
+  | o |  2: 'C'
+  | |/
+  | o  1: 'B'
+  |/
+  o  0: 'A'
+  
+  $ cd ..
+
+
+Rebase and collapse - B onto F:
+
+  $ hg clone -q -u . d d1
+  $ cd d1
+
+  $ hg rebase -s 1 --collapse
+  saved backup bundle to */.hg/strip-backup/*-backup.hg (glob)
+
+  $ hg tglog
+  @  2: 'Collapsed revision
+  |  * B
+  |  * C
+  |  * D
+  |  * E'
+  o  1: 'F'
+  |
+  o  0: 'A'
+  
+  $ hg manifest
+  A
+  B
+  C
+  D
+  F
+