@@ -27,4 +27,64 @@ test_expect_success 'reset should work' '
2727 test_cmp expect actual
2828'
2929
30+ test_expect_success ' reset should remove remnants from a failed merge' '
31+ git read-tree --reset -u HEAD &&
32+ git ls-files -s >expect &&
33+ sha1=$(git rev-parse :new) &&
34+ (
35+ echo "100644 $sha1 1 old"
36+ echo "100644 $sha1 3 old"
37+ ) | git update-index --index-info &&
38+ >old &&
39+ git ls-files -s &&
40+ git read-tree --reset -u HEAD &&
41+ git ls-files -s >actual &&
42+ ! test -f old
43+ '
44+
45+ test_expect_success ' Porcelain reset should remove remnants too' '
46+ git read-tree --reset -u HEAD &&
47+ git ls-files -s >expect &&
48+ sha1=$(git rev-parse :new) &&
49+ (
50+ echo "100644 $sha1 1 old"
51+ echo "100644 $sha1 3 old"
52+ ) | git update-index --index-info &&
53+ >old &&
54+ git ls-files -s &&
55+ git reset --hard &&
56+ git ls-files -s >actual &&
57+ ! test -f old
58+ '
59+
60+ test_expect_success ' Porcelain checkout -f should remove remnants too' '
61+ git read-tree --reset -u HEAD &&
62+ git ls-files -s >expect &&
63+ sha1=$(git rev-parse :new) &&
64+ (
65+ echo "100644 $sha1 1 old"
66+ echo "100644 $sha1 3 old"
67+ ) | git update-index --index-info &&
68+ >old &&
69+ git ls-files -s &&
70+ git checkout -f &&
71+ git ls-files -s >actual &&
72+ ! test -f old
73+ '
74+
75+ test_expect_success ' Porcelain checkout -f HEAD should remove remnants too' '
76+ git read-tree --reset -u HEAD &&
77+ git ls-files -s >expect &&
78+ sha1=$(git rev-parse :new) &&
79+ (
80+ echo "100644 $sha1 1 old"
81+ echo "100644 $sha1 3 old"
82+ ) | git update-index --index-info &&
83+ >old &&
84+ git ls-files -s &&
85+ git checkout -f HEAD &&
86+ git ls-files -s >actual &&
87+ ! test -f old
88+ '
89+
3090test_done
0 commit comments