863 | |
863 | |
864 o 0 i-0 initial commit: a b h |
864 o 0 i-0 initial commit: a b h |
865 |
865 |
866 |
866 |
867 |
867 |
868 |
868 Subcase: chaining "merged" information during a merge |
|
869 `````````````````````````````````````````````````````` |
|
870 |
|
871 When a non-rename change are merged with a copy overwrite, the merge pick the copy source from (p1) as the reference. We should preserve this information in subsequent merges. |
|
872 |
|
873 $ case_desc="chained merges (copy-overwrite -> simple) - same content" |
|
874 |
|
875 (extra unrelated changes) |
|
876 |
|
877 $ hg up 'desc("f-2")' |
|
878 2 files updated, 0 files merged, 2 files removed, 0 files unresolved (no-changeset !) |
|
879 1 files updated, 0 files merged, 2 files removed, 0 files unresolved (changeset !) |
|
880 $ echo n > unrelated-n |
|
881 $ hg add unrelated-n |
|
882 $ hg ci -m 'n-1: unrelated changes (based on the "f" series of changes)' |
|
883 created new head |
|
884 |
|
885 $ hg up 'desc("g-1")' |
|
886 2 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
887 $ echo o > unrelated-o |
|
888 $ hg add unrelated-o |
|
889 $ hg ci -m 'o-1: unrelated changes (based on "g" changes)' |
|
890 created new head |
|
891 |
|
892 (merge variant 1) |
|
893 |
|
894 $ hg up 'desc("mFGm")' |
|
895 1 files updated, 0 files merged, 2 files removed, 0 files unresolved (no-changeset !) |
|
896 0 files updated, 0 files merged, 2 files removed, 0 files unresolved (changeset !) |
|
897 $ hg merge 'desc("o-1")' |
|
898 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
899 (branch merge, don't forget to commit) |
|
900 $ hg ci -m "mFG,Om: $case_desc" |
|
901 |
|
902 (merge variant 2) |
|
903 |
|
904 $ hg up 'desc("o-1")' |
|
905 2 files updated, 0 files merged, 0 files removed, 0 files unresolved (no-changeset !) |
|
906 1 files updated, 0 files merged, 0 files removed, 0 files unresolved (changeset !) |
|
907 $ hg merge 'desc("FGm")' |
|
908 1 files updated, 0 files merged, 1 files removed, 0 files unresolved (no-changeset !) |
|
909 0 files updated, 0 files merged, 1 files removed, 0 files unresolved (changeset !) |
|
910 (branch merge, don't forget to commit) |
|
911 $ hg ci -m "mO,FGm: $case_desc" |
|
912 created new head |
|
913 |
|
914 (merge variant 3) |
|
915 |
|
916 $ hg up 'desc("mGFm")' |
|
917 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
918 $ hg merge 'desc("n-1")' |
|
919 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
920 (branch merge, don't forget to commit) |
|
921 $ hg ci -m "mGF,Nm: $case_desc" |
|
922 |
|
923 (merge variant 4) |
|
924 |
|
925 $ hg up 'desc("n-1")' |
|
926 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
927 $ hg merge 'desc("mGFm")' |
|
928 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
929 (branch merge, don't forget to commit) |
|
930 $ hg ci -m "mN,GFm: $case_desc" |
|
931 created new head |
|
932 |
|
933 $ hg log -G --rev '::(desc("mFG,Om") + desc("mO,FGm") + desc("mGF,Nm") + desc("mN,GFm"))' |
|
934 @ 53 mN,GFm: chained merges (copy-overwrite -> simple) - same content |
|
935 |\ |
|
936 +---o 52 mGF,Nm: chained merges (copy-overwrite -> simple) - same content |
|
937 | |/ |
|
938 | | o 51 mO,FGm: chained merges (copy-overwrite -> simple) - same content |
|
939 | | |\ |
|
940 | | +---o 50 mFG,Om: chained merges (copy-overwrite -> simple) - same content |
|
941 | | | |/ |
|
942 | | | o 49 o-1: unrelated changes (based on "g" changes) |
|
943 | | | | |
|
944 | o | | 48 n-1: unrelated changes (based on the "f" series of changes) |
|
945 | | | | |
|
946 o-----+ 29 mGFm-0 merge - G side: content change, F side: copy overwrite, no content change - the other way |
|
947 |/ / / |
|
948 | o / 28 mFGm-0 merge - G side: content change, F side: copy overwrite, no content change - one way |
|
949 |/|/ |
|
950 | o 25 g-1: update d |
|
951 | | |
|
952 o | 22 f-2: rename i -> d |
|
953 | | |
|
954 o | 21 f-1: rename h -> i |
|
955 |/ |
|
956 o 2 i-2: c -move-> d |
|
957 | |
|
958 o 1 i-1: a -move-> c |
|
959 | |
|
960 o 0 i-0 initial commit: a b h |
|
961 |
869 |
962 |
870 Summary of all created cases |
963 Summary of all created cases |
871 ---------------------------- |
964 ---------------------------- |
872 |
965 |
873 $ hg up --quiet null |
966 $ hg up --quiet null |
912 mDBm-0 simple merge - B side: unrelated update, D side: delete and recreate a file (with different content) - the other way |
1005 mDBm-0 simple merge - B side: unrelated update, D side: delete and recreate a file (with different content) - the other way |
913 mDGm-0 actual content merge, copies on one side - D side: delete and re-add (different content), G side: update content - one way |
1006 mDGm-0 actual content merge, copies on one side - D side: delete and re-add (different content), G side: update content - one way |
914 mEA,Jm: chained merges (conflict -> simple) - same content everywhere |
1007 mEA,Jm: chained merges (conflict -> simple) - same content everywhere |
915 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 |
1008 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 |
916 mFBm-0 simple merge - B side: unrelated change, F side: overwrite d with a copy (from h->i->d) - the other way |
1009 mFBm-0 simple merge - B side: unrelated change, F side: overwrite d with a copy (from h->i->d) - the other way |
|
1010 mFG,Om: chained merges (copy-overwrite -> simple) - same content |
917 mFGm-0 merge - G side: content change, F side: copy overwrite, no content change - one way |
1011 mFGm-0 merge - G side: content change, F side: copy overwrite, no content change - one way |
918 mGCm-0 merge updated/deleted - revive the file (updated content) - the other way |
1012 mGCm-0 merge updated/deleted - revive the file (updated content) - the other way |
919 mGDm-0 actual content merge, copies on one side - D side: delete and re-add (different content), G side: update content - the other way |
1013 mGDm-0 actual content merge, copies on one side - D side: delete and re-add (different content), G side: update content - the other way |
|
1014 mGF,Nm: chained merges (copy-overwrite -> simple) - same content |
920 mGFm-0 merge - G side: content change, F side: copy overwrite, no content change - the other way |
1015 mGFm-0 merge - G side: content change, F side: copy overwrite, no content change - the other way |
921 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 |
1016 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 |
922 mJ,EAm: chained merges (conflict -> simple) - same content everywhere |
1017 mJ,EAm: chained merges (conflict -> simple) - same content everywhere |
923 mK,AEm: chained merges (conflict -> simple) - same content everywhere |
1018 mK,AEm: chained merges (conflict -> simple) - same content everywhere |
924 mL,BC+revertm: chained merges (salvaged -> simple) - same content (when the file exists) |
1019 mL,BC+revertm: chained merges (salvaged -> simple) - same content (when the file exists) |
925 mL,CB+revertm: chained merges (salvaged -> simple) - same content (when the file exists) |
1020 mL,CB+revertm: chained merges (salvaged -> simple) - same content (when the file exists) |
|
1021 mN,GFm: chained merges (copy-overwrite -> simple) - same content |
|
1022 mO,FGm: chained merges (copy-overwrite -> simple) - same content |
|
1023 n-1: unrelated changes (based on the "f" series of changes) |
|
1024 o-1: unrelated changes (based on "g" changes) |
926 |
1025 |
927 |
1026 |
928 Test that sidedata computations during upgrades are correct |
1027 Test that sidedata computations during upgrades are correct |
929 =========================================================== |
1028 =========================================================== |
930 |
1029 |
2166 a (missing-correct-output sidedata !) |
2291 a (missing-correct-output sidedata !) |
2167 a (missing-correct-output upgraded !) |
2292 a (missing-correct-output upgraded !) |
2168 A unrelated-l |
2293 A unrelated-l |
2169 R a |
2294 R a |
2170 |
2295 |
|
2296 Subcase: chaining "merged" information during a merge |
|
2297 `````````````````````````````````````````````````````` |
|
2298 |
|
2299 When a non-rename change are merged with a copy overwrite, the merge pick the copy source from (p1) as the reference. We should preserve this information in subsequent merges. |
|
2300 |
|
2301 |
|
2302 reference output: |
|
2303 |
|
2304 (for details about the filelog pick, check the mFGm/mGFm case) |
|
2305 |
|
2306 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mFGm")' d |
|
2307 A d |
|
2308 a (filelog !) |
|
2309 h (sidedata !) |
|
2310 h (upgraded !) |
|
2311 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mGFm")' d |
|
2312 A d |
|
2313 a (filelog !) |
|
2314 a (sidedata !) |
|
2315 a (upgraded !) |
|
2316 |
|
2317 Chained output |
|
2318 |
|
2319 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mO,FGm")' d |
|
2320 A d |
|
2321 a (filelog !) |
|
2322 h (sidedata !) |
|
2323 h (upgraded !) |
|
2324 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mFG,Om")' d |
|
2325 A d |
|
2326 a (filelog !) |
|
2327 h (sidedata !) |
|
2328 h (upgraded !) |
|
2329 |
|
2330 |
|
2331 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mGF,Nm")' d |
|
2332 A d |
|
2333 a (filelog !) |
|
2334 a (missing-correct-output sidedata !) |
|
2335 a (missing-correct-output upgraded !) |
|
2336 h (known-bad-output sidedata !) |
|
2337 h (known-bad-output upgraded !) |
|
2338 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mN,GFm")' d |
|
2339 A d |
|
2340 a (filelog !) |
|
2341 a (missing-correct-output sidedata !) |
|
2342 a (missing-correct-output upgraded !) |
|
2343 h (known-bad-output sidedata !) |
|
2344 h (known-bad-output upgraded !) |