Skip to content

Commit d4d1718

Browse files
newrengitster
authored andcommitted
t6036: add a failed conflict detection case with submodule modify/modify
Signed-off-by: Elijah Newren <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 81f5a2c commit d4d1718

File tree

1 file changed

+88
-0
lines changed

1 file changed

+88
-0
lines changed

t/t6036-recursive-corner-cases.sh

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -938,4 +938,92 @@ test_expect_failure 'check symlink add/add' '
938938
)
939939
'
940940

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+
9411029
test_done

0 commit comments

Comments
 (0)