tests/test-evolve-issue5958.t
author Manuel Jacob <me@manueljacob.de>
Wed, 11 Mar 2020 16:04:06 +0100
branchstable
changeset 5206 dc3571a37b56
parent 5123 900668a93629
child 5323 417503ef667d
permissions -rw-r--r--
evolve: support ancestor of orphan split with unrelated changeset in between This is done by searching for roots and heads within the range delimited on both sides by the target revs instead of just within the target revs. Example: o 5 | o 4 | o 3 | | * 2 | | | x 1 |/ o 0 1 is obsoleted by 3 and 5. We are considering the case when 2 gets evolved. Before the change, both roots and heads were [3, 5]. The user was offered a choice between 3 and 5 as the destination. After the change, roots are [3] and heads are [5]. 5 is chosen as the destination.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4849
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
     1
Content divergence and trying to relocate a node on top of itself (issue5958)
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
     2
https://bz.mercurial-scm.org/show_bug.cgi?id=5958
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
     3
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
     4
  $ . $TESTDIR/testlib/common.sh
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
     5
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
     6
  $ cat << EOF >> $HGRCPATH
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
     7
  > [extensions]
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
     8
  > rebase =
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
     9
  > evolve =
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    10
  > EOF
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    11
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    12
  $ hg init issue5958
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    13
  $ cd issue5958
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    14
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    15
  $ echo hi > r0
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    16
  $ hg ci -qAm 'add r0'
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    17
  $ echo hi > foo.txt
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    18
  $ hg ci -qAm 'add foo.txt'
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    19
  $ hg metaedit -r . -d '0 2'
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    20
  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    21
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    22
(Make changes in unrelated files so that we don't have any merge conflicts
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    23
during the rebase, but the two touched revisions aren't identical)
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    24
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    25
  $ echo hi > bar.txt
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    26
  $ hg add -q bar.txt
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    27
  $ hg amend -q
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    28
  $ hg metaedit -r 1 -d '0 1' --hidden
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    29
  2 new content-divergent changesets
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    30
  $ hg log -r tip
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    31
  changeset:   4:c17bf400a278
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    32
  tag:         tip
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    33
  parent:      0:a24ed8ad918c
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    34
  user:        test
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    35
  date:        Wed Dec 31 23:59:59 1969 -0000
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    36
  instability: content-divergent
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    37
  summary:     add foo.txt
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    38
  
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    39
  $ echo hi > baz.txt
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    40
  $ hg add -q baz.txt
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    41
  $ hg amend -q
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    42
  $ hg rebase -qr tip -d 4
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    43
  $ hg log -G
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    44
  @  changeset:   6:08bc7ba82799
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    45
  |  tag:         tip
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    46
  |  parent:      4:c17bf400a278
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    47
  |  user:        test
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    48
  |  date:        Wed Dec 31 23:59:58 1969 -0000
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    49
  |  instability: content-divergent
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    50
  |  summary:     add foo.txt
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    51
  |
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    52
  *  changeset:   4:c17bf400a278
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    53
  |  parent:      0:a24ed8ad918c
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    54
  |  user:        test
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    55
  |  date:        Wed Dec 31 23:59:59 1969 -0000
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    56
  |  instability: content-divergent
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    57
  |  summary:     add foo.txt
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    58
  |
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    59
  o  changeset:   0:a24ed8ad918c
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    60
     user:        test
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    61
     date:        Thu Jan 01 00:00:00 1970 +0000
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    62
     summary:     add r0
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    63
  
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    64
  $ hg obslog -a -r .
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    65
  @  08bc7ba82799 (6) add foo.txt
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    66
  |
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    67
  | *  c17bf400a278 (4) add foo.txt
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    68
  | |
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    69
  x |  1d1fc409af98 (5) add foo.txt
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    70
  | |    rewritten(parent, content) as 08bc7ba82799 using rebase by test (Thu Jan 01 00:00:00 1970 +0000)
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    71
  | |
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    72
  x |  a25dd7af6cf6 (3) add foo.txt
5123
900668a93629 obslog: use _successorsetverb() in regular obslog too
Anton Shestakov <av6@dwimlabs.net>
parents: 5013
diff changeset
    73
  | |    amended(content) as 1d1fc409af98 using amend by test (Thu Jan 01 00:00:00 1970 +0000)
4849
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    74
  | |
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    75
  x |  0065551bd38f (2) add foo.txt
5123
900668a93629 obslog: use _successorsetverb() in regular obslog too
Anton Shestakov <av6@dwimlabs.net>
parents: 5013
diff changeset
    76
  |/     amended(content) as a25dd7af6cf6 using amend by test (Thu Jan 01 00:00:00 1970 +0000)
4849
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    77
  |
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    78
  x  cc71ffbc7c00 (1) add foo.txt
5123
900668a93629 obslog: use _successorsetverb() in regular obslog too
Anton Shestakov <av6@dwimlabs.net>
parents: 5013
diff changeset
    79
       date-changed(date) as 0065551bd38f using metaedit by test (Thu Jan 01 00:00:00 1970 +0000)
900668a93629 obslog: use _successorsetverb() in regular obslog too
Anton Shestakov <av6@dwimlabs.net>
parents: 5013
diff changeset
    80
       date-changed(date) as c17bf400a278 using metaedit by test (Thu Jan 01 00:00:00 1970 +0000)
4849
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    81
  
4850
6d898fa6e5c3 evolve: check that relocating makes sense in _solvedivergent() (issue5958)
Anton Shestakov <av6@dwimlabs.net>
parents: 4849
diff changeset
    82
  $ hg evolve --content-divergent
4849
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    83
  merge:[6] add foo.txt
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    84
  with: [4] add foo.txt
b9b6f421688a tests: demonstrate content divergence causing "relocate node on top of itself"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    85
  base: [1] add foo.txt
4850
6d898fa6e5c3 evolve: check that relocating makes sense in _solvedivergent() (issue5958)
Anton Shestakov <av6@dwimlabs.net>
parents: 4849
diff changeset
    86
  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
6d898fa6e5c3 evolve: check that relocating makes sense in _solvedivergent() (issue5958)
Anton Shestakov <av6@dwimlabs.net>
parents: 4849
diff changeset
    87
  1 new orphan changesets
4998
88b816a9d990 evolve: preserve date when resolving content-divergence (issue6202)
Manuel Jacob <me@manueljacob.de>
parents: 4997
diff changeset
    88
  working directory is now at 459c64f7eaad