tests/test-evolve-stop-phasediv.t
author Kyle Lippincott <spectral@google.com>
Mon, 16 Sep 2019 12:44:38 -0700
changeset 4848 535ab2609e45
parent 4676 b6c819facbe8
permissions -rw-r--r--
cmdstate: introduce a "saver" contextmanager and use it in place of save() Previously, the state was only saved in some paths out of these functions. This can be problematic, if the user ctrl-c's (or `kill -9`'s) the process, or we exit out of `relocate` for anything besides the "expected" reason, we won't record that we were in the middle of an evolve. One of our users has discovered that this leaves hg in a weird state; the user did something like this: ``` $ hg evolve <something goes wrong with the merge tool, hits ctrl-c> <deals with the merge conflicts> $ hg evolve --continue abort: no interrupted evolve to continue $ hg evolve abort: uncommitted changes # Note: commands.status.verbose=True is set. $ hg status M foo # The repository is in an unfinished *update* state. # No unresolved merge conflicts # To continue: hg update ``` The user did an `hg update`, but it didn't actually do anything besides take it out of the unfinished update state (the files were still dirty in the working directory).
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