1059
touch repo/deep/deeper2/file &&
1060
touch repo/folder1/file &&
1061
1062
+ test_must_fail git -C repo sparse-checkout clean 2>err &&
1063
+ grep "refusing to clean" err &&
1064
+
1065
+ git -C repo config clean.requireForce true &&
1066
+ test_must_fail git -C repo sparse-checkout clean 2>err &&
1067
+ grep "refusing to clean" err &&
1068
+
1069
+ cat >expect <<-\EOF &&
1070
+ Would remove deep/deeper2/
1071
+ Would remove folder1/
1072
+ EOF
1073
+
1074
+ git -C repo sparse-checkout clean --dry-run >out &&
1075
+ test_cmp expect out &&
1076
+ test_path_exists repo/deep/deeper2 &&
1077
+ test_path_exists repo/folder1 &&
1078
+
1079
cat >expect <<-\EOF &&
1080
Removing deep/deeper2/
1081
Removing folder1/
1082
EOF
1083
1067
- git -C repo sparse-checkout clean >out &&
1084
+ git -C repo sparse-checkout clean -f >out &&
1085
test_cmp expect out &&
1086
1087
test_path_is_missing repo/deep/deeper2 &&
1093
git -C repo sparse-checkout set --cone deep/deeper1 &&
1094
mkdir repo/folder2 &&
1095
1096
+ # The previous test case checked the -f option, so
1097
+ # test the config option in this one.
1098
+ git -C repo config clean.requireForce false &&
1099
+
1100
# create an untracked file and a modified file
1101
touch repo/folder2/file &&
1102
echo dirty >repo/folder2/a &&
1175
test_must_be_empty out
1176
'
1177
1178
+test_expect_success 'clean with merge conflict status' '
1179
+ git clone repo clean-merge &&
1180
+
1181
+ echo dirty >clean-merge/deep/deeper2/a &&
1182
+ touch clean-merge/folder2/extra &&
1183
+
1184
+ cat >input <<-EOF &&
1185
+ 0 $ZERO_OID folder1/a
1186
+ 100644 $(git -C clean-merge rev-parse HEAD:folder1/a) 1 folder1/a
1187
+ EOF
1188
+ git -C clean-merge update-index --index-info <input &&
1189
+
1190
+ git -C clean-merge sparse-checkout set deep/deeper1 &&
1191
+
1192
+ test_must_fail git -C clean-merge sparse-checkout clean -f 2>err &&
1193
+ grep "failed to convert index to a sparse index" err &&
1194
+
1195
+ mkdir -p clean-merge/folder1/ &&
1196
+ echo merged >clean-merge/folder1/a &&
1197
+ git -C clean-merge add --sparse folder1/a &&
1198
+
1199
+ # deletes folder2/ but leaves staged change in folder1
1200
+ # and dirty change in deep/deeper2/
1201
+ cat >expect <<-\EOF &&
1202
+ Removing folder2/
1203
+ EOF
1204
+
1205
+ git -C clean-merge sparse-checkout clean -f >out &&
1206
+ test_cmp expect out
1207
+'
1208
+
1209
test_done