--- a/tests/test-evolve-content-divergence.t Wed Apr 10 16:40:58 2019 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1219 +0,0 @@
-** Test for handling of content divergent changesets by `hg evolve` **
-====================================================================
-
- $ cat >> $HGRCPATH <<EOF
- > [alias]
- > glog = log -GT "{rev}:{node|short} {desc|firstline}\n ({bookmarks}) [{branch}] {phase}"
- > [phases]
- > publish = False
- > [extensions]
- > rebase =
- > EOF
- $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH
-
- $ hg init cdiv
- $ cd cdiv
- $ echo ".*\.orig" > .hgignore
- $ hg add .hgignore
- $ hg ci -m "added hgignore"
- $ for ch in a b c d; do echo foo > $ch; hg add $ch; hg ci -qm "added "$ch; done;
-
- $ hg glog
- @ 4:c41c793e0ef1 added d
- | () [default] draft
- o 3:ca1b80f7960a added c
- | () [default] draft
- o 2:b1661037fa25 added b
- | () [default] draft
- o 1:c7586e2a9264 added a
- | () [default] draft
- o 0:8fa14d15e168 added hgignore
- () [default] draft
-
-Creating content-divergence with branch change where base, divergent and other
-have different branches
--------------------------------------------------------------------------------
-
- $ hg branch -r . foobar
- changed branch on 1 changesets
-
- $ hg up c41c793e0ef1 --hidden
- 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
- updated to hidden changeset c41c793e0ef1
- (hidden revision 'c41c793e0ef1' was rewritten as: 9e5dffcb3d48)
- working directory parent is obsolete! (c41c793e0ef1)
- (use 'hg evolve' to update to its successor: 9e5dffcb3d48)
- $ echo bar > d
- $ hg branch watwat
- marked working directory as branch watwat
- $ hg amend
- 2 new content-divergent changesets
-
- $ hg glog
- @ 6:264b04f771fb added d
- | () [watwat] draft
- | * 5:9e5dffcb3d48 added d
- |/ () [foobar] draft
- o 3:ca1b80f7960a added c
- | () [default] draft
- o 2:b1661037fa25 added b
- | () [default] draft
- o 1:c7586e2a9264 added a
- | () [default] draft
- o 0:8fa14d15e168 added hgignore
- () [default] draft
-
- $ hg evolve --content-divergent --config ui.interactive=True<<EOF
- > c
- > EOF
- merge:[6] added d
- with: [5] added d
- base: [4] added d
- merging "other" content-divergent changeset '9e5dffcb3d48'
- 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
- content divergent changesets on different branches.
- choose branch for the resolution changeset. (a) default or (b) watwat or (c) foobar? c
- working directory is now at 0ac42f1bc15c
-
- $ hg glog
- @ 7:0ac42f1bc15c added d
- | () [foobar] draft
- o 3:ca1b80f7960a added c
- | () [default] draft
- o 2:b1661037fa25 added b
- | () [default] draft
- o 1:c7586e2a9264 added a
- | () [default] draft
- o 0:8fa14d15e168 added hgignore
- () [default] draft
-
-Testing merging of commit messages
------------------------------------
-
-When base and one of the divergent has same commit messages and other divergent
-has different one
-
- $ echo wat > d
- $ hg amend
-
- $ hg up .^
- 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
-
- $ echo bar > d
- $ hg ci -Aqm "added a d with bar in it, expect some beers"
-
- $ hg prune -r 0ac42f1bc15c -s . --hidden
- 1 changesets pruned
- 2 new content-divergent changesets
-
- $ hg glog
- @ 9:59081c9c425a added a d with bar in it, expect some beers
- | () [default] draft
- | * 8:f621d00f5f0e added d
- |/ () [foobar] draft
- o 3:ca1b80f7960a added c
- | () [default] draft
- o 2:b1661037fa25 added b
- | () [default] draft
- o 1:c7586e2a9264 added a
- | () [default] draft
- o 0:8fa14d15e168 added hgignore
- () [default] draft
-
- $ hg evolve --content-divergent
- merge:[9] added a d with bar in it, expect some beers
- with: [8] added d
- base: [7] added d
- merging "other" content-divergent changeset 'f621d00f5f0e'
- 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
- working directory is now at a9d6fd6b5e40
-
- $ hg glog
- @ 10:a9d6fd6b5e40 added a d with bar in it, expect some beers
- | () [default] draft
- o 3:ca1b80f7960a added c
- | () [default] draft
- o 2:b1661037fa25 added b
- | () [default] draft
- o 1:c7586e2a9264 added a
- | () [default] draft
- o 0:8fa14d15e168 added hgignore
- () [default] draft
-
-When base has different message and both divergents has same one
-
- $ echo foo > d
- $ hg amend -m "foo to d"
-
- $ hg up a9d6fd6b5e40 --hidden
- 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
- updated to hidden changeset a9d6fd6b5e40
- (hidden revision 'a9d6fd6b5e40' was rewritten as: b10b07a394f1)
- working directory parent is obsolete! (a9d6fd6b5e40)
- (use 'hg evolve' to update to its successor: b10b07a394f1)
- $ echo babar > d
- $ hg amend -m "foo to d"
- 2 new content-divergent changesets
-
- $ hg glog
- @ 12:0bb497fed24a foo to d
- | () [default] draft
- | * 11:b10b07a394f1 foo to d
- |/ () [default] draft
- o 3:ca1b80f7960a added c
- | () [default] draft
- o 2:b1661037fa25 added b
- | () [default] draft
- o 1:c7586e2a9264 added a
- | () [default] draft
- o 0:8fa14d15e168 added hgignore
- () [default] draft
-
- $ hg evolve --content-divergent
- merge:[12] foo to d
- with: [11] foo to d
- base: [10] added a d with bar in it, expect some beers
- merging "other" content-divergent changeset 'b10b07a394f1'
- merging d
- warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
- 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
- fix conflicts and see `hg help evolve.interrupted`
- [1]
-
- $ echo foobar > d
- $ hg resolve -m
- (no more unresolved files)
- continue: hg evolve --continue
- $ hg evolve --continue
- working directory is now at 11175423b5dc
-
- $ hg glog
- @ 13:11175423b5dc foo to d
- | () [default] draft
- o 3:ca1b80f7960a added c
- | () [default] draft
- o 2:b1661037fa25 added b
- | () [default] draft
- o 1:c7586e2a9264 added a
- | () [default] draft
- o 0:8fa14d15e168 added hgignore
- () [default] draft
-
-When all three base, divergent and other has different commit messages creating
-conflicts
-
- $ echo bar > d
- $ hg amend -m "bar to d, expect beers"
-
- $ hg up 11175423b5dc --hidden
- 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
- updated to hidden changeset 11175423b5dc
- (hidden revision '11175423b5dc' was rewritten as: 27f0463f169a)
- working directory parent is obsolete! (11175423b5dc)
- (use 'hg evolve' to update to its successor: 27f0463f169a)
- $ echo wat > d
- $ hg amend -m "wat to d, wat?"
- 2 new content-divergent changesets
-
- $ hg glog
- @ 15:f542037ddf31 wat to d, wat?
- | () [default] draft
- | * 14:27f0463f169a bar to d, expect beers
- |/ () [default] draft
- o 3:ca1b80f7960a added c
- | () [default] draft
- o 2:b1661037fa25 added b
- | () [default] draft
- o 1:c7586e2a9264 added a
- | () [default] draft
- o 0:8fa14d15e168 added hgignore
- () [default] draft
-
- $ hg evolve --content-divergent
- merge:[15] wat to d, wat?
- with: [14] bar to d, expect beers
- base: [13] foo to d
- merging "other" content-divergent changeset '27f0463f169a'
- merging d
- warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
- 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
- fix conflicts and see `hg help evolve.interrupted`
- [1]
-
- $ echo watbar > d
- $ hg resolve -m
- (no more unresolved files)
- continue: hg evolve --continue
-
- $ cat > editor.sh <<EOF
- > #!/bin/sh
- > printf "**showing editors text**\n\n"
- > cat \$1
- > printf "\n**done showing editors text**\n\n"
- > cat > \$1 <<ENDOF
- > watbar to d
- > ENDOF
- > EOF
-
- $ HGEDITOR='sh ./editor.sh' hg evolve --continue
- **showing editors text**
-
- HG: Conflicts while merging changeset description of content-divergent changesets.
- HG: Resolve conflicts in commit messages to continue.
-
- <<<<<<< divergent
- wat to d, wat?||||||| base
- foo to d=======
- bar to d, expect beers>>>>>>> other
-
- **done showing editors text**
-
- working directory is now at 89ea3eee2d69
-
- $ hg glog
- @ 16:89ea3eee2d69 watbar to d
- | () [default] draft
- o 3:ca1b80f7960a added c
- | () [default] draft
- o 2:b1661037fa25 added b
- | () [default] draft
- o 1:c7586e2a9264 added a
- | () [default] draft
- o 0:8fa14d15e168 added hgignore
- () [default] draft
-
- $ cd ..
-
-Testing resolution of content-divergent changesets when they are on different
-parents and resolution and relocation wont result in conflicts
-------------------------------------------------------------------------------
-
- $ hg init multiparents
- $ cd multiparents
- $ echo ".*\.orig" > .hgignore
- $ hg add .hgignore
- $ hg ci -m "added hgignore"
- $ for ch in a b c d; do echo foo > $ch; hg add $ch; hg ci -qm "added "$ch; done;
-
- $ hg glog
- @ 4:c41c793e0ef1 added d
- | () [default] draft
- o 3:ca1b80f7960a added c
- | () [default] draft
- o 2:b1661037fa25 added b
- | () [default] draft
- o 1:c7586e2a9264 added a
- | () [default] draft
- o 0:8fa14d15e168 added hgignore
- () [default] draft
-
- $ hg up .^^
- 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
- $ echo bar > b
- $ hg amend
- 2 new orphan changesets
-
- $ hg rebase -r b1661037fa25 -d 8fa14d15e168 --hidden --config experimental.evolution.allowdivergence=True
- rebasing 2:b1661037fa25 "added b"
- 2 new content-divergent changesets
-
- $ hg glog
- * 6:da4b96f4a8d6 added b
- | () [default] draft
- | @ 5:7ed0642d644b added b
- | | () [default] draft
- | | * 4:c41c793e0ef1 added d
- | | | () [default] draft
- | | * 3:ca1b80f7960a added c
- | | | () [default] draft
- | | x 2:b1661037fa25 added b
- | |/ () [default] draft
- | o 1:c7586e2a9264 added a
- |/ () [default] draft
- o 0:8fa14d15e168 added hgignore
- () [default] draft
-
- $ hg evolve --content-divergent
- merge:[5] added b
- with: [6] added b
- base: [2] added b
- rebasing "other" content-divergent changeset da4b96f4a8d6 on c7586e2a9264
- updating to "local" side of the conflict: 7ed0642d644b
- merging "other" content-divergent changeset '11f849d7159f'
- 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
- working directory is now at 171614c9a791
-
- $ hg glog
- @ 8:171614c9a791 added b
- | () [default] draft
- | * 4:c41c793e0ef1 added d
- | | () [default] draft
- | * 3:ca1b80f7960a added c
- | | () [default] draft
- | x 2:b1661037fa25 added b
- |/ () [default] draft
- o 1:c7586e2a9264 added a
- | () [default] draft
- o 0:8fa14d15e168 added hgignore
- () [default] draft
-
- $ hg exp
- # HG changeset patch
- # User test
- # Date 0 0
- # Thu Jan 01 00:00:00 1970 +0000
- # Node ID 171614c9a7914c53f531373b95632323fdbbac8d
- # Parent c7586e2a92645e473645847a7b69a6dc52be4276
- added b
-
- diff -r c7586e2a9264 -r 171614c9a791 b
- --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- +++ b/b Thu Jan 01 00:00:00 1970 +0000
- @@ -0,0 +1,1 @@
- +bar
-
-Resolving orphans to get back to a normal graph
-
- $ hg evolve --all
- move:[3] added c
- atop:[8] added b
- move:[4] added d
- working directory is now at 4ae4427ee9f8
- $ hg glog
- @ 10:4ae4427ee9f8 added d
- | () [default] draft
- o 9:917281f93fcb added c
- | () [default] draft
- o 8:171614c9a791 added b
- | () [default] draft
- o 1:c7586e2a9264 added a
- | () [default] draft
- o 0:8fa14d15e168 added hgignore
- () [default] draft
-
-More testing!
-
- $ hg up .^^
- 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
- $ echo x > x
- $ hg ci -Aqm "added x"
- $ hg glog -r .
- @ 11:71a392c714b5 added x
- | () [default] draft
- ~
-
- $ echo foo > x
- $ hg branch bar
- marked working directory as branch bar
- (branches are permanent and global, did you want a bookmark?)
- $ hg amend -m "added foo to x"
-
- $ hg up 71a392c714b5 --hidden
- 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
- updated to hidden changeset 71a392c714b5
- (hidden revision '71a392c714b5' was rewritten as: 1e1a50385a7d)
- working directory parent is obsolete! (71a392c714b5)
- (use 'hg evolve' to update to its successor: 1e1a50385a7d)
- $ hg rebase -r . -d 4ae4427ee9f8 --config experimental.evolution.allowdivergence=True
- rebasing 11:71a392c714b5 "added x"
- 2 new content-divergent changesets
-
- $ hg glog
- @ 13:1e4f6b3bb39b added x
- | () [default] draft
- | * 12:1e1a50385a7d added foo to x
- | | () [bar] draft
- o | 10:4ae4427ee9f8 added d
- | | () [default] draft
- o | 9:917281f93fcb added c
- |/ () [default] draft
- o 8:171614c9a791 added b
- | () [default] draft
- o 1:c7586e2a9264 added a
- | () [default] draft
- o 0:8fa14d15e168 added hgignore
- () [default] draft
-
- $ hg evolve --content-divergent
- merge:[13] added x
- with: [12] added foo to x
- base: [11] added x
- rebasing "other" content-divergent changeset 1e1a50385a7d on 4ae4427ee9f8
- updating to "local" side of the conflict: 1e4f6b3bb39b
- merging "other" content-divergent changeset '80cc9b1ec650'
- 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
- working directory is now at b006cf317e0e
-
- $ hg exp
- # HG changeset patch
- # User test
- # Date 0 0
- # Thu Jan 01 00:00:00 1970 +0000
- # Branch bar
- # Node ID b006cf317e0ed16dbe786c439577475580f645f1
- # Parent 4ae4427ee9f8f0935211fd66360948b77ab5aee9
- added foo to x
-
- diff -r 4ae4427ee9f8 -r b006cf317e0e x
- --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- +++ b/x Thu Jan 01 00:00:00 1970 +0000
- @@ -0,0 +1,1 @@
- +foo
-
-The above `hg exp` and the following log call demonstrates that message, content
-and branch change is preserved in case of relocation
- $ hg glog
- @ 15:b006cf317e0e added foo to x
- | () [bar] draft
- o 10:4ae4427ee9f8 added d
- | () [default] draft
- o 9:917281f93fcb added c
- | () [default] draft
- o 8:171614c9a791 added b
- | () [default] draft
- o 1:c7586e2a9264 added a
- | () [default] draft
- o 0:8fa14d15e168 added hgignore
- () [default] draft
-
-Testing when both the content-divergence are on different parents and resolution
-will lead to conflicts
----------------------------------------------------------------------------------
-
- $ hg up .^^^
- 0 files updated, 0 files merged, 3 files removed, 0 files unresolved
-
- $ echo y > y
- $ hg ci -Aqm "added y"
- $ hg glog -r .
- @ 16:fc6ad2bac162 added y
- | () [default] draft
- ~
-
- $ echo bar > y
- $ hg amend
-
- $ hg up fc6ad2bac162 --hidden
- 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
- updated to hidden changeset fc6ad2bac162
- (hidden revision 'fc6ad2bac162' was rewritten as: 2a9f6ccbdeba)
- working directory parent is obsolete! (fc6ad2bac162)
- (use 'hg evolve' to update to its successor: 2a9f6ccbdeba)
- $ hg rebase -r . -d b006cf317e0e --config experimental.evolution.allowdivergence=True
- rebasing 16:fc6ad2bac162 "added y"
- 2 new content-divergent changesets
- $ echo wat > y
- $ hg amend
-
- $ hg glog
- @ 19:b4575ed6fcfc added y
- | () [bar] draft
- | * 17:2a9f6ccbdeba added y
- | | () [default] draft
- o | 15:b006cf317e0e added foo to x
- | | () [bar] draft
- o | 10:4ae4427ee9f8 added d
- | | () [default] draft
- o | 9:917281f93fcb added c
- |/ () [default] draft
- o 8:171614c9a791 added b
- | () [default] draft
- o 1:c7586e2a9264 added a
- | () [default] draft
- o 0:8fa14d15e168 added hgignore
- () [default] draft
-
- $ hg evolve --content-divergent
- merge:[19] added y
- with: [17] added y
- base: [16] added y
- rebasing "other" content-divergent changeset 2a9f6ccbdeba on b006cf317e0e
- updating to "local" side of the conflict: b4575ed6fcfc
- merging "other" content-divergent changeset '48f745db3f53'
- merging y
- warning: conflicts while merging y! (edit, then use 'hg resolve --mark')
- 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
- fix conflicts and see `hg help evolve.interrupted`
- [1]
-
- $ echo watbar > y
- $ hg resolve -m
- (no more unresolved files)
- continue: hg evolve --continue
- $ hg evolve --continue
- working directory is now at 7bbcf24ddecf
-
- $ hg glog
- @ 21:7bbcf24ddecf added y
- | () [bar] draft
- o 15:b006cf317e0e added foo to x
- | () [bar] draft
- o 10:4ae4427ee9f8 added d
- | () [default] draft
- o 9:917281f93fcb added c
- | () [default] draft
- o 8:171614c9a791 added b
- | () [default] draft
- o 1:c7586e2a9264 added a
- | () [default] draft
- o 0:8fa14d15e168 added hgignore
- () [default] draft
-
- $ hg obslog -r . --all
- @ 7bbcf24ddecf (21) added y
- |\
- x | 48f745db3f53 (20) added y
- | | rewritten(branch, content) as 7bbcf24ddecf using evolve by test (Thu Jan 01 00:00:00 1970 +0000)
- | |
- | x b4575ed6fcfc (19) added y
- | | rewritten(content) as 7bbcf24ddecf using evolve by test (Thu Jan 01 00:00:00 1970 +0000)
- | |
- x | 2a9f6ccbdeba (17) added y
- | | rewritten(parent) as 48f745db3f53 using evolve by test (Thu Jan 01 00:00:00 1970 +0000)
- | |
- | x 96b677f01b81 (18) added y
- |/ rewritten(content) as b4575ed6fcfc using amend by test (Thu Jan 01 00:00:00 1970 +0000)
- |
- x fc6ad2bac162 (16) added y
- rewritten(content) as 2a9f6ccbdeba using amend by test (Thu Jan 01 00:00:00 1970 +0000)
- rewritten(branch, parent) as 96b677f01b81 using rebase by test (Thu Jan 01 00:00:00 1970 +0000)
-
-
-checking that relocated commit is there
- $ hg exp 48f745db3f53 --hidden
- # HG changeset patch
- # User test
- # Date 0 0
- # Thu Jan 01 00:00:00 1970 +0000
- # Node ID 48f745db3f5300363ca248b9aeab20ff2a55fbb3
- # Parent b006cf317e0ed16dbe786c439577475580f645f1
- added y
-
- diff -r b006cf317e0e -r 48f745db3f53 y
- --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- +++ b/y Thu Jan 01 00:00:00 1970 +0000
- @@ -0,0 +1,1 @@
- +bar
-
-Testing when the relocation will result in conflicts and merging also:
-----------------------------------------------------------------------
-
- $ hg glog
- @ 21:7bbcf24ddecf added y
- | () [bar] draft
- o 15:b006cf317e0e added foo to x
- | () [bar] draft
- o 10:4ae4427ee9f8 added d
- | () [default] draft
- o 9:917281f93fcb added c
- | () [default] draft
- o 8:171614c9a791 added b
- | () [default] draft
- o 1:c7586e2a9264 added a
- | () [default] draft
- o 0:8fa14d15e168 added hgignore
- () [default] draft
-
- $ hg up .^^^^
- 0 files updated, 0 files merged, 4 files removed, 0 files unresolved
-
- $ echo z > z
- $ hg ci -Aqm "added z"
- $ hg glog -r .
- @ 22:daf1de08f3b0 added z
- | () [default] draft
- ~
-
- $ echo foo > y
- $ hg add y
- $ hg amend
-
- $ hg up daf1de08f3b0 --hidden
- 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
- updated to hidden changeset daf1de08f3b0
- (hidden revision 'daf1de08f3b0' was rewritten as: 3f7a1f693080)
- working directory parent is obsolete! (daf1de08f3b0)
- (use 'hg evolve' to update to its successor: 3f7a1f693080)
- $ hg rebase -r . -d 7bbcf24ddecf --config experimental.evolution.allowdivergence=True
- rebasing 22:daf1de08f3b0 "added z"
- 2 new content-divergent changesets
- $ echo bar > z
- $ hg amend
-
- $ hg glog
- @ 25:53242575ffa9 added z
- | () [bar] draft
- | * 23:3f7a1f693080 added z
- | | () [default] draft
- o | 21:7bbcf24ddecf added y
- | | () [bar] draft
- o | 15:b006cf317e0e added foo to x
- | | () [bar] draft
- o | 10:4ae4427ee9f8 added d
- | | () [default] draft
- o | 9:917281f93fcb added c
- |/ () [default] draft
- o 8:171614c9a791 added b
- | () [default] draft
- o 1:c7586e2a9264 added a
- | () [default] draft
- o 0:8fa14d15e168 added hgignore
- () [default] draft
-
- $ hg evolve --content-divergent --any
- merge:[25] added z
- with: [23] added z
- base: [22] added z
- rebasing "other" content-divergent changeset 3f7a1f693080 on 7bbcf24ddecf
- merging y
- warning: conflicts while merging y! (edit, then use 'hg resolve --mark')
- fix conflicts and see `hg help evolve.interrupted`
- [1]
-
- $ hg diff
- diff -r 7bbcf24ddecf y
- --- a/y Thu Jan 01 00:00:00 1970 +0000
- +++ b/y Thu Jan 01 00:00:00 1970 +0000
- @@ -1,1 +1,5 @@
- +<<<<<<< destination: 7bbcf24ddecf bar - test: added y
- watbar
- +=======
- +foo
- +>>>>>>> evolving: 3f7a1f693080 - test: added z
- diff -r 7bbcf24ddecf z
- --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- +++ b/z Thu Jan 01 00:00:00 1970 +0000
- @@ -0,0 +1,1 @@
- +z
-
- $ echo foo > y
- $ hg resolve -m
- (no more unresolved files)
- continue: hg evolve --continue
-
- $ hg evolve --continue
- evolving 23:3f7a1f693080 "added z"
- updating to "local" side of the conflict: 53242575ffa9
- merging "other" content-divergent changeset 'cdb0643c69fc'
- merging y
- warning: conflicts while merging y! (edit, then use 'hg resolve --mark')
- 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
- fix conflicts and see `hg help evolve.interrupted`
- [1]
-
- $ hg diff
- diff -r 53242575ffa9 y
- --- a/y Thu Jan 01 00:00:00 1970 +0000
- +++ b/y Thu Jan 01 00:00:00 1970 +0000
- @@ -1,1 +1,5 @@
- +<<<<<<< local: 53242575ffa9 bar - test: added z
- watbar
- +=======
- +foo
- +>>>>>>> other: cdb0643c69fc - test: added z
-
- $ echo foo > y
- $ hg resolve -m
- (no more unresolved files)
- continue: hg evolve --continue
- $ hg evolve --continue
- working directory is now at 6fc7d9682de6
-
- $ hg glog
- @ 27:6fc7d9682de6 added z
- | () [bar] draft
- o 21:7bbcf24ddecf added y
- | () [bar] draft
- o 15:b006cf317e0e added foo to x
- | () [bar] draft
- o 10:4ae4427ee9f8 added d
- | () [default] draft
- o 9:917281f93fcb added c
- | () [default] draft
- o 8:171614c9a791 added b
- | () [default] draft
- o 1:c7586e2a9264 added a
- | () [default] draft
- o 0:8fa14d15e168 added hgignore
- () [default] draft
-
- $ hg exp
- # HG changeset patch
- # User test
- # Date 0 0
- # Thu Jan 01 00:00:00 1970 +0000
- # Branch bar
- # Node ID 6fc7d9682de6e3bee6c8b1266b756ed7d522b7e4
- # Parent 7bbcf24ddecfe97d7c2ac6fa8c07c155c8fda47b
- added z
-
- diff -r 7bbcf24ddecf -r 6fc7d9682de6 y
- --- a/y Thu Jan 01 00:00:00 1970 +0000
- +++ b/y Thu Jan 01 00:00:00 1970 +0000
- @@ -1,1 +1,1 @@
- -watbar
- +foo
- diff -r 7bbcf24ddecf -r 6fc7d9682de6 z
- --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- +++ b/z Thu Jan 01 00:00:00 1970 +0000
- @@ -0,0 +1,1 @@
- +bar
-
- $ cd ..
-
-Resolving content-divergence of a stack with same parents
----------------------------------------------------------
-
- $ hg init stacktest
- $ cd stacktest
- $ echo ".*\.orig" > .hgignore
- $ hg add .hgignore
- $ hg ci -m "added hgignore"
- $ for ch in a b c d; do echo foo > $ch; hg add $ch; hg ci -qm "added "$ch; done;
-
- $ hg glog
- @ 4:c41c793e0ef1 added d
- | () [default] draft
- o 3:ca1b80f7960a added c
- | () [default] draft
- o 2:b1661037fa25 added b
- | () [default] draft
- o 1:c7586e2a9264 added a
- | () [default] draft
- o 0:8fa14d15e168 added hgignore
- () [default] draft
-
- $ cd ..
- $ hg init stack2
- $ cd stack2
- $ hg pull ../stacktest
- pulling from ../stacktest
- requesting all changes
- adding changesets
- adding manifests
- adding file changes
- added 5 changesets with 5 changes to 5 files
- new changesets 8fa14d15e168:c41c793e0ef1 (5 drafts)
- (run 'hg update' to get a working copy)
- $ hg glog
- o 4:c41c793e0ef1 added d
- | () [default] draft
- o 3:ca1b80f7960a added c
- | () [default] draft
- o 2:b1661037fa25 added b
- | () [default] draft
- o 1:c7586e2a9264 added a
- | () [default] draft
- o 0:8fa14d15e168 added hgignore
- () [default] draft
-
- $ hg up c7586e2a9264
- 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
- $ echo bar > a
- $ hg amend -m "watbar to a"
- 3 new orphan changesets
- $ echo wat > a
- $ hg amend -m "watbar to a"
- $ hg evolve --all
- move:[2] added b
- atop:[6] watbar to a
- move:[3] added c
- move:[4] added d
- working directory is now at 15c781f93cac
- $ hg glog
- @ 9:15c781f93cac added d
- | () [default] draft
- o 8:9e5fb1d5b955 added c
- | () [default] draft
- o 7:88516dccf68a added b
- | () [default] draft
- o 6:82b74d5dc678 watbar to a
- | () [default] draft
- o 0:8fa14d15e168 added hgignore
- () [default] draft
-
- $ cd ../stacktest
- $ hg up .^^^
- 0 files updated, 0 files merged, 3 files removed, 0 files unresolved
- $ echo wat > a
- $ hg amend -m "watbar to a"
- 3 new orphan changesets
- $ hg evolve --all
- move:[2] added b
- atop:[5] watbar to a
- move:[3] added c
- move:[4] added d
- working directory is now at c72d2885eb51
- $ hg glog
- @ 8:c72d2885eb51 added d
- | () [default] draft
- o 7:3ce4be6d8e5e added c
- | () [default] draft
- o 6:d5f148423c16 added b
- | () [default] draft
- o 5:8e222f257bbf watbar to a
- | () [default] draft
- o 0:8fa14d15e168 added hgignore
- () [default] draft
-
- $ hg pull ../stack2
- pulling from ../stack2
- searching for changes
- adding changesets
- adding manifests
- adding file changes
- added 4 changesets with 0 changes to 4 files (+1 heads)
- 5 new obsolescence markers
- 8 new content-divergent changesets
- new changesets 82b74d5dc678:15c781f93cac (4 drafts)
- (run 'hg heads' to see heads, 'hg merge' to merge)
-
- $ hg glog
- * 12:15c781f93cac added d
- | () [default] draft
- * 11:9e5fb1d5b955 added c
- | () [default] draft
- * 10:88516dccf68a added b
- | () [default] draft
- * 9:82b74d5dc678 watbar to a
- | () [default] draft
- | @ 8:c72d2885eb51 added d
- | | () [default] draft
- | * 7:3ce4be6d8e5e added c
- | | () [default] draft
- | * 6:d5f148423c16 added b
- | | () [default] draft
- | * 5:8e222f257bbf watbar to a
- |/ () [default] draft
- o 0:8fa14d15e168 added hgignore
- () [default] draft
-
- $ hg evolve --all --content-divergent
- merge:[5] watbar to a
- with: [9] watbar to a
- base: [1] added a
- updating to "local" side of the conflict: 8e222f257bbf
- merging "other" content-divergent changeset '82b74d5dc678'
- 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
- 6 new orphan changesets
- merge:[6] added b
- with: [10] added b
- base: [2] added b
- updating to "local" side of the conflict: d5f148423c16
- merging "other" content-divergent changeset '88516dccf68a'
- 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
- merge:[7] added c
- with: [11] added c
- base: [3] added c
- updating to "local" side of the conflict: 3ce4be6d8e5e
- merging "other" content-divergent changeset '9e5fb1d5b955'
- 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
- merge:[8] added d
- with: [12] added d
- base: [4] added d
- updating to "local" side of the conflict: c72d2885eb51
- merging "other" content-divergent changeset '15c781f93cac'
- 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
- working directory is now at 038fe7db3d88
-
- $ hg glog
- @ 16:038fe7db3d88 added d
- | () [default] draft
- o 15:b2cac10f3836 added c
- | () [default] draft
- o 14:eadfd9d70680 added b
- | () [default] draft
- o 13:f66f262fff6c watbar to a
- | () [default] draft
- o 0:8fa14d15e168 added hgignore
- () [default] draft
-
-Resolving content-divergence of a stack with different parents
----------------------------------------------------------
-
- $ cd ..
- $ hg init stackrepo1
- $ cd stackrepo1
- $ echo ".*\.orig" > .hgignore
- $ hg add .hgignore
- $ hg ci -m "added hgignore"
-
- $ for ch in a b c d;
- > do echo foo > $ch;
- > hg add $ch;
- > hg ci -qm "added "$ch;
- > done;
-
- $ hg glog
- @ 4:c41c793e0ef1 added d
- | () [default] draft
- o 3:ca1b80f7960a added c
- | () [default] draft
- o 2:b1661037fa25 added b
- | () [default] draft
- o 1:c7586e2a9264 added a
- | () [default] draft
- o 0:8fa14d15e168 added hgignore
- () [default] draft
-
- $ cd ..
- $ hg init stackrepo2
- $ cd stackrepo2
- $ hg pull ../stackrepo1
- pulling from ../stackrepo1
- requesting all changes
- adding changesets
- adding manifests
- adding file changes
- added 5 changesets with 5 changes to 5 files
- new changesets 8fa14d15e168:c41c793e0ef1 (5 drafts)
- (run 'hg update' to get a working copy)
-
- $ hg glog
- o 4:c41c793e0ef1 added d
- | () [default] draft
- o 3:ca1b80f7960a added c
- | () [default] draft
- o 2:b1661037fa25 added b
- | () [default] draft
- o 1:c7586e2a9264 added a
- | () [default] draft
- o 0:8fa14d15e168 added hgignore
- () [default] draft
-
- $ hg up 8fa14d15e168
- 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
- $ echo newfile > newfile
- $ hg ci -Am "add newfile"
- adding newfile
- created new head
- $ hg rebase -s c7586e2a9264 -d .
- rebasing 1:c7586e2a9264 "added a"
- rebasing 2:b1661037fa25 "added b"
- rebasing 3:ca1b80f7960a "added c"
- rebasing 4:c41c793e0ef1 "added d"
-
- $ hg glog
- o 9:d45f050514c2 added d
- | () [default] draft
- o 8:8ed612937375 added c
- | () [default] draft
- o 7:6eb54b5af3fb added b
- | () [default] draft
- o 6:c04ff147ef79 added a
- | () [default] draft
- @ 5:2228e3b74514 add newfile
- | () [default] draft
- o 0:8fa14d15e168 added hgignore
- () [default] draft
-
- $ cd ../stackrepo1
- $ hg up .^^^
- 0 files updated, 0 files merged, 3 files removed, 0 files unresolved
- $ echo wat > a
- $ hg amend -m "watbar to a"
- 3 new orphan changesets
- $ hg evolve --all
- move:[2] added b
- atop:[5] watbar to a
- move:[3] added c
- move:[4] added d
- working directory is now at c72d2885eb51
-
- $ hg glog
- @ 8:c72d2885eb51 added d
- | () [default] draft
- o 7:3ce4be6d8e5e added c
- | () [default] draft
- o 6:d5f148423c16 added b
- | () [default] draft
- o 5:8e222f257bbf watbar to a
- | () [default] draft
- o 0:8fa14d15e168 added hgignore
- () [default] draft
-
- $ hg pull ../stackrepo2
- pulling from ../stackrepo2
- searching for changes
- adding changesets
- adding manifests
- adding file changes
- added 5 changesets with 1 changes to 5 files (+1 heads)
- 4 new obsolescence markers
- 8 new content-divergent changesets
- new changesets 2228e3b74514:d45f050514c2 (5 drafts)
- (run 'hg heads' to see heads, 'hg merge' to merge)
-
- $ hg glog
- * 13:d45f050514c2 added d
- | () [default] draft
- * 12:8ed612937375 added c
- | () [default] draft
- * 11:6eb54b5af3fb added b
- | () [default] draft
- * 10:c04ff147ef79 added a
- | () [default] draft
- o 9:2228e3b74514 add newfile
- | () [default] draft
- | @ 8:c72d2885eb51 added d
- | | () [default] draft
- | * 7:3ce4be6d8e5e added c
- | | () [default] draft
- | * 6:d5f148423c16 added b
- | | () [default] draft
- | * 5:8e222f257bbf watbar to a
- |/ () [default] draft
- o 0:8fa14d15e168 added hgignore
- () [default] draft
-
- $ hg evolve --all --content-divergent
- merge:[10] added a
- with: [5] watbar to a
- base: [1] added a
- rebasing "other" content-divergent changeset 8e222f257bbf on 2228e3b74514
- updating to "local" side of the conflict: c04ff147ef79
- merging "other" content-divergent changeset '186bdc2cdfa2'
- 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
- 6 new orphan changesets
- merge:[11] added b
- with: [6] added b
- base: [2] added b
- rebasing "other" content-divergent changeset d5f148423c16 on c04ff147ef79
- updating to "local" side of the conflict: 6eb54b5af3fb
- merging "other" content-divergent changeset '8542f15656e7'
- 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
- merge:[12] added c
- with: [7] added c
- base: [3] added c
- rebasing "other" content-divergent changeset 3ce4be6d8e5e on 6eb54b5af3fb
- updating to "local" side of the conflict: 8ed612937375
- merging "other" content-divergent changeset 'a690ce53104a'
- 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
- merge:[13] added d
- with: [8] added d
- base: [4] added d
- rebasing "other" content-divergent changeset c72d2885eb51 on 8ed612937375
- updating to "local" side of the conflict: d45f050514c2
- merging "other" content-divergent changeset '1d1772990a3b'
- 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
- working directory is now at 5f7a38bdb75c
-
- $ hg glog
- @ 21:5f7a38bdb75c added d
- | () [default] draft
- o 19:9865d598f0e0 added c
- | () [default] draft
- o 17:ac70b8c8eb63 added b
- | () [default] draft
- o 15:74fbf3e6a0b6 watbar to a
- | () [default] draft
- o 9:2228e3b74514 add newfile
- | () [default] draft
- o 0:8fa14d15e168 added hgignore
- () [default] draft
-
-Test to make sure that evolve don't fall into unrecoverable state (issue6053)
-------------------------------------------------------------------------------
-
-It happened when two divergent csets has different parent (need relocation)
-and resolution parent is obsolete. So this issue triggered when during
-relocation we hit conflicts. So lets make the repo as described.
-
- $ cd ..
- $ hg init localside
- $ cd localside
- $ for ch in a b c d e; do
- > echo $ch > $ch;
- > hg add $ch;
- > hg ci -m "added "$ch;
- > done;
-
- $ hg glog
- @ 4:8d71eadcc9df added e
- | () [default] draft
- o 3:9150fe93bec6 added d
- | () [default] draft
- o 2:155349b645be added c
- | () [default] draft
- o 1:5f6d8a4bf34a added b
- | () [default] draft
- o 0:9092f1db7931 added a
- () [default] draft
-
- $ echo ee > e
- $ hg amend -m "updated e"
- $ hg up 1 -q
-
-To make sure we hit conflict while relocating
- $ echo dd > d
- $ echo ee > e
- $ hg add d e
- $ hg ci -m "updated e"
- created new head
-
-Lets create divergence
- $ hg prune 4 -s . --hidden
- 1 changesets pruned
- 2 new content-divergent changesets
-
-Making obsolete resolution parent
- $ hg prune 3
- 1 changesets pruned
- 1 new orphan changesets
-
- $ hg glog
- @ 6:de4ea3103326 updated e
- | () [default] draft
- | * 5:ff6f7cd76a7c updated e
- | | () [default] draft
- | x 3:9150fe93bec6 added d
- | | () [default] draft
- | o 2:155349b645be added c
- |/ () [default] draft
- o 1:5f6d8a4bf34a added b
- | () [default] draft
- o 0:9092f1db7931 added a
- () [default] draft
-
- $ hg evolve --content-divergent --any
- merge:[5] updated e
- with: [6] updated e
- base: [4] added e
- rebasing "other" content-divergent changeset de4ea3103326 on 9150fe93bec6
- merging d
- warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
- fix conflicts and see `hg help evolve.interrupted`
- [1]
-
- $ hg diff
- diff -r 9150fe93bec6 d
- --- a/d Thu Jan 01 00:00:00 1970 +0000
- +++ b/d Thu Jan 01 00:00:00 1970 +0000
- @@ -1,1 +1,5 @@
- +<<<<<<< destination: 9150fe93bec6 - test: added d
- d
- +=======
- +dd
- +>>>>>>> evolving: de4ea3103326 - test: updated e
- diff -r 9150fe93bec6 e
- --- /dev/null Thu Jan 01 00:00:00 1970 +0000
- +++ b/e Thu Jan 01 00:00:00 1970 +0000
- @@ -0,0 +1,1 @@
- +ee
-
- $ echo dresolved > d
- $ hg res -m
- (no more unresolved files)
- continue: hg evolve --continue
-
- $ hg evolve --continue
- evolving 6:de4ea3103326 "updated e"
- updating to "local" side of the conflict: ff6f7cd76a7c
- merging "other" content-divergent changeset 'e504bd82de7e'
- 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
- working directory is now at 83b1664a580f
-
- $ hg glog -l1
- @ 8:83b1664a580f updated e
- | () [default] draft
- ~