--- a/tests/test-evolve-phase-divergence.t Wed Apr 10 16:11:59 2019 +0200
+++ b/tests/test-evolve-phase-divergence.t Thu Apr 11 22:13:55 2019 +0200
@@ -32,7 +32,9 @@
Setting up a private non-publishing repo
----------------------------------------
- $ hg clone -U public private
+ $ hg clone public private
+ updating to branch default
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd private
$ cat >> .hg/hgrc <<EOF
> [ui]
@@ -47,6 +49,13 @@
$ cp -a private alice
$ cp -a private bob
+ $ cp -a private split
+ $ cp -a private split-across-branches
+ $ cp -a private split-and-amend
+ $ cp -a private merge-no-conflict
+
+Simple phase-divergence case
+============================
Creating a phase-divergence changeset
-------------------------------------
@@ -54,8 +63,6 @@
Alice creating a draft changeset and pushing to main private repo
$ cd alice
- $ hg update
- 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo a >> a
$ hg commit -u alice -m 'modify a'
$ hg push ../private
@@ -88,7 +95,7 @@
$ hg glog
o 1:4d1169d82e47 modify a
| () draft
- o 0:d3873e73d99e init
+ @ 0:d3873e73d99e init
() public
$ hg push ../public
@@ -102,7 +109,7 @@
$ hg glog
o 1:4d1169d82e47 modify a
| () public
- o 0:d3873e73d99e init
+ @ 0:d3873e73d99e init
() public
*But* Alice decided to amend the changeset she had and then pulling from public
@@ -195,8 +202,7 @@
$ hg evolve --phase-divergent
recreate:[2] tweak a
atop:[1] modify a
- computing new diff
- committed as 4d1169d82e47
+ no changes to commit
working directory is now at 4d1169d82e47
$ hg glog
@@ -227,9 +233,11 @@
2 new obsolescence markers
[1]
+phase-divergence that lead to new commit and bookmark movement
+==============================================================
+
Creating more phase-divergence where a new resolution commit will be formed and
also testing bookmark movement
---------------------------------------------------------------------------------
Alice created a commit and push to private non-publishing repo
@@ -310,7 +318,6 @@
$ hg evolve --phase-divergent
recreate:[4] added bar to foo
atop:[3] added foo to foo
- computing new diff
committed as 3d62500c673d
working directory is now at 3d62500c673d
@@ -388,11 +395,14 @@
added 1 changesets with 1 changes to 1 files
2 new obsolescence markers
+
+phase divergence rebasing back to old changeset - with (unrelated?) conflict
+============================================================================
+
Creating a phasedivergence changeset where the divergent changeset changed in a
way that we rebase that on old public changeset, there will be conflicts, but
the `hg evolve` command handles it very well and uses `hg revert` logic to
prevent any conflicts
--------------------------------------------------------------------------------
Alice creates one more changeset and pushes to private repo
@@ -461,7 +471,6 @@
$ hg evolve --phase-divergent
recreate:[7] foo to bar
atop:[6] added bar to bar
- computing new diff
committed as 502e73736632
working directory is now at 502e73736632
@@ -517,9 +526,11 @@
added 1 changesets with 1 changes to 1 files
2 new obsolescence markers
+different parents for successors and predecessors
+=================================================
+
Creating phase-divergence with divergent changeset and precursor having
different parents
------------------------------------------------------------------------
Alice creates a changeset and pushes to private repo
@@ -598,8 +609,7 @@
atop:[9] added x to x
rebasing to destination parent: 502e73736632
(leaving bookmark bm)
- computing new diff
- committed as 2352021b3785
+ no changes to commit
working directory is now at 2352021b3785
XXX: we should move bookmark here
@@ -645,9 +655,11 @@
@@ -0,0 +1,1 @@
+x
-Creating divergence with parent and content change both but not resulting in
+divergence with parent+content change both, no conflict
+=======================================================
+
+Creating divergence with parent cand content change both but not resulting in
conflicts
------------------------------------------------------------------------------
Alice is tired of pushing and pulling and will create phase-divergence locally
@@ -717,7 +729,6 @@
recreate:[14] y to y and foobar to foo
atop:[12] y to y and foobar to foo
rebasing to destination parent: 2352021b3785
- computing new diff
committed as 8c2bb6fb44e9
working directory is now at 8c2bb6fb44e9
@@ -759,9 +770,11 @@
o 0:d3873e73d99e init
() public
+divergence with parent+content change both, with conflict
+=========================================================
+
Creating divergence with parent and content change both which results in
conflicts while rebasing on parent
------------------------------------------------------------------------------
$ echo l > l
$ hg ci -Aqm "added l to l"
@@ -821,7 +834,6 @@
$ hg evolve --continue
evolving 19:5fd38c0de46e "added l to l"
- computing new diff
committed as e3090241a10c
working directory is now at e3090241a10c
@@ -918,8 +930,7 @@
recreate:[24] added f
atop:[23] added g
rebasing to destination parent: 21ae52e414e6
- computing new diff
- committed as 428f7900a969
+ no changes to commit
working directory is now at 428f7900a969
$ hg glog -r f3794e5a91dc::
@@ -933,127 +944,141 @@
| () public
~
-When the public changesets is splitted causing phase-divergence
----------------------------------------------------------------
+When the public changesets is split causing phase-divergence
+------------------------------------------------------------
+
+ $ cd ../split
$ echo m > m
$ echo n > n
$ hg ci -Aqm "added m and n"
- $ hg glog -r 21ae52e414e6::
- @ 26:849cee0a874b added m and n
+ $ hg glog
+ @ 1:a51bce62c219 added m and n
| () draft
- o 23:428f7900a969 added g
- | () public
- o 22:21ae52e414e6 added f
- | () public
- ~
+ o 0:d3873e73d99e init
+ () public
$ hg prev
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
- [23] added g
+ [0] init
$ echo m > m
$ hg ci -Aqm "added m"
$ echo n > n
$ hg ci -Aqm "added n"
- $ hg glog -r 428f7900a969::
- @ 28:63ccb8ea7cae added n
+ $ hg glog
+ @ 3:e1154ec0206a added n
| () draft
- o 27:f313e2b90e70 added m
+ o 2:4f25cd9cd2bf added m
| () draft
- | o 26:849cee0a874b added m and n
+ | o 1:a51bce62c219 added m and n
|/ () draft
- o 23:428f7900a969 added g
- | () public
- ~
+ o 0:d3873e73d99e init
+ () public
- $ hg prune -r 849cee0a874b --succ f313e2b90e70 --succ 63ccb8ea7cae --split
+ $ hg prune -r a51bce62c219 --succ 4f25cd9cd2bf --succ e1154ec0206a --split
1 changesets pruned
- $ hg phase -r 849cee0a874b --hidden --public
+ $ hg phase -r a51bce62c219 --hidden --public
2 new phase-divergent changesets
- $ hg glog -r 428f7900a969::
- @ 28:63ccb8ea7cae added n
+ $ hg glog
+ @ 3:e1154ec0206a added n
| () draft
- * 27:f313e2b90e70 added m
+ * 2:4f25cd9cd2bf added m
| () draft
- | o 26:849cee0a874b added m and n
+ | o 1:a51bce62c219 added m and n
|/ () public
- o 23:428f7900a969 added g
- | () public
- ~
+ o 0:d3873e73d99e init
+ () public
$ hg evolve --all --phase-divergent
- recreate:[27] added m
- atop:[26] added m and n
- computing new diff
- committed as 870e1c3eddc3
+ recreate:[2] added m
+ atop:[1] added m and n
+ committed as 86419909e017
1 new orphan changesets
- recreate:[28] added n
- atop:[26] added m and n
- rebasing to destination parent: 428f7900a969
- computing new diff
- committed as 154b0179fb9b
- working directory is now at 154b0179fb9b
+ recreate:[3] added n
+ atop:[1] added m and n
+ rebasing to destination parent: d3873e73d99e
+ committed as 89ba615ea1ec
+ working directory is now at 89ba615ea1ec
XXX: this is messy, we should solve things in better way
- $ hg glog -r 428f7900a969:: --hidden
- @ 31:154b0179fb9b phase-divergent update to 849cee0a874b:
+ $ hg glog --hidden
+ @ 6:89ba615ea1ec phase-divergent update to a51bce62c219:
| () draft
- | x 30:1ebf33547a82 added n
+ | x 5:ee4af146c5cf added n
| | () draft
- +---o 29:870e1c3eddc3 phase-divergent update to 849cee0a874b:
+ +---o 4:86419909e017 phase-divergent update to a51bce62c219:
| | () draft
- | | x 28:63ccb8ea7cae added n
+ | | x 3:e1154ec0206a added n
| | | () draft
- | | x 27:f313e2b90e70 added m
+ | | x 2:4f25cd9cd2bf added m
| |/ () draft
- o | 26:849cee0a874b added m and n
+ o | 1:a51bce62c219 added m and n
|/ () public
- o 23:428f7900a969 added g
- | () public
- ~
+ o 0:d3873e73d99e init
+ () public
+
+ $ hg obslog -r a51bce62c219 --all
+ o 86419909e017 (4) phase-divergent update to a51bce62c219:
+ |
+ | @ 89ba615ea1ec (6) phase-divergent update to a51bce62c219:
+ | |
+ x | 4f25cd9cd2bf (2) added m
+ | | rewritten(description, parent, content) as 86419909e017 using evolve by test (Thu Jan 01 00:00:00 1970 +0000)
+ | |
+ | x ee4af146c5cf (5) added n
+ | | rewritten(description, parent, content) as 89ba615ea1ec using evolve by test (Thu Jan 01 00:00:00 1970 +0000)
+ | |
+ | x e1154ec0206a (3) added n
+ |/ rewritten(parent) as ee4af146c5cf using evolve by test (Thu Jan 01 00:00:00 1970 +0000)
+ |
+ o a51bce62c219 (1) added m and n
+ rewritten(description, parent, content) as 4f25cd9cd2bf, e1154ec0206a using prune by test (Thu Jan 01 00:00:00 1970 +0000)
+
XXX: not sure this is the correct
- $ hg exp 154b0179fb9b
+ $ hg exp 89ba615ea1ec
# HG changeset patch
# User test
# Date 0 0
# Thu Jan 01 00:00:00 1970 +0000
- # Node ID 154b0179fb9b53d2f853d6ba04740bb3d7a5cabe
- # Parent 849cee0a874be7c4e75dfacb5ad72aa5696951ba
- phase-divergent update to 849cee0a874b:
+ # Node ID 89ba615ea1ec3ba5b25db9f7897eb29712d7e5d6
+ # Parent a51bce62c219f024bc0ae0cc0e3957ee77d7cb46
+ phase-divergent update to a51bce62c219:
added n
- diff -r 849cee0a874b -r 154b0179fb9b m
+ diff -r a51bce62c219 -r 89ba615ea1ec m
--- a/m Thu Jan 01 00:00:00 1970 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-m
XXX: not sure this is correct
- $ hg exp 870e1c3eddc3
+ $ hg exp 86419909e017
# HG changeset patch
# User test
# Date 0 0
# Thu Jan 01 00:00:00 1970 +0000
- # Node ID 870e1c3eddc34cc475e8e13d2fe1934210c1937e
- # Parent 849cee0a874be7c4e75dfacb5ad72aa5696951ba
- phase-divergent update to 849cee0a874b:
+ # Node ID 86419909e01787959aa6471aee605c6d604a3e0d
+ # Parent a51bce62c219f024bc0ae0cc0e3957ee77d7cb46
+ phase-divergent update to a51bce62c219:
added m
- diff -r 849cee0a874b -r 870e1c3eddc3 n
+ diff -r a51bce62c219 -r 86419909e017 n
--- a/n Thu Jan 01 00:00:00 1970 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-n
-When the public changeset is splitted across various branches
---------------------------------------------------------------
+When the public changeset is split across various topological branches
+======================================================================
+
+ $ cd ../split-across-branches
$ echo p > p
$ echo q > q
@@ -1061,177 +1086,870 @@
$ hg prev
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
- [31] phase-divergent update to 849cee0a874b:
+ [0] init
$ echo p > p
$ hg ci -Aqm "added p"
$ hg prev
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
- [31] phase-divergent update to 849cee0a874b:
+ [0] init
$ echo q > q
$ hg ci -Aqm "added q"
- $ hg glog -r 154b0179fb9b::
- @ 34:e046341aa97c added q
+ $ hg glog
+ @ 3:bb87595f9a77 added q
| () draft
- | o 33:6f8c250eecff added p
+ | o 2:a47263294745 added p
|/ () draft
- | o 32:8a70f55b2af3 added p and q
+ | o 1:90859808ece6 added p and q
|/ () draft
- o 31:154b0179fb9b phase-divergent update to 849cee0a874b:
- | () draft
- ~
+ o 0:d3873e73d99e init
+ () public
- $ hg prune -r 8a70f55b2af3 --succ 6f8c250eecff --succ e046341aa97c --split
+ $ hg prune -r 90859808ece6 --succ a47263294745 --succ bb87595f9a77 --split
1 changesets pruned
- $ hg phase -r 8a70f55b2af3 --public --hidden
+ $ hg phase -r 90859808ece6 --public --hidden
2 new phase-divergent changesets
- $ hg glog -r 154b0179fb9b::
- @ 34:e046341aa97c added q
+ $ hg glog
+ @ 3:bb87595f9a77 added q
| () draft
- | * 33:6f8c250eecff added p
+ | * 2:a47263294745 added p
|/ () draft
- | o 32:8a70f55b2af3 added p and q
+ | o 1:90859808ece6 added p and q
|/ () public
- o 31:154b0179fb9b phase-divergent update to 849cee0a874b:
- | () public
- ~
+ o 0:d3873e73d99e init
+ () public
$ hg evolve --list
- 6f8c250eecff: added p
- phase-divergent: 8a70f55b2af3 (immutable precursor)
+ a47263294745: added p
+ phase-divergent: 90859808ece6 (immutable precursor)
- e046341aa97c: added q
- phase-divergent: 8a70f55b2af3 (immutable precursor)
+ bb87595f9a77: added q
+ phase-divergent: 90859808ece6 (immutable precursor)
$ hg evolve --all --phase-divergent
- recreate:[33] added p
- atop:[32] added p and q
- computing new diff
- committed as f3e41d89b3c5
- recreate:[34] added q
- atop:[32] added p and q
- computing new diff
- committed as 605c306d4f87
- working directory is now at 605c306d4f87
+ recreate:[2] added p
+ atop:[1] added p and q
+ committed as 25875a9cb640
+ recreate:[3] added q
+ atop:[1] added p and q
+ committed as 26f564f94bcc
+ working directory is now at 26f564f94bcc
- $ hg glog -r 154b0179fb9b:: --hidden
- @ 36:605c306d4f87 phase-divergent update to 8a70f55b2af3:
+ $ hg glog --hidden
+ @ 5:26f564f94bcc phase-divergent update to 90859808ece6:
| () draft
- | o 35:f3e41d89b3c5 phase-divergent update to 8a70f55b2af3:
+ | o 4:25875a9cb640 phase-divergent update to 90859808ece6:
|/ () draft
- | x 34:e046341aa97c added q
+ | x 3:bb87595f9a77 added q
| | () draft
- | | x 33:6f8c250eecff added p
+ | | x 2:a47263294745 added p
| |/ () draft
- o | 32:8a70f55b2af3 added p and q
+ o | 1:90859808ece6 added p and q
|/ () public
- o 31:154b0179fb9b phase-divergent update to 849cee0a874b:
- | () public
- ~
+ o 0:d3873e73d99e init
+ () public
+
+ $ hg obslog -r 90859808ece6 --all
+ o 25875a9cb640 (4) phase-divergent update to 90859808ece6:
+ |
+ | @ 26f564f94bcc (5) phase-divergent update to 90859808ece6:
+ | |
+ x | a47263294745 (2) added p
+ | | rewritten(description, parent, content) as 25875a9cb640 using evolve by test (Thu Jan 01 00:00:00 1970 +0000)
+ | |
+ | x bb87595f9a77 (3) added q
+ |/ rewritten(description, parent, content) as 26f564f94bcc using evolve by test (Thu Jan 01 00:00:00 1970 +0000)
+ |
+ o 90859808ece6 (1) added p and q
+ rewritten(description, content) as a47263294745, bb87595f9a77 using prune by test (Thu Jan 01 00:00:00 1970 +0000)
+
XXX: not sure this is correct
- $ hg exp 605c306d4f87
+ $ hg exp 26f564f94bcc
# HG changeset patch
# User test
# Date 0 0
# Thu Jan 01 00:00:00 1970 +0000
- # Node ID 605c306d4f87fccfdb5e7dd1c750b6d4f813defb
- # Parent 8a70f55b2af35452916dc89401a5ecf6553646a5
- phase-divergent update to 8a70f55b2af3:
+ # Node ID 26f564f94bcc34e049eb112fd14ab1e5286f2325
+ # Parent 90859808ece64c9ca64dd29992db42353c70f164
+ phase-divergent update to 90859808ece6:
added q
- diff -r 8a70f55b2af3 -r 605c306d4f87 p
+ diff -r 90859808ece6 -r 26f564f94bcc p
--- a/p Thu Jan 01 00:00:00 1970 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-p
XXX: not sure this is correct
- $ hg exp f3e41d89b3c5
+ $ hg exp 25875a9cb640
# HG changeset patch
# User test
# Date 0 0
# Thu Jan 01 00:00:00 1970 +0000
- # Node ID f3e41d89b3c5f6ee49ccc734045856d7b025f048
- # Parent 8a70f55b2af35452916dc89401a5ecf6553646a5
- phase-divergent update to 8a70f55b2af3:
+ # Node ID 25875a9cb6400973b846c94f6a80410067c2cb1f
+ # Parent 90859808ece64c9ca64dd29992db42353c70f164
+ phase-divergent update to 90859808ece6:
added p
- diff -r 8a70f55b2af3 -r f3e41d89b3c5 q
+ diff -r 90859808ece6 -r 25875a9cb640 q
--- a/q Thu Jan 01 00:00:00 1970 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-q
-Testing the evolution of a phase-divergent merge with no conflicts
-------------------------------------------------------------------
+When the public changeset is split and amended
+==============================================
+
+ $ cd ../split-and-amend
+
+ $ echo m > m
+ $ echo n > n
+ $ hg ci -Aqm "added m and n"
+ $ hg prev
+ 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
+ [0] init
+ $ echo m > m
+ $ hg ci -Aqm "added m"
+ $ echo n > n
+ $ hg ci -Aqm "added n"
+
+ $ hg glog
+ @ 3:e1154ec0206a added n
+ | () draft
+ o 2:4f25cd9cd2bf added m
+ | () draft
+ | o 1:a51bce62c219 added m and n
+ |/ () draft
+ o 0:d3873e73d99e init
+ () public
+
+ $ hg prune -r a51bce62c219 --succ 4f25cd9cd2bf --succ e1154ec0206a --split
+ 1 changesets pruned
+
+ $ echo n2 > n
+ $ hg amend
- $ hg glog -r 154b0179fb9b::
- @ 36:605c306d4f87 phase-divergent update to 8a70f55b2af3:
+ $ hg phase -r a51bce62c219 --public --hidden
+ 2 new phase-divergent changesets
+
+ $ hg glog
+ @ 4:52ca78bb98c7 added n
+ | () draft
+ * 2:4f25cd9cd2bf added m
+ | () draft
+ | o 1:a51bce62c219 added m and n
+ |/ () public
+ o 0:d3873e73d99e init
+ () public
+
+ $ hg evolve --list
+ 4f25cd9cd2bf: added m
+ phase-divergent: a51bce62c219 (immutable precursor)
+
+ 52ca78bb98c7: added n
+ phase-divergent: a51bce62c219 (immutable precursor)
+
+ $ hg evolve --all --phase-divergent
+ recreate:[2] added m
+ atop:[1] added m and n
+ committed as 86419909e017
+ 1 new orphan changesets
+ recreate:[4] added n
+ atop:[1] added m and n
+ rebasing to destination parent: d3873e73d99e
+ committed as 88b0dae5369a
+ working directory is now at 88b0dae5369a
+
+ $ hg glog --hidden
+ @ 7:88b0dae5369a phase-divergent update to a51bce62c219:
| () draft
- | o 35:f3e41d89b3c5 phase-divergent update to 8a70f55b2af3:
- |/ () draft
- o 32:8a70f55b2af3 added p and q
- | () public
- o 31:154b0179fb9b phase-divergent update to 849cee0a874b:
- | () public
- ~
+ | x 6:98dad8812511 added n
+ | | () draft
+ +---o 5:86419909e017 phase-divergent update to a51bce62c219:
+ | | () draft
+ | | x 4:52ca78bb98c7 added n
+ | | | () draft
+ | | | x 3:e1154ec0206a added n
+ | | |/ () draft
+ | | x 2:4f25cd9cd2bf added m
+ | |/ () draft
+ o | 1:a51bce62c219 added m and n
+ |/ () public
+ o 0:d3873e73d99e init
+ () public
+
+ $ hg obslog -r a51bce62c219 --all
+ o 86419909e017 (5) phase-divergent update to a51bce62c219:
+ |
+ | @ 88b0dae5369a (7) phase-divergent update to a51bce62c219:
+ | |
+ x | 4f25cd9cd2bf (2) added m
+ | | rewritten(description, parent, content) as 86419909e017 using evolve by test (Thu Jan 01 00:00:00 1970 +0000)
+ | |
+ | x 98dad8812511 (6) added n
+ | | rewritten(description, parent, content) as 88b0dae5369a using evolve by test (Thu Jan 01 00:00:00 1970 +0000)
+ | |
+ | x 52ca78bb98c7 (4) added n
+ | | rewritten(parent) as 98dad8812511 using evolve by test (Thu Jan 01 00:00:00 1970 +0000)
+ | |
+ | x e1154ec0206a (3) added n
+ |/ rewritten(content) as 52ca78bb98c7 using amend by test (Thu Jan 01 00:00:00 1970 +0000)
+ |
+ o a51bce62c219 (1) added m and n
+ rewritten(description, parent, content) as 4f25cd9cd2bf, e1154ec0206a using prune by test (Thu Jan 01 00:00:00 1970 +0000)
+
+
+XXX: not sure this is correct
+ $ hg exp 86419909e017
+ # HG changeset patch
+ # User test
+ # Date 0 0
+ # Thu Jan 01 00:00:00 1970 +0000
+ # Node ID 86419909e01787959aa6471aee605c6d604a3e0d
+ # Parent a51bce62c219f024bc0ae0cc0e3957ee77d7cb46
+ phase-divergent update to a51bce62c219:
+
+ added m
+
+ diff -r a51bce62c219 -r 86419909e017 n
+ --- a/n Thu Jan 01 00:00:00 1970 +0000
+ +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,1 +0,0 @@
+ -n
+
+XXX: not sure this is correct
+ $ hg exp 88b0dae5369a
+ # HG changeset patch
+ # User test
+ # Date 0 0
+ # Thu Jan 01 00:00:00 1970 +0000
+ # Node ID 88b0dae5369aaa3bceb6c0b647542594e2c72fb7
+ # Parent a51bce62c219f024bc0ae0cc0e3957ee77d7cb46
+ phase-divergent update to a51bce62c219:
+
+ added n
+
+ diff -r a51bce62c219 -r 88b0dae5369a m
+ --- a/m Thu Jan 01 00:00:00 1970 +0000
+ +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,1 +0,0 @@
+ -m
+ diff -r a51bce62c219 -r 88b0dae5369a n
+ --- a/n Thu Jan 01 00:00:00 1970 +0000
+ +++ b/n Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,1 +1,1 @@
+ -n
+ +n2
+
+Testing the evolution of a phase-divergent merge with no conflicts
+==================================================================
+
+ $ cd ../merge-no-conflict
$ echo h > h
$ hg ci -Aqm "added h"
$ hg prev
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
- [36] phase-divergent update to 8a70f55b2af3:
+ [0] init
$ echo i > i
$ hg ci -Aqm "added i"
- $ hg merge -r ef8c23f37b55
+ $ hg merge -r a53d182199c1
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg ci -m "merge h and i"
- $ hg glog -r 605c306d4f87::
- @ 39:12ebe0d625d7 merge h and i
+ $ hg glog
+ @ 3:205b2f5ecb7b merge h and i
|\ () draft
- | o 38:9bb561db4230 added i
+ | o 2:f0be5e638ecf added i
| | () draft
- o | 37:ef8c23f37b55 added h
+ o | 1:a53d182199c1 added h
|/ () draft
- o 36:605c306d4f87 phase-divergent update to 8a70f55b2af3:
- | () draft
- ~
+ o 0:d3873e73d99e init
+ () public
- $ hg up ef8c23f37b55
+ $ hg up a53d182199c1
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
- $ hg merge -r 9bb561db4230
+ $ hg merge -r f0be5e638ecf
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg ci -m "merge h and i successor"
created new head
- $ hg glog -r 605c306d4f87::
- @ 40:d2aeda868461 merge h and i successor
+ $ hg glog
+ @ 4:8d4acf488ab5 merge h and i successor
|\ () draft
- +---o 39:12ebe0d625d7 merge h and i
+ +---o 3:205b2f5ecb7b merge h and i
| |/ () draft
- | o 38:9bb561db4230 added i
+ | o 2:f0be5e638ecf added i
| | () draft
- o | 37:ef8c23f37b55 added h
+ o | 1:a53d182199c1 added h
|/ () draft
- o 36:605c306d4f87 phase-divergent update to 8a70f55b2af3:
- | () draft
- ~
+ o 0:d3873e73d99e init
+ () public
- $ hg prune -r 12ebe0d625d7 --succ .
+ $ hg prune -r 205b2f5ecb7b --succ .
1 changesets pruned
- $ hg phase 12ebe0d625d7 --hidden --public
+ $ hg phase 205b2f5ecb7b --hidden --public
1 new phase-divergent changesets
Resolution of phase-divergent merge commit using `hg evolve`
XXX: we should handle phase-divergent merges
$ hg evolve --phase-divergent
- skipping d2aeda868461 : we do not handle merge yet
+ skipping 8d4acf488ab5 : we do not handle merge yet
+
+Check we preserve "cancelation" of changes
+==========================================
+
+This tests case where the phase divergence changesets cancelled some of the
+change made by the public predecessors. The cancellation of these changes need
+to be preserved.
+
+ $ hg init cancelled-changes
+ $ cd cancelled-changes
+ $ cat << EOF > numbers
+ > 1
+ > 2
+ > 3
+ > 4
+ > 5
+ > 6
+ > 7
+ > 8
+ > 9
+ > EOF
+ $ cat << EOF > letters
+ > a
+ > b
+ > c
+ > d
+ > e
+ > f
+ > g
+ > h
+ > i
+ > EOF
+ $ cat << EOF > romans
+ > I
+ > II
+ > III
+ > IV
+ > V
+ > VI
+ > VII
+ > VIII
+ > IX
+ > EOF
+ $ hg add numbers letters romans
+ $ hg commit -m root
+ $ cat << EOF > numbers
+ > 1
+ > 2
+ > 3
+ > four
+ > 5
+ > 6
+ > 7
+ > 8
+ > nine
+ > EOF
+ $ cat << EOF > letters
+ > a
+ > b
+ > c
+ > D
+ > e
+ > f
+ > g
+ > h
+ > i
+ > EOF
+ $ hg commit -m E1
+ $ cat << EOF > numbers
+ > 1
+ > 2
+ > 3
+ > 4
+ > 5
+ > 6
+ > seven
+ > 8
+ > nine
+ > EOF
+ $ cat << EOF > letters
+ > a
+ > b
+ > c
+ > d
+ > e
+ > f
+ > g
+ > h
+ > i
+ > EOF
+ $ cat << EOF > romans
+ > I
+ > ii
+ > III
+ > IV
+ > V
+ > VI
+ > VII
+ > VIII
+ > IX
+ > EOF
+ $ hg commit --amend -m E2
+ $ hg --hidden phase --public --rev 'desc(E1)'
+ 1 new phase-divergent changesets
+ $ hg log -G --patch --hidden --rev 'not desc("root")'
+ @ changeset: 2:599454370881
+ | tag: tip
+ ~ parent: 0:6d1fdf6de7e2
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ instability: phase-divergent
+ summary: E2
+
+ diff -r 6d1fdf6de7e2 -r 599454370881 numbers
+ --- a/numbers Thu Jan 01 00:00:00 1970 +0000
+ +++ b/numbers Thu Jan 01 00:00:00 1970 +0000
+ @@ -4,6 +4,6 @@
+ 4
+ 5
+ 6
+ -7
+ +seven
+ 8
+ -9
+ +nine
+ diff -r 6d1fdf6de7e2 -r 599454370881 romans
+ --- a/romans Thu Jan 01 00:00:00 1970 +0000
+ +++ b/romans Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,5 +1,5 @@
+ I
+ -II
+ +ii
+ III
+ IV
+ V
+
+ o changeset: 1:3074c7249d20
+ | user: test
+ ~ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: E1
+
+ diff -r 6d1fdf6de7e2 -r 3074c7249d20 letters
+ --- a/letters Thu Jan 01 00:00:00 1970 +0000
+ +++ b/letters Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,7 +1,7 @@
+ a
+ b
+ c
+ -d
+ +D
+ e
+ f
+ g
+ diff -r 6d1fdf6de7e2 -r 3074c7249d20 numbers
+ --- a/numbers Thu Jan 01 00:00:00 1970 +0000
+ +++ b/numbers Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,9 +1,9 @@
+ 1
+ 2
+ 3
+ -4
+ +four
+ 5
+ 6
+ 7
+ 8
+ -9
+ +nine
+
+ $ hg evolve --list
+ 599454370881: E2
+ phase-divergent: 3074c7249d20 (immutable precursor)
+
+ $ hg obslog --all --patch
+ @ 599454370881 (2) E2
+ |
+ o 3074c7249d20 (1) E1
+ rewritten(description, content) as 599454370881 using amend by test (Thu Jan 01 00:00:00 1970 +0000)
+ diff -r 3074c7249d20 -r 599454370881 changeset-description
+ --- a/changeset-description
+ +++ b/changeset-description
+ @@ -1,1 +1,1 @@
+ -E1
+ +E2
+
+ diff -r 3074c7249d20 -r 599454370881 letters
+ --- a/letters Thu Jan 01 00:00:00 1970 +0000
+ +++ b/letters Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,7 +1,7 @@
+ a
+ b
+ c
+ -D
+ +d
+ e
+ f
+ g
+ diff -r 3074c7249d20 -r 599454370881 numbers
+ --- a/numbers Thu Jan 01 00:00:00 1970 +0000
+ +++ b/numbers Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,9 +1,9 @@
+ 1
+ 2
+ 3
+ -four
+ +4
+ 5
+ 6
+ -7
+ +seven
+ 8
+ nine
+ diff -r 3074c7249d20 -r 599454370881 romans
+ --- a/romans Thu Jan 01 00:00:00 1970 +0000
+ +++ b/romans Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,5 +1,5 @@
+ I
+ -II
+ +ii
+ III
+ IV
+ V
+
+
+
+ $ hg evolve --phase-divergent --rev 'desc("E2")'
+ recreate:[2] E2
+ atop:[1] E1
+ committed as 9eebcb77a7e2
+ working directory is now at 9eebcb77a7e2
+ $ hg export
+ # HG changeset patch
+ # User test
+ # Date 0 0
+ # Thu Jan 01 00:00:00 1970 +0000
+ # Node ID 9eebcb77a7e2b240cb7dce095bbe608b5de91cc8
+ # Parent 3074c7249d2023b1fff891591d7e609695cd09c2
+ phase-divergent update to 3074c7249d20:
+
+ E2
+
+ diff -r 3074c7249d20 -r 9eebcb77a7e2 letters
+ --- a/letters Thu Jan 01 00:00:00 1970 +0000
+ +++ b/letters Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,7 +1,7 @@
+ a
+ b
+ c
+ -D
+ +d
+ e
+ f
+ g
+ diff -r 3074c7249d20 -r 9eebcb77a7e2 numbers
+ --- a/numbers Thu Jan 01 00:00:00 1970 +0000
+ +++ b/numbers Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,9 +1,9 @@
+ 1
+ 2
+ 3
+ -four
+ +4
+ 5
+ 6
+ -7
+ +seven
+ 8
+ nine
+ diff -r 3074c7249d20 -r 9eebcb77a7e2 romans
+ --- a/romans Thu Jan 01 00:00:00 1970 +0000
+ +++ b/romans Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,5 +1,5 @@
+ I
+ -II
+ +ii
+ III
+ IV
+ V
+ $ hg log -G --patch --rev 'not desc("root")'
+ @ changeset: 3:9eebcb77a7e2
+ | tag: tip
+ | parent: 1:3074c7249d20
+ | user: test
+ | date: Thu Jan 01 00:00:00 1970 +0000
+ | summary: phase-divergent update to 3074c7249d20:
+ |
+ | diff -r 3074c7249d20 -r 9eebcb77a7e2 letters
+ | --- a/letters Thu Jan 01 00:00:00 1970 +0000
+ | +++ b/letters Thu Jan 01 00:00:00 1970 +0000
+ | @@ -1,7 +1,7 @@
+ | a
+ | b
+ | c
+ | -D
+ | +d
+ | e
+ | f
+ | g
+ | diff -r 3074c7249d20 -r 9eebcb77a7e2 numbers
+ | --- a/numbers Thu Jan 01 00:00:00 1970 +0000
+ | +++ b/numbers Thu Jan 01 00:00:00 1970 +0000
+ | @@ -1,9 +1,9 @@
+ | 1
+ | 2
+ | 3
+ | -four
+ | +4
+ | 5
+ | 6
+ | -7
+ | +seven
+ | 8
+ | nine
+ | diff -r 3074c7249d20 -r 9eebcb77a7e2 romans
+ | --- a/romans Thu Jan 01 00:00:00 1970 +0000
+ | +++ b/romans Thu Jan 01 00:00:00 1970 +0000
+ | @@ -1,5 +1,5 @@
+ | I
+ | -II
+ | +ii
+ | III
+ | IV
+ | V
+ |
+ o changeset: 1:3074c7249d20
+ | user: test
+ ~ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: E1
+
+ diff -r 6d1fdf6de7e2 -r 3074c7249d20 letters
+ --- a/letters Thu Jan 01 00:00:00 1970 +0000
+ +++ b/letters Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,7 +1,7 @@
+ a
+ b
+ c
+ -d
+ +D
+ e
+ f
+ g
+ diff -r 6d1fdf6de7e2 -r 3074c7249d20 numbers
+ --- a/numbers Thu Jan 01 00:00:00 1970 +0000
+ +++ b/numbers Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,9 +1,9 @@
+ 1
+ 2
+ 3
+ -4
+ +four
+ 5
+ 6
+ 7
+ 8
+ -9
+ +nine
+
+ $ hg obslog --patch
+ @ 9eebcb77a7e2 (3) phase-divergent update to 3074c7249d20:
+ |
+ x 599454370881 (2) E2
+ | rewritten(description, parent, content) as 9eebcb77a7e2 using evolve by test (Thu Jan 01 00:00:00 1970 +0000)
+ | (No patch available, changesets rebased)
+ |
+ o 3074c7249d20 (1) E1
+ rewritten(description, content) as 599454370881 using amend by test (Thu Jan 01 00:00:00 1970 +0000)
+ diff -r 3074c7249d20 -r 599454370881 changeset-description
+ --- a/changeset-description
+ +++ b/changeset-description
+ @@ -1,1 +1,1 @@
+ -E1
+ +E2
+
+ diff -r 3074c7249d20 -r 599454370881 letters
+ --- a/letters Thu Jan 01 00:00:00 1970 +0000
+ +++ b/letters Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,7 +1,7 @@
+ a
+ b
+ c
+ -D
+ +d
+ e
+ f
+ g
+ diff -r 3074c7249d20 -r 599454370881 numbers
+ --- a/numbers Thu Jan 01 00:00:00 1970 +0000
+ +++ b/numbers Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,9 +1,9 @@
+ 1
+ 2
+ 3
+ -four
+ +4
+ 5
+ 6
+ -7
+ +seven
+ 8
+ nine
+ diff -r 3074c7249d20 -r 599454370881 romans
+ --- a/romans Thu Jan 01 00:00:00 1970 +0000
+ +++ b/romans Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,5 +1,5 @@
+ I
+ -II
+ +ii
+ III
+ IV
+ V
+
+
+ $ cd ..
+
+Phase divergence with file removal cancelation
+==============================================
+
+ $ hg init cancel-removal
+ $ cd cancel-removal
+ $ echo a > a
+ $ echo b > b
+ $ echo c > c
+ $ echo d > d
+ $ hg ci -Aqm initial
+
+Oops, we meant to delete just 'a', but we deleted 'b' and 'c' too
+
+ $ hg rm a b c
+ $ hg ci -m 'delete a'
+ $ hg revert -r .^ b
+ $ hg amend
+ $ hg glog --hidden --patch
+ @ 2:0825dcee2670 delete a
+ | () draftdiff -r 75d2b02c4a5c -r 0825dcee2670 a
+ | --- a/a Thu Jan 01 00:00:00 1970 +0000
+ | +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
+ | @@ -1,1 +0,0 @@
+ | -a
+ | diff -r 75d2b02c4a5c -r 0825dcee2670 c
+ | --- a/c Thu Jan 01 00:00:00 1970 +0000
+ | +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
+ | @@ -1,1 +0,0 @@
+ | -c
+ |
+ | x 1:dff6e52f5e41 delete a
+ |/ () draftdiff -r 75d2b02c4a5c -r dff6e52f5e41 a
+ | --- a/a Thu Jan 01 00:00:00 1970 +0000
+ | +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
+ | @@ -1,1 +0,0 @@
+ | -a
+ | diff -r 75d2b02c4a5c -r dff6e52f5e41 b
+ | --- a/b Thu Jan 01 00:00:00 1970 +0000
+ | +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
+ | @@ -1,1 +0,0 @@
+ | -b
+ | diff -r 75d2b02c4a5c -r dff6e52f5e41 c
+ | --- a/c Thu Jan 01 00:00:00 1970 +0000
+ | +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
+ | @@ -1,1 +0,0 @@
+ | -c
+ |
+ o 0:75d2b02c4a5c initial
+ () draftdiff -r 000000000000 -r 75d2b02c4a5c a
+ --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ +++ b/a Thu Jan 01 00:00:00 1970 +0000
+ @@ -0,0 +1,1 @@
+ +a
+ diff -r 000000000000 -r 75d2b02c4a5c 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 @@
+ +b
+ diff -r 000000000000 -r 75d2b02c4a5c c
+ --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ +++ b/c Thu Jan 01 00:00:00 1970 +0000
+ @@ -0,0 +1,1 @@
+ +c
+ diff -r 000000000000 -r 75d2b02c4a5c d
+ --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ +++ b/d Thu Jan 01 00:00:00 1970 +0000
+ @@ -0,0 +1,1 @@
+ +d
+
+
+The public predecessors deletes'a', 'b' and 'c',
+If was amended to only delete 'a', and 'c'
+so the fixup should add back 'b'.
+
+ $ hg phase -p -r dff6e52f5e41 --hidden
+ 1 new phase-divergent changesets
+ $ hg evolve --phase-divergent
+ recreate:[2] delete a
+ atop:[1] delete a
+ committed as 84aa492b3c37
+ working directory is now at 84aa492b3c37
+ $ hg glog --patch
+ @ 3:84aa492b3c37 phase-divergent update to dff6e52f5e41:
+ | () draftdiff -r dff6e52f5e41 -r 84aa492b3c37 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 @@
+ | +b
+ |
+ o 1:dff6e52f5e41 delete a
+ | () publicdiff -r 75d2b02c4a5c -r dff6e52f5e41 a
+ | --- a/a Thu Jan 01 00:00:00 1970 +0000
+ | +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
+ | @@ -1,1 +0,0 @@
+ | -a
+ | diff -r 75d2b02c4a5c -r dff6e52f5e41 b
+ | --- a/b Thu Jan 01 00:00:00 1970 +0000
+ | +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
+ | @@ -1,1 +0,0 @@
+ | -b
+ | diff -r 75d2b02c4a5c -r dff6e52f5e41 c
+ | --- a/c Thu Jan 01 00:00:00 1970 +0000
+ | +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
+ | @@ -1,1 +0,0 @@
+ | -c
+ |
+ o 0:75d2b02c4a5c initial
+ () publicdiff -r 000000000000 -r 75d2b02c4a5c a
+ --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ +++ b/a Thu Jan 01 00:00:00 1970 +0000
+ @@ -0,0 +1,1 @@
+ +a
+ diff -r 000000000000 -r 75d2b02c4a5c 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 @@
+ +b
+ diff -r 000000000000 -r 75d2b02c4a5c c
+ --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ +++ b/c Thu Jan 01 00:00:00 1970 +0000
+ @@ -0,0 +1,1 @@
+ +c
+ diff -r 000000000000 -r 75d2b02c4a5c d
+ --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ +++ b/d Thu Jan 01 00:00:00 1970 +0000
+ @@ -0,0 +1,1 @@
+ +d
+
+
+ $ hg diff --change .
+ diff -r dff6e52f5e41 -r 84aa492b3c37 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 @@
+ +b
+