t6036: add a failed conflict detection case with submodule modify/modify
Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Elijah Newren committed
Jun 30, 2018 at 21:11 UTC
d4d17180808437fd732a9d14388657b8f609ad4a
1 file changed
+88
t/t6036-recursive-corner-cases.sh
+88
@@ -938,4 +938,92 @@ test_expect_failure 'check symlink add/add' '
938
)
939
'
940
941
+#
942
+# criss-cross with modify/modify on a submodule:
943
+#
944
+# B D
945
+# o---o
946
+# / \ / \
947
+# A o X ? F
948
+# \ / \ /
949
+# o---o
950
+# C E
951
+#
952
+# Commit A: simple submodule repo
953
+# Commit B: update repo
954
+# Commit C: update repo differently
955
+# Commit D: merge B&C, resolving in favor of B
956
+# Commit E: merge B&C, resolving in favor of C
957
+#
958
+# This is an obvious modify/modify conflict for the submodule 'repo'. Can
959
+# git detect it?
960
+
961
+test_expect_success 'setup submodule modify/modify' '
962
+ test_create_repo submodule-modify-modify &&
963
+ (
964
+ cd submodule-modify-modify &&
965
+
966
+ test_create_repo submod &&
967
+ (
968
+ cd submod &&
969
+ touch file-A &&
970
+ git add file-A &&
971
+ git commit -m A &&
972
+ git tag A &&
973
+
974
+ git checkout -b B A &&
975
+ touch file-B &&
976
+ git add file-B &&
977
+ git commit -m B &&
978
+ git tag B &&
979
+
980
+ git checkout -b C A &&
981
+ touch file-C &&
982
+ git add file-C &&
983
+ git commit -m C &&
984
+ git tag C
985
+ ) &&
986
+
987
+ git -C submod reset --hard A &&
988
+ git add submod &&
989
+ git commit -m A &&
990
+ git tag A &&
991
+
992
+ git checkout -b B A &&
993
+ git -C submod reset --hard B &&
994
+ git add submod &&
995
+ git commit -m B &&
996
+
997
+ git checkout -b C A &&
998
+ git -C submod reset --hard C &&
999
+ git add submod &&
1000
+ git commit -m C &&
1001
+
1002
+ git checkout -q B^0 &&
1003
+ git merge -s ours -m D C^0 &&
1004
+ git tag D &&
1005
+
1006
+ git checkout -q C^0 &&
1007
+ git merge -s ours -m E B^0 &&
1008
+ git tag E
1009
+ )
1010
+'
1011
+
1012
+test_expect_failure 'check submodule modify/modify' '
1013
+ (
1014
+ cd submodule-modify-modify &&
1015
+
1016
+ git checkout D^0 &&
1017
+
1018
+ test_must_fail git merge -s recursive E^0 &&
1019
+
1020
+ git ls-files -s >out &&
1021
+ test_line_count = 3 out &&
1022
+ git ls-files -u >out &&
1023
+ test_line_count = 3 out &&
1024
+ git ls-files -o >out &&
1025
+ test_line_count = 1 out
1026
+ )
1027
+'
1028
+
1029
test_done