tests/test-evolve-stop-phasediv.t
author Sushil khanchi <sushilkhanchi97@gmail.com>
Sat, 23 Nov 2019 16:17:04 +0530
branchstable
changeset 4991 2928f35023a1
parent 4676 b6c819facbe8
permissions -rw-r--r--
evolve: make sure divergence resolution doesn't undo changes (issue6203) Before this patch, in content-divergence resolution logic if resolution parent is not the parent of any of the two divergent changesets then it could undo some changes introduced by previous revs (while resolving stack of content-divergent changesets) as demonstrated by the test added in previous patch. To solve this, what this patch doing is: if divergent cset has obsolete parent with a successor then first resolve the "orphan" instability of divergent cset by relocating, then perform the content-divergence resolution. After this change in logic, I found that it's kind of more correct as reflected by the changes in tests/test-evolve-content-divergent-corner-cases.t where it prevented creating conflicts while merging. Changes in tests/test-evolve-content-divergent-stack.t demonstrate the fixed behaviour. Next patches will be covering the `evolve --continue` case for the relocation of "divergent" cset.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3732
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
     1
Tests for the --stop flag for `hg evolve` command while resolving phase-divergence
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
     2
==================================================================================
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
     3
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
     4
The `--stop` flag stops the interrupted evolution and delete the state file so
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
     5
user can do other things and comeback and do evolution later on
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
     6
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
     7
This is testing cases when `hg evolve` command is doing phase-divergence resolution.
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
     8
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
     9
Setup
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    10
=====
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    11
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    12
  $ cat >> $HGRCPATH <<EOF
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    13
  > [alias]
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    14
  > glog = log -GT "{rev}:{node|short} {desc}\n ({bookmarks}) {phase}"
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    15
  > [extensions]
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    16
  > EOF
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    17
  $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    18
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    19
  $ hg init stoprepo
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    20
  $ cd stoprepo
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    21
  $ echo ".*\.orig" > .hgignore
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    22
  $ hg add .hgignore
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    23
  $ hg ci -m "added hgignore"
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    24
  $ for ch in a b c d; do echo foo > $ch; hg add $ch; hg ci -qm "added "$ch; done;
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    25
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    26
  $ hg glog
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    27
  @  4:c41c793e0ef1 added d
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    28
  |   () draft
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    29
  o  3:ca1b80f7960a added c
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    30
  |   () draft
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    31
  o  2:b1661037fa25 added b
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    32
  |   () draft
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    33
  o  1:c7586e2a9264 added a
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    34
  |   () draft
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    35
  o  0:8fa14d15e168 added hgignore
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    36
      () draft
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    37
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    38
Creating phase divergence, resolution of which will lead to conflicts
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    39
----------------------------------------------------------------------
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    40
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    41
  $ hg up .^^^
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    42
  0 files updated, 0 files merged, 3 files removed, 0 files unresolved
4053
ecbf61d90807 pick: replace `hg grab` invocation in test with `hg pick`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 4049
diff changeset
    43
  $ hg pick -r .~-3
4049
25981fae92f9 pick: update command output to mention pick instead of grab
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 3852
diff changeset
    44
  picking 4:c41c793e0ef1 "added d"
3732
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    45
  $ echo foobar > c
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    46
  $ hg add c
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    47
  $ hg amend
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    48
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    49
  $ hg glog --hidden
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    50
  @  6:ddba58020bc0 added d
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    51
  |   () draft
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    52
  | x  5:cfe30edc6125 added d
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    53
  |/    () draft
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    54
  | x  4:c41c793e0ef1 added d
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    55
  | |   () draft
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    56
  | o  3:ca1b80f7960a added c
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    57
  | |   () draft
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    58
  | o  2:b1661037fa25 added b
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    59
  |/    () draft
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    60
  o  1:c7586e2a9264 added a
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    61
  |   () draft
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    62
  o  0:8fa14d15e168 added hgignore
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    63
      () draft
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    64
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    65
  $ hg phase -r c41c793e0ef1 --public --hidden
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    66
  1 new phase-divergent changesets
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    67
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    68
  $ hg glog
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    69
  @  6:ddba58020bc0 added d
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    70
  |   () draft
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    71
  | o  4:c41c793e0ef1 added d
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    72
  | |   () public
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    73
  | o  3:ca1b80f7960a added c
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    74
  | |   () public
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    75
  | o  2:b1661037fa25 added b
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    76
  |/    () public
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    77
  o  1:c7586e2a9264 added a
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    78
  |   () public
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    79
  o  0:8fa14d15e168 added hgignore
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    80
      () public
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    81
  $ hg evolve --phase-divergent
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    82
  recreate:[6] added d
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    83
  atop:[4] added d
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    84
  rebasing to destination parent: ca1b80f7960a
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    85
  merging c
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    86
  warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
4676
b6c819facbe8 evolvecmd: the proper way to deal with conflicts is to resolve them
Anton Shestakov <av6@dwimlabs.net>
parents: 4053
diff changeset
    87
  unresolved merge conflicts
b6c819facbe8 evolvecmd: the proper way to deal with conflicts is to resolve them
Anton Shestakov <av6@dwimlabs.net>
parents: 4053
diff changeset
    88
  (see 'hg help evolve.interrupted')
3852
629558d09898 evolve: raise error.InterventionRequired instead of Abort when conflicts
Pulkit Goyal <7895pulkit@gmail.com>
parents: 3843
diff changeset
    89
  [1]
3732
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    90
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    91
  $ hg evolve --stop
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    92
  stopped the interrupted evolve
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    93
  working directory is now at ca1b80f7960a
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    94
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    95
XXX: maybe we should update wdir to where it was
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    96
  $ hg glog
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    97
  *  6:ddba58020bc0 added d
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    98
  |   () draft
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
    99
  | o  4:c41c793e0ef1 added d
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
   100
  | |   () public
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
   101
  | @  3:ca1b80f7960a added c
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
   102
  | |   () public
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
   103
  | o  2:b1661037fa25 added b
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
   104
  |/    () public
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
   105
  o  1:c7586e2a9264 added a
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
   106
  |   () public
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
   107
  o  0:8fa14d15e168 added hgignore
422294cd682f tests: add test showing `hg evolve --stop` works fine with phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
   108
      () public