Skip to content

Commit 451a3ab

Browse files
newrengitster
authored andcommitted
t6036: add a failed conflict detection case with conflicting types
Signed-off-by: Elijah Newren <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent a79968b commit 451a3ab

File tree

1 file changed

+75
-0
lines changed

1 file changed

+75
-0
lines changed

t/t6036-recursive-corner-cases.sh

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1114,4 +1114,79 @@ test_expect_failure 'check submodule add/add' '
11141114
)
11151115
'
11161116

1117+
#
1118+
# criss-cross with conflicting entry types:
1119+
#
1120+
# B D
1121+
# o---o
1122+
# / \ / \
1123+
# A o X ? F
1124+
# \ / \ /
1125+
# o---o
1126+
# C E
1127+
#
1128+
# Commit A: nothing of note
1129+
# Commit B: introduce submodule 'path'
1130+
# Commit C: introduce symlink 'path'
1131+
# Commit D: merge B&C, resolving in favor of B
1132+
# Commit E: merge B&C, resolving in favor of C
1133+
#
1134+
# This is an obvious add/add conflict for 'path'. Can git detect it?
1135+
1136+
test_expect_success 'setup conflicting entry types (submodule vs symlink)' '
1137+
test_create_repo submodule-symlink-add-add &&
1138+
(
1139+
cd submodule-symlink-add-add &&
1140+
1141+
test_create_repo path &&
1142+
(
1143+
cd path &&
1144+
touch file-B &&
1145+
git add file-B &&
1146+
git commit -m B &&
1147+
git tag B
1148+
) &&
1149+
1150+
touch irrelevant-file &&
1151+
git add irrelevant-file &&
1152+
git commit -m A &&
1153+
git tag A &&
1154+
1155+
git checkout -b B A &&
1156+
git -C path reset --hard B &&
1157+
git add path &&
1158+
git commit -m B &&
1159+
1160+
git checkout -b C A &&
1161+
rm -rf path/ &&
1162+
test_ln_s_add irrelevant-file path &&
1163+
git commit -m C &&
1164+
1165+
git checkout -q B^0 &&
1166+
git merge -s ours -m D C^0 &&
1167+
git tag D &&
1168+
1169+
git checkout -q C^0 &&
1170+
git merge -s ours -m E B^0 &&
1171+
git tag E
1172+
)
1173+
'
1174+
1175+
test_expect_failure 'check conflicting entry types (submodule vs symlink)' '
1176+
(
1177+
cd submodule-symlink-add-add &&
1178+
1179+
git checkout D^0 &&
1180+
1181+
test_must_fail git merge -s recursive E^0 &&
1182+
1183+
git ls-files -s >out &&
1184+
test_line_count = 3 out &&
1185+
git ls-files -u >out &&
1186+
test_line_count = 2 out &&
1187+
git ls-files -o >out &&
1188+
test_line_count = 1 out
1189+
)
1190+
'
1191+
11171192
test_done

0 commit comments

Comments
 (0)