tests/test-obsolete-rebase.t
author Pierre-Yves David <pierre-yves.david@logilab.fr>
Tue, 07 Aug 2012 14:08:31 +0200
changeset 429 079b231b8ea4
parent 385 cdcdedc532b7
child 441 d702f0d26c6a
permissions -rw-r--r--
obsolete: introduce an extension helper and use it this extension helper allow most of setup operation to be declared in place using decorator. This allow clear separation between independant part of the code. This is the first HUGE wave of changes related to this introduction. The goal is to have a clear distinction and documention of every part of this extension.

  $ cat >> $HGRCPATH <<EOF
  > [defaults]
  > amend=-d "0 0"
  > [extensions]
  > hgext.rebase=
  > hgext.graphlog=
  > EOF
  $ echo "obsolete=$(echo $(dirname $TESTDIR))/hgext/obsolete.py" >> $HGRCPATH

  $ glog() {
  >   hg glog --template '{rev}:{node|short}@{branch}({phase}) {desc|firstline}\n'\
  >     "$@"
  > }

  $ hg init repo
  $ cd repo
  $ echo a > a
  $ hg ci -Am adda
  adding a
  $ echo a >> a
  $ hg ci -m changea

Test regular rebase

  $ hg up 0
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ echo b > b
  $ hg ci -Am addb
  adding b
  created new head
  $ echo e > e
  $ hg ci -Am adde e
  $ hg rebase -d 1 -r 3 --detach --keep  
  $ glog
  @  4:9c5494949763@default(draft) adde
  |
  | o  3:98e4a024635e@default(draft) adde
  | |
  | o  2:102a90ea7b4a@default(draft) addb
  | |
  o |  1:540395c44225@default(draft) changea
  |/
  o  0:07f494440405@default(draft) adda
  
  $ glog --hidden
  @  4:9c5494949763@default(draft) adde
  |
  | o  3:98e4a024635e@default(draft) adde
  | |
  | o  2:102a90ea7b4a@default(draft) addb
  | |
  o |  1:540395c44225@default(draft) changea
  |/
  o  0:07f494440405@default(draft) adda
  
  $ hg debugsuccessors
  $ hg --config extensions.hgext.mq= strip tip
  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
  saved backup bundle to $TESTTMP/repo/.hg/strip-backup/9c5494949763-backup.hg
  $ hg rebase -d 1 -r 3 --detach
  $ glog
  @  4:9c5494949763@default(draft) adde
  |
  | o  2:102a90ea7b4a@default(draft) addb
  | |
  o |  1:540395c44225@default(draft) changea
  |/
  o  0:07f494440405@default(draft) adda
  
  $ glog --hidden
  @  4:9c5494949763@default(draft) adde
  |
  | x  3:98e4a024635e@default(draft) adde
  | |
  | o  2:102a90ea7b4a@default(draft) addb
  | |
  o |  1:540395c44225@default(draft) changea
  |/
  o  0:07f494440405@default(draft) adda
  
  $ hg debugsuccessors
  98e4a024635e 9c5494949763

Test rebase with deleted empty revision

  $ hg up 0
  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
  $ hg branch foo
  marked working directory as branch foo
  (branches are permanent and global, did you want a bookmark?)
  $ echo a >> a
  $ hg ci -m changea
  $ hg rebase -d 1
  $ glog --hidden
  x  5:4e322f7ce8e3@foo(draft) changea
  |
  | o  4:9c5494949763@default(draft) adde
  | |
  | | x  3:98e4a024635e@default(draft) adde
  | | |
  +---o  2:102a90ea7b4a@default(draft) addb
  | |
  | @  1:540395c44225@default(draft) changea
  |/
  o  0:07f494440405@default(draft) adda
  
  $ hg debugsuccessors
  4e322f7ce8e3 000000000000
  98e4a024635e 9c5494949763

Test rebase --collapse

  $ hg up 0
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ echo c > c
  $ hg ci -Am addc
  adding c
  created new head
  $ echo c >> c
  $ hg ci -m changec
  $ hg rebase --collapse -d 1
  merging c
  $ glog --hidden
  @  8:a7773ffa7edc@default(draft) Collapsed revision
  |
  | x  7:03f31481307a@default(draft) changec
  | |
  | x  6:076e9b2ffbe1@default(draft) addc
  | |
  | | x  5:4e322f7ce8e3@foo(draft) changea
  | |/
  +---o  4:9c5494949763@default(draft) adde
  | |
  | | x  3:98e4a024635e@default(draft) adde
  | | |
  | | o  2:102a90ea7b4a@default(draft) addb
  | |/
  o |  1:540395c44225@default(draft) changea
  |/
  o  0:07f494440405@default(draft) adda
  
  $ hg debugsuccessors
  03f31481307a a7773ffa7edc
  076e9b2ffbe1 a7773ffa7edc
  4e322f7ce8e3 000000000000
  98e4a024635e 9c5494949763

Test rebase --abort

  $ hg debugsuccessors > ../successors.old
  $ hg up 0
  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
  $ echo d > d
  $ hg ci -Am addd d
  created new head
  $ echo b >> a
  $ hg ci -m appendab
  $ hg rebase -d 1
  merging a
  warning: conflicts during merge.
  merging a incomplete! (edit conflicts, then use 'hg resolve --mark')
  abort: unresolved conflicts (see hg resolve, then hg rebase --continue)
  [255]
  $ hg rebase --abort
  saved backup bundle to $TESTTMP/repo/.hg/strip-backup/03f165c84ea8-backup.hg
  rebase aborted
  $ hg debugsuccessors > ../successors.new
  $ diff -u ../successors.old ../successors.new

Test rebase --continue

  $ hg rebase -d 1
  merging a
  warning: conflicts during merge.
  merging a incomplete! (edit conflicts, then use 'hg resolve --mark')
  abort: unresolved conflicts (see hg resolve, then hg rebase --continue)
  [255]
  $ hg resolve --tool internal:other a
  $ hg rebase --continue
  $ glog --hidden
  @  12:1951ead97108@default(draft) appendab
  |
  o  11:03f165c84ea8@default(draft) addd
  |
  | x  10:4b9d80f48523@default(draft) appendab
  | |
  | x  9:a31943eabc43@default(draft) addd
  | |
  +---o  8:a7773ffa7edc@default(draft) Collapsed revision
  | |
  | | x  7:03f31481307a@default(draft) changec
  | | |
  | | x  6:076e9b2ffbe1@default(draft) addc
  | |/
  | | x  5:4e322f7ce8e3@foo(draft) changea
  | |/
  +---o  4:9c5494949763@default(draft) adde
  | |
  | | x  3:98e4a024635e@default(draft) adde
  | | |
  | | o  2:102a90ea7b4a@default(draft) addb
  | |/
  o |  1:540395c44225@default(draft) changea
  |/
  o  0:07f494440405@default(draft) adda
  
  $ hg debugsuccessors > ../successors.new
  $ diff -u ../successors.old ../successors.new
  --- ../successors.old* (glob)
  +++ ../successors.new* (glob)
  @@ -1,4 +1,6 @@
   03f31481307a a7773ffa7edc
   076e9b2ffbe1 a7773ffa7edc
  +4b9d80f48523 1951ead97108
   4e322f7ce8e3 000000000000
   98e4a024635e 9c5494949763
  +a31943eabc43 03f165c84ea8
  [1]