tests: demonstrate content divergence causing "relocate node on top of itself" stable
authorPierre-Yves David <pierre-yves.david@octobus.net>
Wed, 24 Oct 2018 19:32:04 +0200
branchstable
changeset 4849 b9b6f421688a
parent 4844 2488ec1bd22f
child 4850 6d898fa6e5c3
tests: demonstrate content divergence causing "relocate node on top of itself"
tests/test-evolve-issue5958.t
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-evolve-issue5958.t	Wed Oct 24 19:32:04 2018 +0200
@@ -0,0 +1,95 @@
+Content divergence and trying to relocate a node on top of itself (issue5958)
+https://bz.mercurial-scm.org/show_bug.cgi?id=5958
+
+  $ . $TESTDIR/testlib/common.sh
+
+  $ cat << EOF >> $HGRCPATH
+  > [extensions]
+  > rebase =
+  > evolve =
+  > EOF
+
+  $ hg init issue5958
+  $ cd issue5958
+
+  $ echo hi > r0
+  $ hg ci -qAm 'add r0'
+  $ echo hi > foo.txt
+  $ hg ci -qAm 'add foo.txt'
+  $ hg metaedit -r . -d '0 2'
+  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+
+(Make changes in unrelated files so that we don't have any merge conflicts
+during the rebase, but the two touched revisions aren't identical)
+
+  $ echo hi > bar.txt
+  $ hg add -q bar.txt
+  $ hg amend -q
+  $ hg metaedit -r 1 -d '0 1' --hidden
+  2 new content-divergent changesets
+  $ hg log -r tip
+  changeset:   4:c17bf400a278
+  tag:         tip
+  parent:      0:a24ed8ad918c
+  user:        test
+  date:        Wed Dec 31 23:59:59 1969 -0000
+  instability: content-divergent
+  summary:     add foo.txt
+  
+  $ echo hi > baz.txt
+  $ hg add -q baz.txt
+  $ hg amend -q
+  $ hg rebase -qr tip -d 4
+  $ hg log -G
+  @  changeset:   6:08bc7ba82799
+  |  tag:         tip
+  |  parent:      4:c17bf400a278
+  |  user:        test
+  |  date:        Wed Dec 31 23:59:58 1969 -0000
+  |  instability: content-divergent
+  |  summary:     add foo.txt
+  |
+  *  changeset:   4:c17bf400a278
+  |  parent:      0:a24ed8ad918c
+  |  user:        test
+  |  date:        Wed Dec 31 23:59:59 1969 -0000
+  |  instability: content-divergent
+  |  summary:     add foo.txt
+  |
+  o  changeset:   0:a24ed8ad918c
+     user:        test
+     date:        Thu Jan 01 00:00:00 1970 +0000
+     summary:     add r0
+  
+  $ hg obslog -a -r .
+  @  08bc7ba82799 (6) add foo.txt
+  |
+  | *  c17bf400a278 (4) add foo.txt
+  | |
+  x |  1d1fc409af98 (5) add foo.txt
+  | |    rewritten(parent, content) as 08bc7ba82799 using rebase by test (Thu Jan 01 00:00:00 1970 +0000)
+  | |
+  x |  a25dd7af6cf6 (3) add foo.txt
+  | |    rewritten(content) as 1d1fc409af98 using amend by test (Thu Jan 01 00:00:00 1970 +0000)
+  | |
+  x |  0065551bd38f (2) add foo.txt
+  |/     rewritten(content) as a25dd7af6cf6 using amend by test (Thu Jan 01 00:00:00 1970 +0000)
+  |
+  x  cc71ffbc7c00 (1) add foo.txt
+       rewritten(date) as 0065551bd38f using metaedit by test (Thu Jan 01 00:00:00 1970 +0000)
+       rewritten(date) as c17bf400a278 using metaedit by test (Thu Jan 01 00:00:00 1970 +0000)
+  
+  $ hg evolve --content-divergent 2>&1 | grep '^\S'
+  merge:[6] add foo.txt
+  with: [4] add foo.txt
+  base: [1] add foo.txt
+  rebasing "other" content-divergent changeset c17bf400a278 on c17bf400a278
+  ** unknown exception encountered, please report by visiting
+  ** https://mercurial-scm.org/wiki/BugTracker
+  ** Python * (glob)
+  ** Mercurial Distributed SCM (*) (glob)
+  ** Extensions loaded: rebase, evolve
+  ** ProgrammingError: tried to relocate a node on top of itself
+  ** (This shouldn't happen. If you still need to move changesets, please do so manually with nothing to rebase - working directory parent is also destination)
+  Traceback (most recent call last):
+  mercurial.error.ProgrammingError: tried to relocate a node on top of itself