]>
Commit | Line | Data |
---|---|---|
9b6513ac PW |
1 | #!/bin/sh |
2 | ||
3 | test_description='git p4 rename' | |
4 | ||
5 | . ./lib-git-p4.sh | |
6 | ||
7 | test_expect_success 'start p4d' ' | |
8 | start_p4d | |
9 | ' | |
10 | ||
11 | # We rely on this behavior to detect for p4 move availability. | |
794165cb | 12 | test_expect_success '"p4 help unknown" errors out' ' |
9b6513ac PW |
13 | ( |
14 | cd "$cli" && | |
794165cb ES |
15 | p4 help client && |
16 | ! p4 help nosuchcommand | |
9b6513ac PW |
17 | ) |
18 | ' | |
19 | ||
20 | test_expect_success 'create files' ' | |
21 | ( | |
22 | cd "$cli" && | |
23 | p4 client -o | sed "/LineEnd/s/:.*/:unix/" | p4 client -i && | |
24 | cat >file1 <<-EOF && | |
25 | A large block of text | |
26 | in file1 that will generate | |
27 | enough context so that rename | |
28 | and copy detection will find | |
29 | something interesting to do. | |
30 | EOF | |
31 | cat >file2 <<-EOF && | |
32 | /* | |
33 | * This blob looks a bit | |
34 | * different. | |
35 | */ | |
36 | int main(int argc, char **argv) | |
37 | { | |
38 | char text[200]; | |
39 | ||
40 | strcpy(text, "copy/rename this"); | |
41 | printf("text is %s\n", text); | |
42 | return 0; | |
43 | } | |
44 | EOF | |
45 | p4 add file1 file2 && | |
46 | p4 submit -d "add files" | |
47 | ) | |
48 | ' | |
49 | ||
50 | # Rename a file and confirm that rename is not detected in P4. | |
51 | # Rename the new file again with detectRenames option enabled and confirm that | |
52 | # this is detected in P4. | |
53 | # Rename the new file again adding an extra line, configure a big threshold in | |
54 | # detectRenames and confirm that rename is not detected in P4. | |
55 | # Repeat, this time with a smaller threshold and confirm that the rename is | |
56 | # detected in P4. | |
57 | test_expect_success 'detect renames' ' | |
58 | git p4 clone --dest="$git" //depot@all && | |
59 | test_when_finished cleanup_git && | |
60 | ( | |
61 | cd "$git" && | |
62 | git config git-p4.skipSubmitEdit true && | |
63 | ||
64 | git mv file1 file4 && | |
65 | git commit -a -m "Rename file1 to file4" && | |
66 | git diff-tree -r -M HEAD && | |
67 | git p4 submit && | |
8e9497c2 GG |
68 | p4 filelog //depot/file4 >filelog && |
69 | ! grep " from //depot" filelog && | |
9b6513ac PW |
70 | |
71 | git mv file4 file5 && | |
72 | git commit -a -m "Rename file4 to file5" && | |
73 | git diff-tree -r -M HEAD && | |
74 | git config git-p4.detectRenames true && | |
75 | git p4 submit && | |
8e9497c2 GG |
76 | p4 filelog //depot/file5 >filelog && |
77 | grep " from //depot/file4" filelog && | |
9b6513ac PW |
78 | |
79 | git mv file5 file6 && | |
80 | echo update >>file6 && | |
81 | git add file6 && | |
82 | git commit -a -m "Rename file5 to file6 with changes" && | |
83 | git diff-tree -r -M HEAD && | |
84 | level=$(git diff-tree -r -M HEAD | sed 1d | cut -f1 | cut -d" " -f5 | sed "s/R0*//") && | |
85 | test -n "$level" && test "$level" -gt 0 && test "$level" -lt 98 && | |
86 | git config git-p4.detectRenames $(($level + 2)) && | |
87 | git p4 submit && | |
8e9497c2 GG |
88 | p4 filelog //depot/file6 >filelog && |
89 | ! grep " from //depot" filelog && | |
9b6513ac PW |
90 | |
91 | git mv file6 file7 && | |
92 | echo update >>file7 && | |
93 | git add file7 && | |
94 | git commit -a -m "Rename file6 to file7 with changes" && | |
95 | git diff-tree -r -M HEAD && | |
96 | level=$(git diff-tree -r -M HEAD | sed 1d | cut -f1 | cut -d" " -f5 | sed "s/R0*//") && | |
97 | test -n "$level" && test "$level" -gt 2 && test "$level" -lt 100 && | |
98 | git config git-p4.detectRenames $(($level - 2)) && | |
99 | git p4 submit && | |
8e9497c2 GG |
100 | p4 filelog //depot/file7 >filelog && |
101 | grep " from //depot/file6" filelog | |
9b6513ac PW |
102 | ) |
103 | ' | |
104 | ||
105 | # Copy a file and confirm that copy is not detected in P4. | |
106 | # Copy a file with detectCopies option enabled and confirm that copy is not | |
107 | # detected in P4. | |
108 | # Modify and copy a file with detectCopies option enabled and confirm that copy | |
109 | # is detected in P4. | |
110 | # Copy a file with detectCopies and detectCopiesHarder options enabled and | |
111 | # confirm that copy is detected in P4. | |
112 | # Modify and copy a file, configure a bigger threshold in detectCopies and | |
113 | # confirm that copy is not detected in P4. | |
114 | # Modify and copy a file, configure a smaller threshold in detectCopies and | |
115 | # confirm that copy is detected in P4. | |
116 | test_expect_success 'detect copies' ' | |
117 | git p4 clone --dest="$git" //depot@all && | |
118 | test_when_finished cleanup_git && | |
119 | ( | |
120 | cd "$git" && | |
121 | git config git-p4.skipSubmitEdit true && | |
122 | ||
f1f4c84d VA |
123 | echo "file8" >>file2 && |
124 | git commit -a -m "Differentiate file2" && | |
125 | git p4 submit && | |
9b6513ac PW |
126 | cp file2 file8 && |
127 | git add file8 && | |
128 | git commit -a -m "Copy file2 to file8" && | |
129 | git diff-tree -r -C HEAD && | |
130 | git p4 submit && | |
131 | p4 filelog //depot/file8 && | |
c7cf9566 | 132 | ! p4 filelog //depot/file8 | grep -q "branch from" && |
9b6513ac | 133 | |
f1f4c84d VA |
134 | echo "file9" >>file2 && |
135 | git commit -a -m "Differentiate file2" && | |
136 | git p4 submit && | |
137 | ||
9b6513ac PW |
138 | cp file2 file9 && |
139 | git add file9 && | |
140 | git commit -a -m "Copy file2 to file9" && | |
141 | git diff-tree -r -C HEAD && | |
142 | git config git-p4.detectCopies true && | |
143 | git p4 submit && | |
144 | p4 filelog //depot/file9 && | |
c7cf9566 | 145 | ! p4 filelog //depot/file9 | grep -q "branch from" && |
9b6513ac | 146 | |
f1f4c84d VA |
147 | echo "file10" >>file2 && |
148 | git commit -a -m "Differentiate file2" && | |
149 | git p4 submit && | |
150 | ||
9b6513ac PW |
151 | echo "file2" >>file2 && |
152 | cp file2 file10 && | |
153 | git add file2 file10 && | |
154 | git commit -a -m "Modify and copy file2 to file10" && | |
155 | git diff-tree -r -C HEAD && | |
f1f4c84d VA |
156 | src=$(git diff-tree -r -C HEAD | sed 1d | sed 2d | cut -f2) && |
157 | test "$src" = file2 && | |
9b6513ac PW |
158 | git p4 submit && |
159 | p4 filelog //depot/file10 && | |
f1f4c84d VA |
160 | p4 filelog //depot/file10 | grep -q "branch from //depot/file2" && |
161 | ||
162 | echo "file11" >>file2 && | |
163 | git commit -a -m "Differentiate file2" && | |
164 | git p4 submit && | |
9b6513ac PW |
165 | |
166 | cp file2 file11 && | |
167 | git add file11 && | |
168 | git commit -a -m "Copy file2 to file11" && | |
169 | git diff-tree -r -C --find-copies-harder HEAD && | |
170 | src=$(git diff-tree -r -C --find-copies-harder HEAD | sed 1d | cut -f2) && | |
f1f4c84d | 171 | test "$src" = file2 && |
9b6513ac PW |
172 | git config git-p4.detectCopiesHarder true && |
173 | git p4 submit && | |
174 | p4 filelog //depot/file11 && | |
f1f4c84d VA |
175 | p4 filelog //depot/file11 | grep -q "branch from //depot/file2" && |
176 | ||
177 | echo "file12" >>file2 && | |
178 | git commit -a -m "Differentiate file2" && | |
179 | git p4 submit && | |
9b6513ac PW |
180 | |
181 | cp file2 file12 && | |
182 | echo "some text" >>file12 && | |
183 | git add file12 && | |
184 | git commit -a -m "Copy file2 to file12 with changes" && | |
185 | git diff-tree -r -C --find-copies-harder HEAD && | |
186 | level=$(git diff-tree -r -C --find-copies-harder HEAD | sed 1d | cut -f1 | cut -d" " -f5 | sed "s/C0*//") && | |
187 | test -n "$level" && test "$level" -gt 0 && test "$level" -lt 98 && | |
188 | src=$(git diff-tree -r -C --find-copies-harder HEAD | sed 1d | cut -f2) && | |
f1f4c84d | 189 | test "$src" = file2 && |
9b6513ac PW |
190 | git config git-p4.detectCopies $(($level + 2)) && |
191 | git p4 submit && | |
192 | p4 filelog //depot/file12 && | |
c7cf9566 | 193 | ! p4 filelog //depot/file12 | grep -q "branch from" && |
9b6513ac | 194 | |
f1f4c84d VA |
195 | echo "file13" >>file2 && |
196 | git commit -a -m "Differentiate file2" && | |
197 | git p4 submit && | |
198 | ||
9b6513ac PW |
199 | cp file2 file13 && |
200 | echo "different text" >>file13 && | |
201 | git add file13 && | |
202 | git commit -a -m "Copy file2 to file13 with changes" && | |
203 | git diff-tree -r -C --find-copies-harder HEAD && | |
204 | level=$(git diff-tree -r -C --find-copies-harder HEAD | sed 1d | cut -f1 | cut -d" " -f5 | sed "s/C0*//") && | |
205 | test -n "$level" && test "$level" -gt 2 && test "$level" -lt 100 && | |
206 | src=$(git diff-tree -r -C --find-copies-harder HEAD | sed 1d | cut -f2) && | |
f1f4c84d | 207 | test "$src" = file2 && |
9b6513ac PW |
208 | git config git-p4.detectCopies $(($level - 2)) && |
209 | git p4 submit && | |
210 | p4 filelog //depot/file13 && | |
f1f4c84d | 211 | p4 filelog //depot/file13 | grep -q "branch from //depot/file2" |
9b6513ac PW |
212 | ) |
213 | ' | |
214 | ||
249da4c0 PW |
215 | # See if configurables can be set, and in particular if the run.move.allow |
216 | # variable exists, which allows admins to disable the "p4 move" command. | |
896e700a LD |
217 | test_lazy_prereq P4D_HAVE_CONFIGURABLE_RUN_MOVE_ALLOW ' |
218 | p4 configure show run.move.allow >out && | |
219 | egrep ^run.move.allow: out | |
249da4c0 PW |
220 | ' |
221 | ||
222 | # If move can be disabled, turn it off and test p4 move handling | |
223 | test_expect_success P4D_HAVE_CONFIGURABLE_RUN_MOVE_ALLOW \ | |
224 | 'do not use p4 move when administratively disabled' ' | |
225 | test_when_finished "p4 configure set run.move.allow=1" && | |
226 | p4 configure set run.move.allow=0 && | |
227 | ( | |
228 | cd "$cli" && | |
229 | echo move-disallow-file >move-disallow-file && | |
230 | p4 add move-disallow-file && | |
231 | p4 submit -d "add move-disallow-file" | |
232 | ) && | |
233 | test_when_finished cleanup_git && | |
234 | git p4 clone --dest="$git" //depot && | |
235 | ( | |
236 | cd "$git" && | |
237 | git config git-p4.skipSubmitEdit true && | |
238 | git config git-p4.detectRenames true && | |
239 | git mv move-disallow-file move-disallow-file-moved && | |
240 | git commit -m "move move-disallow-file" && | |
241 | git p4 submit | |
242 | ) | |
243 | ' | |
244 | ||
9b6513ac PW |
245 | test_expect_success 'kill p4d' ' |
246 | kill_p4d | |
247 | ' | |
248 | ||
249 | test_done |