1017 | o g-1: update d |
1017 | o g-1: update d |
1018 | | |
1018 | | |
1019 o | f-2: rename i -> d |
1019 o | f-2: rename i -> d |
1020 | | |
1020 | | |
1021 o | f-1: rename h -> i |
1021 o | f-1: rename h -> i |
|
1022 |/ |
|
1023 o i-2: c -move-> d |
|
1024 | |
|
1025 o i-1: a -move-> c |
|
1026 | |
|
1027 o i-0 initial commit: a b h |
|
1028 |
|
1029 |
|
1030 Subcase: chaining conflicting rename resolution, with extra change during the merge |
|
1031 ``````````````````````````````````````````````````````````````````````````````````` |
|
1032 |
|
1033 The "mEA-change-m-0" and "mAE-change-m-0" case create a rename tracking conflict on file 'f'. We |
|
1034 add more change on the respective branch and merge again. These second merge |
|
1035 does not involve the file 'f' and the arbitration done within "mAEm" and "mEA" |
|
1036 about that file should stay unchanged. |
|
1037 |
|
1038 $ case_desc="chained merges (conflict+change -> simple) - same content on both branch in the initial merge" |
|
1039 |
|
1040 |
|
1041 (merge variant 1) |
|
1042 |
|
1043 $ hg up 'desc("mAE-change-m")' |
|
1044 2 files updated, 0 files merged, 3 files removed, 0 files unresolved |
|
1045 $ hg merge 'desc("k-1")' |
|
1046 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
1047 (branch merge, don't forget to commit) |
|
1048 $ hg ci -m "mAE-change,Km: $case_desc" |
|
1049 |
|
1050 (merge variant 2) |
|
1051 |
|
1052 $ hg up 'desc("k-1")' |
|
1053 2 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
1054 |
|
1055 $ hg merge 'desc("mAE-change-m")' |
|
1056 1 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
1057 (branch merge, don't forget to commit) |
|
1058 $ hg ci -m "mK,AE-change-m: $case_desc" |
|
1059 created new head |
|
1060 |
|
1061 (merge variant 3) |
|
1062 |
|
1063 $ hg up 'desc("mEA-change-m")' |
|
1064 1 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
1065 $ hg merge 'desc("j-1")' |
|
1066 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
1067 (branch merge, don't forget to commit) |
|
1068 $ hg ci -m "mEA-change,Jm: $case_desc" |
|
1069 |
|
1070 (merge variant 4) |
|
1071 |
|
1072 $ hg up 'desc("j-1")' |
|
1073 2 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
1074 $ hg merge 'desc("mEA-change-m")' |
|
1075 1 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
1076 (branch merge, don't forget to commit) |
|
1077 $ hg ci -m "mJ,EA-change-m: $case_desc" |
|
1078 created new head |
|
1079 |
|
1080 |
|
1081 $ hg log -G --rev '::(desc("mAE-change,Km") + desc("mK,AE-change-m") + desc("mEA-change,Jm") + desc("mJ,EA-change-m"))' |
|
1082 @ mJ,EA-change-m: chained merges (conflict+change -> simple) - same content on both branch in the initial merge |
|
1083 |\ |
|
1084 +---o mEA-change,Jm: chained merges (conflict+change -> simple) - same content on both branch in the initial merge |
|
1085 | |/ |
|
1086 | | o mK,AE-change-m: chained merges (conflict+change -> simple) - same content on both branch in the initial merge |
|
1087 | | |\ |
|
1088 | | +---o mAE-change,Km: chained merges (conflict+change -> simple) - same content on both branch in the initial merge |
|
1089 | | | |/ |
|
1090 | | | o k-1: unrelated changes (based on "e" changes) |
|
1091 | | | | |
|
1092 | o | | j-1: unrelated changes (based on the "a" series of changes) |
|
1093 | | | | |
|
1094 o-----+ mEA-change-m-0 merge with file update and copies info on both side - A side: rename d to f, E side: b to f, (same content for f in parent) - the other way |
|
1095 |/ / / |
|
1096 | o / mAE-change-m-0 merge with file update and copies info on both side - A side: rename d to f, E side: b to f, (same content for f in parent) - one way |
|
1097 |/|/ |
|
1098 | o e-2 g -move-> f |
|
1099 | | |
|
1100 | o e-1 b -move-> g |
|
1101 | | |
|
1102 o | a-2: e -move-> f |
|
1103 | | |
|
1104 o | a-1: d -move-> e |
1022 |/ |
1105 |/ |
1023 o i-2: c -move-> d |
1106 o i-2: c -move-> d |
1024 | |
1107 | |
1025 o i-1: a -move-> c |
1108 o i-1: a -move-> c |
1026 | |
1109 | |
1053 j-1: unrelated changes (based on the "a" series of changes) |
1136 j-1: unrelated changes (based on the "a" series of changes) |
1054 k-1: unrelated changes (based on "e" changes) |
1137 k-1: unrelated changes (based on "e" changes) |
1055 l-1: unrelated changes (based on "c" changes) |
1138 l-1: unrelated changes (based on "c" changes) |
1056 mABm-0 simple merge - A side: multiple renames, B side: unrelated update - the other way |
1139 mABm-0 simple merge - A side: multiple renames, B side: unrelated update - the other way |
1057 mAE,Km: chained merges (conflict -> simple) - same content everywhere |
1140 mAE,Km: chained merges (conflict -> simple) - same content everywhere |
|
1141 mAE-change,Km: chained merges (conflict+change -> simple) - same content on both branch in the initial merge |
1058 mAE-change-m-0 merge with file update and copies info on both side - A side: rename d to f, E side: b to f, (same content for f in parent) - one way |
1142 mAE-change-m-0 merge with file update and copies info on both side - A side: rename d to f, E side: b to f, (same content for f in parent) - one way |
1059 mAEm-0 merge with copies info on both side - A side: rename d to f, E side: b to f, (same content for f) - one way |
1143 mAEm-0 merge with copies info on both side - A side: rename d to f, E side: b to f, (same content for f) - one way |
1060 mBAm-0 simple merge - A side: multiple renames, B side: unrelated update - one way |
1144 mBAm-0 simple merge - A side: multiple renames, B side: unrelated update - one way |
1061 mBC+revert,Lm: chained merges (salvaged -> simple) - same content (when the file exists) |
1145 mBC+revert,Lm: chained merges (salvaged -> simple) - same content (when the file exists) |
1062 mBC-revert-m-0 merge explicitely revive deleted file - B side: unrelated change, C side: delete d (restored by merge) - the other way |
1146 mBC-revert-m-0 merge explicitely revive deleted file - B side: unrelated change, C side: delete d (restored by merge) - the other way |
1071 mCGm-0 merge updated/deleted - revive the file (updated content) - one way |
1155 mCGm-0 merge updated/deleted - revive the file (updated content) - one way |
1072 mCH-delete-before-conflict-m-0 simple merge - C side: d is the results of renames then deleted, H side: d is result of another rename (same content as the other branch) - one way |
1156 mCH-delete-before-conflict-m-0 simple merge - C side: d is the results of renames then deleted, H side: d is result of another rename (same content as the other branch) - one way |
1073 mDBm-0 simple merge - B side: unrelated update, D side: delete and recreate a file (with different content) - the other way |
1157 mDBm-0 simple merge - B side: unrelated update, D side: delete and recreate a file (with different content) - the other way |
1074 mDGm-0 actual content merge, copies on one side - D side: delete and re-add (different content), G side: update content - one way |
1158 mDGm-0 actual content merge, copies on one side - D side: delete and re-add (different content), G side: update content - one way |
1075 mEA,Jm: chained merges (conflict -> simple) - same content everywhere |
1159 mEA,Jm: chained merges (conflict -> simple) - same content everywhere |
|
1160 mEA-change,Jm: chained merges (conflict+change -> simple) - same content on both branch in the initial merge |
1076 mEA-change-m-0 merge with file update and copies info on both side - A side: rename d to f, E side: b to f, (same content for f in parent) - the other way |
1161 mEA-change-m-0 merge with file update and copies info on both side - A side: rename d to f, E side: b to f, (same content for f in parent) - the other way |
1077 mEAm-0 merge with copies info on both side - A side: rename d to f, E side: b to f, (same content for f) - the other way |
1162 mEAm-0 merge with copies info on both side - A side: rename d to f, E side: b to f, (same content for f) - the other way |
1078 mFBm-0 simple merge - B side: unrelated change, F side: overwrite d with a copy (from h->i->d) - the other way |
1163 mFBm-0 simple merge - B side: unrelated change, F side: overwrite d with a copy (from h->i->d) - the other way |
1079 mFG,Om: chained merges (copy-overwrite -> simple) - same content |
1164 mFG,Om: chained merges (copy-overwrite -> simple) - same content |
1080 mFGm-0 merge - G side: content change, F side: copy overwrite, no content change - one way |
1165 mFGm-0 merge - G side: content change, F side: copy overwrite, no content change - one way |
1081 mGCm-0 merge updated/deleted - revive the file (updated content) - the other way |
1166 mGCm-0 merge updated/deleted - revive the file (updated content) - the other way |
1082 mGDm-0 actual content merge, copies on one side - D side: delete and re-add (different content), G side: update content - the other way |
1167 mGDm-0 actual content merge, copies on one side - D side: delete and re-add (different content), G side: update content - the other way |
1083 mGF,Nm: chained merges (copy-overwrite -> simple) - same content |
1168 mGF,Nm: chained merges (copy-overwrite -> simple) - same content |
1084 mGFm-0 merge - G side: content change, F side: copy overwrite, no content change - the other way |
1169 mGFm-0 merge - G side: content change, F side: copy overwrite, no content change - the other way |
1085 mHC-delete-before-conflict-m-0 simple merge - C side: d is the results of renames then deleted, H side: d is result of another rename (same content as the other branch) - the other way |
1170 mHC-delete-before-conflict-m-0 simple merge - C side: d is the results of renames then deleted, H side: d is result of another rename (same content as the other branch) - the other way |
|
1171 mJ,EA-change-m: chained merges (conflict+change -> simple) - same content on both branch in the initial merge |
1086 mJ,EAm: chained merges (conflict -> simple) - same content everywhere |
1172 mJ,EAm: chained merges (conflict -> simple) - same content everywhere |
|
1173 mK,AE-change-m: chained merges (conflict+change -> simple) - same content on both branch in the initial merge |
1087 mK,AEm: chained merges (conflict -> simple) - same content everywhere |
1174 mK,AEm: chained merges (conflict -> simple) - same content everywhere |
1088 mL,BC+revertm: chained merges (salvaged -> simple) - same content (when the file exists) |
1175 mL,BC+revertm: chained merges (salvaged -> simple) - same content (when the file exists) |
1089 mL,CB+revertm: chained merges (salvaged -> simple) - same content (when the file exists) |
1176 mL,CB+revertm: chained merges (salvaged -> simple) - same content (when the file exists) |
1090 mN,GFm: chained merges (copy-overwrite -> simple) - same content |
1177 mN,GFm: chained merges (copy-overwrite -> simple) - same content |
1091 mO,FGm: chained merges (copy-overwrite -> simple) - same content |
1178 mO,FGm: chained merges (copy-overwrite -> simple) - same content |
2551 a (filelog !) |
2654 a (filelog !) |
2552 a (missing-correct-output sidedata !) |
2655 a (missing-correct-output sidedata !) |
2553 a (missing-correct-output upgraded !) |
2656 a (missing-correct-output upgraded !) |
2554 h (known-bad-output sidedata !) |
2657 h (known-bad-output sidedata !) |
2555 h (known-bad-output upgraded !) |
2658 h (known-bad-output upgraded !) |
|
2659 |
|
2660 |
|
2661 Subcase: chaining conflicting rename resolution, with extra change during the merge |
|
2662 ``````````````````````````````````````````````````````````````````````````````````` |
|
2663 |
|
2664 The "mAEm" and "mEAm" case create a rename tracking conflict on file 'f'. We |
|
2665 add more change on the respective branch and merge again. These second merge |
|
2666 does not involve the file 'f' and the arbitration done within "mAEm" and "mEA" |
|
2667 about that file should stay unchanged. |
|
2668 |
|
2669 The result from mAEm is the same for the subsequent merge: |
|
2670 |
|
2671 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mAE-change-m")' f |
|
2672 A f |
|
2673 a (filelog !) |
|
2674 a (sidedata !) |
|
2675 a (upgraded !) |
|
2676 |
|
2677 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mAE-change,Km")' f |
|
2678 A f |
|
2679 a (filelog !) |
|
2680 a (sidedata !) |
|
2681 a (upgraded !) |
|
2682 |
|
2683 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mK,AE-change-m")' f |
|
2684 A f |
|
2685 a (filelog !) |
|
2686 a (missing-correct-output sidedata !) |
|
2687 a (missing-correct-output upgraded !) |
|
2688 b (known-bad-output sidedata !) |
|
2689 b (known-bad-output upgraded !) |
|
2690 |
|
2691 |
|
2692 The result from mEAm is the same for the subsequent merge: |
|
2693 |
|
2694 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mEA-change-m")' f |
|
2695 A f |
|
2696 a (filelog !) |
|
2697 b (sidedata !) |
|
2698 b (upgraded !) |
|
2699 |
|
2700 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mEA-change,Jm")' f |
|
2701 A f |
|
2702 a (filelog !) |
|
2703 b (sidedata !) |
|
2704 b (upgraded !) |
|
2705 |
|
2706 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mJ,EA-change-m")' f |
|
2707 A f |
|
2708 a (filelog !) |
|
2709 b (missing-correct-output sidedata !) |
|
2710 b (missing-correct-output upgraded !) |
|
2711 a (known-bad-output sidedata !) |
|
2712 a (known-bad-output upgraded !) |