[Commented On] D9609: copies-test: add test chaining multiple merge
baymax (Baymax, Your Personal Patch-care Companion)
phabricator at mercurial-scm.org
Fri Dec 18 14:54:59 UTC 2020
baymax added a comment.
baymax updated this revision to Diff 24414.
✅ refresh by Heptapod after a successful CI run (🐙 💚)
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D9609?vs=24406&id=24414
BRANCH
default
CHANGES SINCE LAST ACTION
https://phab.mercurial-scm.org/D9609/new/
REVISION DETAIL
https://phab.mercurial-scm.org/D9609
AFFECTED FILES
tests/test-copies-chain-merge.t
CHANGE DETAILS
diff --git a/tests/test-copies-chain-merge.t b/tests/test-copies-chain-merge.t
--- a/tests/test-copies-chain-merge.t
+++ b/tests/test-copies-chain-merge.t
@@ -633,6 +633,111 @@
o 0 i-0 initial commit: a b h
+Decision from previous merge are properly chained with later merge
+------------------------------------------------------------------
+
+Subcase: chaining conflicting rename resolution
+```````````````````````````````````````````````
+
+The "mAEm" and "mEAm" case create a rename tracking conflict on file 'f'. We
+add more change on the respective branch and merge again. These second merge
+does not involve the file 'f' and the arbitration done within "mAEm" and "mEA"
+about that file should stay unchanged.
+
+(extra unrelated changes)
+
+ $ hg up 'desc("a-2")'
+ 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ $ echo j > unrelated-j
+ $ hg add unrelated-j
+ $ hg ci -m 'j-1: unrelated changes (based on the "a" series of changes)'
+ created new head
+
+ $ hg up 'desc("e-2")'
+ 2 files updated, 0 files merged, 2 files removed, 0 files unresolved (no-changeset !)
+ 1 files updated, 0 files merged, 2 files removed, 0 files unresolved (changeset !)
+ $ echo k > unrelated-k
+ $ hg add unrelated-k
+ $ hg ci -m 'k-1: unrelated changes (based on "e" changes)'
+ created new head
+
+(merge variant 1)
+
+ $ hg up 'desc("mAEm")'
+ 1 files updated, 0 files merged, 2 files removed, 0 files unresolved (no-changeset !)
+ 0 files updated, 0 files merged, 2 files removed, 0 files unresolved (changeset !)
+ $ hg merge 'desc("k-1")'
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ (branch merge, don't forget to commit)
+ $ hg ci -m 'mAE,Km: simple merge'
+
+(merge variant 2)
+
+ $ hg up 'desc("k-1")'
+ 2 files updated, 0 files merged, 0 files removed, 0 files unresolved (no-changeset !)
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved (changeset !)
+
+ $ hg merge 'desc("mAEm")'
+ 1 files updated, 0 files merged, 1 files removed, 0 files unresolved (no-changeset !)
+ 0 files updated, 0 files merged, 1 files removed, 0 files unresolved (changeset !)
+ (branch merge, don't forget to commit)
+ $ hg ci -m 'mK,AEm: simple merge'
+ created new head
+
+(merge variant 3)
+
+ $ hg up 'desc("mEAm")'
+ 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ $ hg merge 'desc("j-1")'
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ (branch merge, don't forget to commit)
+ $ hg ci -m 'mEA,Jm: simple merge'
+
+(merge variant 4)
+
+ $ hg up 'desc("j-1")'
+ 2 files updated, 0 files merged, 0 files removed, 0 files unresolved (no-changeset !)
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved (changeset !)
+ $ hg merge 'desc("mEAm")'
+ 1 files updated, 0 files merged, 1 files removed, 0 files unresolved (no-changeset !)
+ 0 files updated, 0 files merged, 1 files removed, 0 files unresolved (changeset !)
+ (branch merge, don't forget to commit)
+ $ hg ci -m 'mJ,EAm: simple merge'
+ created new head
+
+
+ $ hg log -G --rev '::(desc("mAE,Km") + desc("mK,AEm") + desc("mEA,Jm") + desc("mJ,EAm"))'
+ @ 42 mJ,EAm: simple merge
+ |\
+ +---o 41 mEA,Jm: simple merge
+ | |/
+ | | o 40 mK,AEm: simple merge
+ | | |\
+ | | +---o 39 mAE,Km: simple merge
+ | | | |/
+ | | | o 38 k-1: unrelated changes (based on "e" changes)
+ | | | |
+ | o | | 37 j-1: unrelated changes (based on the "a" series of changes)
+ | | | |
+ o-----+ 20 mEAm-0 simple merge - the other way
+ |/ / /
+ | o / 19 mAEm-0 simple merge - one way
+ |/|/
+ | o 10 e-2 g -move-> f
+ | |
+ | o 9 e-1 b -move-> g
+ | |
+ o | 4 a-2: e -move-> f
+ | |
+ o | 3 a-1: d -move-> e
+ |/
+ o 2 i-2: c -move-> d
+ |
+ o 1 i-1: a -move-> c
+ |
+ o 0 i-0 initial commit: a b h
+
+
Summary of all created cases
----------------------------
@@ -657,7 +762,10 @@
i-0 initial commit: a b h
i-1: a -move-> c
i-2: c -move-> d
+ j-1: unrelated changes (based on the "a" series of changes)
+ k-1: unrelated changes (based on "e" changes)
mABm-0 simple merge - the other way
+ mAE,Km: simple merge
mAEm-0 simple merge - one way
mBAm-0 simple merge - one way
mBC-revert-m-0
@@ -672,6 +780,7 @@
mCH-delete-before-conflict-m-0
mDBm-0 simple merge - the other way
mDGm-0 simple merge - one way
+ mEA,Jm: simple merge
mEAm-0 simple merge - the other way
mFBm-0 simple merge - the other way
mFGm-0 simple merge - one way
@@ -679,6 +788,8 @@
mGDm-0 simple merge - the other way
mGFm-0 simple merge - the other way
mHC-delete-before-conflict-m-0
+ mJ,EAm: simple merge
+ mK,AEm: simple merge
Test that sidedata computations during upgrades are correct
@@ -916,6 +1027,32 @@
1 sidedata entries
entry-0014 size 4
'\x00\x00\x00\x00'
+ ##### revision 37 #####
+ 1 sidedata entries
+ entry-0014 size 24
+ '\x00\x00\x00\x01\x04\x00\x00\x00\x0b\x00\x00\x00\x00unrelated-j'
+ added : unrelated-j, ;
+ ##### revision 38 #####
+ 1 sidedata entries
+ entry-0014 size 24
+ '\x00\x00\x00\x01\x04\x00\x00\x00\x0b\x00\x00\x00\x00unrelated-k'
+ added : unrelated-k, ;
+ ##### revision 39 #####
+ 1 sidedata entries
+ entry-0014 size 4
+ '\x00\x00\x00\x00'
+ ##### revision 40 #####
+ 1 sidedata entries
+ entry-0014 size 4
+ '\x00\x00\x00\x00'
+ ##### revision 41 #####
+ 1 sidedata entries
+ entry-0014 size 4
+ '\x00\x00\x00\x00'
+ ##### revision 42 #####
+ 1 sidedata entries
+ entry-0014 size 4
+ '\x00\x00\x00\x00'
#endif
@@ -1745,3 +1882,62 @@
R a
$ hg status --copies --rev 'desc("h-1")' --rev 'desc("mHC-delete-before-conflict-m")'
R a
+
+Decision from previous merge are properly chained with later merge
+------------------------------------------------------------------
+
+
+Subcase: chaining conflicting rename resolution
+```````````````````````````````````````````````
+
+The "mAEm" and "mEAm" case create a rename tracking conflict on file 'f'. We
+add more change on the respective branch and merge again. These second merge
+does not involve the file 'f' and the arbitration done within "mAEm" and "mEA"
+about that file should stay unchanged.
+
+The result from mAEm is the same for the subsequent merge:
+
+ $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mAEm")' f
+ A f
+ a (filelog !)
+ a (sidedata !)
+ a (upgraded !)
+
+ $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mAE,Km")' f
+ A f
+ a (filelog !)
+ a (sidedata !)
+ a (upgraded !)
+
+ $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mK,AEm")' f
+ A f
+ a (filelog !)
+ a (missing-correct-output sidedata !)
+ a (missing-correct-output upgraded !)
+ b (known-bad-output sidedata !)
+ b (known-bad-output upgraded !)
+
+
+The result from mEAm is the same for the subsequent merge:
+
+ $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mEAm")' f
+ A f
+ a (filelog !)
+ b (sidedata !)
+ b (upgraded !)
+
+ $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mEA,Jm")' f
+ A f
+ a (filelog !)
+ b (sidedata !)
+ b (upgraded !)
+
+ $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mJ,EAm")' f
+ A f
+ a (filelog !)
+ b (missing-correct-output sidedata !)
+ b (missing-correct-output upgraded !)
+ a (known-bad-output sidedata !)
+ a (known-bad-output upgraded !)
+
+
To: marmoute, #hg-reviewers
Cc: mercurial-patches
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mercurial-scm.org/pipermail/mercurial-patches/attachments/20201218/58bccd57/attachment-0002.html>
More information about the Mercurial-patches
mailing list