tests/test-evolve-issue5967.t
author Kyle Lippincott <spectral@google.com>
Mon, 16 Sep 2019 12:44:38 -0700
changeset 4848 535ab2609e45
parent 4706 de194ed973ba
child 5141 591a0afd2ef3
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:
4688
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
     1
hg evolve --continue and obsmarkers after conflict resolution with no changes to commit (issue5967)
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
     2
https://bz.mercurial-scm.org/show_bug.cgi?id=5967
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
     3
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
     4
  $ . $TESTDIR/testlib/common.sh
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
     5
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
     6
  $ hg init issue5967
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
     7
  $ cd issue5967
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
     8
  $ cat > .hg/hgrc << EOF
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
     9
  > [alias]
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    10
  > glog = log -GT "{rev}: {desc}"
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    11
  > [extensions]
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    12
  > evolve=
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    13
  > EOF
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    14
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    15
  $ echo apple > a
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    16
  $ hg ci -qAm 'apple'
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    17
  $ echo banana > a
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    18
  $ hg ci -m 'banana'
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    19
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    20
Amending revision 0 in a way that causes conflicts
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    21
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    22
  $ hg prev
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    23
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    24
  [0] apple
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    25
  $ echo apricot > a
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    26
  $ hg amend -m 'apricot'
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    27
  1 new orphan changesets
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    28
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    29
  $ hg glog
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    30
  @  2: apricot
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    31
  
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    32
  *  1: banana
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    33
  |
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    34
  x  0: apple
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    35
  
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    36
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    37
Trying to evolve, then manually discarding changes from revision 1
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    38
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    39
  $ hg evolve
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    40
  move:[1] banana
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    41
  atop:[2] apricot
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    42
  merging a
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    43
  warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
4706
de194ed973ba branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 4689
diff changeset
    44
  unresolved merge conflicts
de194ed973ba branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 4689
diff changeset
    45
  (see 'hg help evolve.interrupted')
4688
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    46
  [1]
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    47
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    48
  $ echo apricot > a
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    49
  $ hg resolve --mark a
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    50
  (no more unresolved files)
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    51
  continue: hg evolve --continue
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    52
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    53
This will correctly notice that revision 1 can be dropped
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    54
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    55
  $ hg evolve --continue
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    56
  evolving 1:dd9b5dd30cd6 "banana"
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    57
  evolution of 1:dd9b5dd30cd6 created no changes to commit
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    58
  working directory is now at 4d6fec23dcc4
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    59
  $ hg glog
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    60
  @  2: apricot
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    61
  
4689
27947b17cfaf evolve: orphans that evolve into nothing don't need successors (issue5967)
Anton Shestakov <av6@dwimlabs.net>
parents: 4688
diff changeset
    62
27947b17cfaf evolve: orphans that evolve into nothing don't need successors (issue5967)
Anton Shestakov <av6@dwimlabs.net>
parents: 4688
diff changeset
    63
This is important: 1 should not have a successor (especially not revision 2)
27947b17cfaf evolve: orphans that evolve into nothing don't need successors (issue5967)
Anton Shestakov <av6@dwimlabs.net>
parents: 4688
diff changeset
    64
4688
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    65
  $ hg olog --all
4689
27947b17cfaf evolve: orphans that evolve into nothing don't need successors (issue5967)
Anton Shestakov <av6@dwimlabs.net>
parents: 4688
diff changeset
    66
  @  4d6fec23dcc4 (2) apricot
4688
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    67
  |
4689
27947b17cfaf evolve: orphans that evolve into nothing don't need successors (issue5967)
Anton Shestakov <av6@dwimlabs.net>
parents: 4688
diff changeset
    68
  x  3ba7db0ce860 (0) apple
27947b17cfaf evolve: orphans that evolve into nothing don't need successors (issue5967)
Anton Shestakov <av6@dwimlabs.net>
parents: 4688
diff changeset
    69
       rewritten(description, content) as 4d6fec23dcc4 using amend by test (Thu Jan 01 00:00:00 1970 +0000)
4688
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    70
  
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    71
  $ hg olog --hidden --all 1
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    72
  x  dd9b5dd30cd6 (1) banana
4689
27947b17cfaf evolve: orphans that evolve into nothing don't need successors (issue5967)
Anton Shestakov <av6@dwimlabs.net>
parents: 4688
diff changeset
    73
       pruned using evolve by test (Thu Jan 01 00:00:00 1970 +0000)
4688
75329efe56a9 tests: demonstrate obsmarker creation after discarding conflicting changes
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    74