23
24
. ./test-lib.sh
25
26
-show_files() {
27
- # show filesystem files, just [-dl] for type and name
28
- find path? -ls |
29
- sed -e 's/^[0-9]* * [0-9]* * \([-bcdl]\)[^ ]* *[0-9]* *[^ ]* *[^ ]* *[0-9]* [A-Z][a-z][a-z] [0-9][0-9] [^ ]* /fs: \1 /'
30
- # what's in the cache, just mode and name
31
- git ls-files --stage |
32
- sed -e 's/^\([0-9]*\) [0-9a-f]* [0-3] /ca: \1 /'
33
- # what's in the tree, just mode and name.
34
- git ls-tree -r "$1" |
35
- sed -e 's/^\([0-9]*\) [^ ]* [0-9a-f]* /tr: \1 /'
36
-}
26
27
test_expect_success 'prepare files path0 and path1/file1' '
28
date >path0 &&
72
# path path3 is occupied by a non-directory. With "-f" it should remove
73
# the symlink path3 and create directory path3 and file path3/file1.
74
86
-test_expect_success 'prepare path2/file0 and index' '
75
+test_expect_success 'checkout-index -f resolves symlink conflict on leading path' '
76
mkdir path2 &&
77
date >path2/file0 &&
89
- git update-index --add path2/file0
90
-'
91
-
92
-test_expect_success 'write tree with path2/file0' '
93
- tree1=$(git write-tree)
94
-'
95
-
96
-test_debug 'show_files $tree1'
97
-
98
-test_expect_success 'prepare path3/file1 and index' '
78
+ git update-index --add path2/file0 &&
79
+ tree1=$(git write-tree) &&
80
mkdir path3 &&
81
date >path3/file1 &&
101
- git update-index --add path3/file1
102
-'
103
-
104
-test_expect_success 'write tree with path3/file1' '
105
- tree2=$(git write-tree)
106
-'
107
-
108
-test_debug 'show_files $tree2'
109
-
110
-test_expect_success 'read previously written tree and checkout.' '
82
+ git update-index --add path3/file1 &&
83
+ tree2=$(git write-tree) &&
84
rm -fr path3 &&
85
git read-tree -m $tree1 &&
113
- git checkout-index -f -a
114
-'
115
-
116
-test_debug 'show_files $tree1'
117
-
118
-test_expect_success 'add a symlink' '
119
- test_ln_s_add path2 path3
120
-'
121
-
122
-test_expect_success 'write tree with symlink path3' '
123
- tree3=$(git write-tree)
124
-'
125
-
126
-test_debug 'show_files $tree3'
127
-
128
-# Morten says "Got that?" here.
129
-# Test begins.
130
-
131
-test_expect_success 'read previously written tree and checkout.' '
86
+ git checkout-index -f -a &&
87
+ test_ln_s_add path2 path3 &&
88
git read-tree $tree2 &&
133
- git checkout-index -f -a
134
-'
135
-
136
-test_debug 'show_files $tree2'
137
-
138
-test_expect_success 'checking out conflicting path with -f' '
89
+ git checkout-index -f -a &&
90
test_path_is_dir_not_symlink path2 &&
91
test_path_is_dir_not_symlink path3 &&
92
test_path_is_file_not_symlink path2/file0 &&