tests/test-evolve-interrupted.t
author Sushil khanchi <sushilkhanchi97@gmail.com>
Mon, 30 Dec 2019 00:24:09 +0530
changeset 5241 91285cff4b70
parent 4848 535ab2609e45
child 4865 31c481934138
child 5141 591a0afd2ef3
permissions -rw-r--r--
evolve: remove unnecessary code since it's been covered already We don't need this logic any more since the case of "two divergent csets where one is the parent of other" has been handled correctly by the logic present in method _prepcontentdivresolution() This is how things works in method _prepcontentdivresolution() for our case i.e "content-divergence with parent-child relation": cset_b (content-divergent) | cset_a (content-divergent) | ~ Acc. to revision selection criteria: "divergent" = min_revision(cset_a, cset_b) So always "divergent" will be cset_a and "other" will be "cset_b" and resolution parent will be the successor of parent of cset_a Both the csets will be merged and resolution cset will be based on correct revision. The result could be wrong only in the case when "divergent" is cset_b which is not possible acc. to the current logic.

Quitting an evolve in the middle (via ctrl-c or something) can leave things in a
weird intermediate state where hg thinks we're in the middle of an update
operation (or even just leave the 'merge' directory around without actually
indicating we're in the middle of *any* operation).

  $ . $TESTDIR/testlib/common.sh

  $ cat << EOF >> $HGRCPATH
  > [extensions]
  > rebase =
  > evolve =
  > [alias]
  > l = log -G -T'{rev} {desc}'
  > EOF

  $ hg init interrupted-orphan
  $ cd interrupted-orphan

  $ echo apricot > a
  $ hg ci -qAm apricot

  $ echo banana > b
  $ hg ci -qAm banana

Let's go back to amend 0 and make an orphan out of 1 (and a merge conflict to
test with)

  $ hg up -q 0
  $ echo blueberry > b
  $ hg l
  o  1 banana
  |
  @  0 apricot
  
  $ hg ci --amend -qAm 'apricot and blueberry'
  1 new orphan changesets
  $ hg l
  @  2 apricot and blueberry
  
  *  1 banana
  |
  x  0 apricot
  

  $ hg evolve --update --config hooks.precommit=false --config ui.merge=:other
  move:[1] banana
  atop:[2] apricot and blueberry
  transaction abort!
  rollback completed
  abort: precommit hook exited with status 1
  [255]
  $ hg l
  @  2 apricot and blueberry
  
  *  1 banana
  |
  x  0 apricot
  
  $ cat b
  banana

  $ hg status --config commands.status.verbose=True
  M b
  # The repository is in an unfinished *evolve* state.
  
  # No unresolved merge conflicts.
  
  # To continue:    hg evolve --continue
  # To abort:       hg evolve --abort
  # To stop:        hg evolve --stop
  # (also see `hg help evolve.interrupted`)
  

  $ ls .hg/evolvestate
  .hg/evolvestate

  $ cat b
  banana

  $ hg l
  @  2 apricot and blueberry
  
  *  1 banana
  |
  x  0 apricot
  

Test various methods of handling that unfinished state
  $ hg evolve --abort
  evolve aborted
  working directory is now at e1989e4b1526
  $ ls .hg/evolvestate
  ls: cannot access '?.hg/evolvestate'?: No such file or directory (re)
  [2]
  $ cat b
  blueberry
  $ hg l
  @  2 apricot and blueberry
  
  *  1 banana
  |
  x  0 apricot
  

  $ hg evolve --update --config hooks.precommit=false --config ui.merge=:other
  move:[1] banana
  atop:[2] apricot and blueberry
  transaction abort!
  rollback completed
  abort: precommit hook exited with status 1
  [255]
  $ cat b
  banana
  $ hg evolve --stop
  stopped the interrupted evolve
  working directory is now at e1989e4b1526
  $ cat .hg/evolvestate
  cat: .hg/evolvestate: No such file or directory
  [1]
  $ cat b
  blueberry
  $ hg l
  @  2 apricot and blueberry
  
  *  1 banana
  |
  x  0 apricot
  

  $ hg evolve --update --config hooks.precommit=false --config ui.merge=:other
  move:[1] banana
  atop:[2] apricot and blueberry
  transaction abort!
  rollback completed
  abort: precommit hook exited with status 1
  [255]
  $ hg evolve --continue
  evolving 1:e0486f65907d "banana"
  working directory is now at bd5ec7dfc2af
  $ cat .hg/evolvestate
  cat: .hg/evolvestate: No such file or directory
  [1]
  $ cat b
  banana
  $ hg l
  @  3 banana
  |
  o  2 apricot and blueberry