]>
Commit | Line | Data |
---|---|---|
fc002330 PW |
1 | #!/bin/sh |
2 | ||
6ab1d76c | 3 | test_description='git p4 tests for p4 branches' |
fc002330 PW |
4 | |
5 | . ./lib-git-p4.sh | |
6 | ||
7 | test_expect_success 'start p4d' ' | |
8 | start_p4d | |
9 | ' | |
10 | ||
11 | # | |
12 | # 1: //depot/main/f1 | |
13 | # 2: //depot/main/f2 | |
14 | # 3: integrate //depot/main/... -> //depot/branch1/... | |
15 | # 4: //depot/main/f4 | |
16 | # 5: //depot/branch1/f5 | |
17 | # .: named branch branch2 | |
18 | # 6: integrate -b branch2 | |
19 | # 7: //depot/branch2/f7 | |
20 | # 8: //depot/main/f8 | |
21 | # | |
22 | test_expect_success 'basic p4 branches' ' | |
23 | ( | |
24 | cd "$cli" && | |
25 | mkdir -p main && | |
26 | ||
27 | echo f1 >main/f1 && | |
28 | p4 add main/f1 && | |
29 | p4 submit -d "main/f1" && | |
30 | ||
31 | echo f2 >main/f2 && | |
32 | p4 add main/f2 && | |
33 | p4 submit -d "main/f2" && | |
34 | ||
35 | p4 integrate //depot/main/... //depot/branch1/... && | |
36 | p4 submit -d "integrate main to branch1" && | |
37 | ||
38 | echo f4 >main/f4 && | |
39 | p4 add main/f4 && | |
40 | p4 submit -d "main/f4" && | |
41 | ||
42 | echo f5 >branch1/f5 && | |
43 | p4 add branch1/f5 && | |
44 | p4 submit -d "branch1/f5" && | |
45 | ||
46 | p4 branch -i <<-EOF && | |
47 | Branch: branch2 | |
48 | View: //depot/main/... //depot/branch2/... | |
49 | EOF | |
50 | ||
51 | p4 integrate -b branch2 && | |
52 | p4 submit -d "integrate main to branch2" && | |
53 | ||
54 | echo f7 >branch2/f7 && | |
55 | p4 add branch2/f7 && | |
56 | p4 submit -d "branch2/f7" && | |
57 | ||
58 | echo f8 >main/f8 && | |
59 | p4 add main/f8 && | |
60 | p4 submit -d "main/f8" | |
61 | ) | |
62 | ' | |
63 | ||
64 | test_expect_success 'import main, no branch detection' ' | |
65 | test_when_finished cleanup_git && | |
6ab1d76c | 66 | git p4 clone --dest="$git" //depot/main@all && |
fc002330 PW |
67 | ( |
68 | cd "$git" && | |
69 | git log --oneline --graph --decorate --all && | |
70 | git rev-list master >wc && | |
71 | test_line_count = 4 wc | |
72 | ) | |
73 | ' | |
74 | ||
75 | test_expect_success 'import branch1, no branch detection' ' | |
76 | test_when_finished cleanup_git && | |
6ab1d76c | 77 | git p4 clone --dest="$git" //depot/branch1@all && |
fc002330 PW |
78 | ( |
79 | cd "$git" && | |
80 | git log --oneline --graph --decorate --all && | |
81 | git rev-list master >wc && | |
82 | test_line_count = 2 wc | |
83 | ) | |
84 | ' | |
85 | ||
86 | test_expect_success 'import branch2, no branch detection' ' | |
87 | test_when_finished cleanup_git && | |
6ab1d76c | 88 | git p4 clone --dest="$git" //depot/branch2@all && |
fc002330 PW |
89 | ( |
90 | cd "$git" && | |
91 | git log --oneline --graph --decorate --all && | |
92 | git rev-list master >wc && | |
93 | test_line_count = 2 wc | |
94 | ) | |
95 | ' | |
96 | ||
97 | test_expect_success 'import depot, no branch detection' ' | |
98 | test_when_finished cleanup_git && | |
6ab1d76c | 99 | git p4 clone --dest="$git" //depot@all && |
fc002330 PW |
100 | ( |
101 | cd "$git" && | |
102 | git log --oneline --graph --decorate --all && | |
103 | git rev-list master >wc && | |
104 | test_line_count = 8 wc | |
105 | ) | |
106 | ' | |
107 | ||
108 | test_expect_success 'import depot, branch detection' ' | |
109 | test_when_finished cleanup_git && | |
6ab1d76c | 110 | git p4 clone --dest="$git" --detect-branches //depot@all && |
fc002330 PW |
111 | ( |
112 | cd "$git" && | |
113 | ||
114 | git log --oneline --graph --decorate --all && | |
115 | ||
116 | # 4 main commits | |
117 | git rev-list master >wc && | |
118 | test_line_count = 4 wc && | |
119 | ||
120 | # 3 main, 1 integrate, 1 on branch2 | |
121 | git rev-list p4/depot/branch2 >wc && | |
122 | test_line_count = 5 wc && | |
123 | ||
124 | # no branch1, since no p4 branch created for it | |
125 | test_must_fail git show-ref p4/depot/branch1 | |
126 | ) | |
127 | ' | |
128 | ||
129 | test_expect_success 'import depot, branch detection, branchList branch definition' ' | |
130 | test_when_finished cleanup_git && | |
131 | test_create_repo "$git" && | |
132 | ( | |
133 | cd "$git" && | |
134 | git config git-p4.branchList main:branch1 && | |
6ab1d76c | 135 | git p4 clone --dest=. --detect-branches //depot@all && |
fc002330 PW |
136 | |
137 | git log --oneline --graph --decorate --all && | |
138 | ||
139 | # 4 main commits | |
140 | git rev-list master >wc && | |
141 | test_line_count = 4 wc && | |
142 | ||
143 | # 3 main, 1 integrate, 1 on branch2 | |
144 | git rev-list p4/depot/branch2 >wc && | |
145 | test_line_count = 5 wc && | |
146 | ||
147 | # 2 main, 1 integrate, 1 on branch1 | |
148 | git rev-list p4/depot/branch1 >wc && | |
149 | test_line_count = 4 wc | |
150 | ) | |
151 | ' | |
152 | ||
153 | test_expect_success 'restart p4d' ' | |
154 | kill_p4d && | |
155 | start_p4d | |
156 | ' | |
157 | ||
158 | # | |
159 | # 1: //depot/branch1/file1 | |
160 | # //depot/branch1/file2 | |
161 | # 2: integrate //depot/branch1/... -> //depot/branch2/... | |
162 | # 3: //depot/branch1/file3 | |
163 | # 4: //depot/branch1/file2 (edit) | |
164 | # 5: integrate //depot/branch1/... -> //depot/branch3/... | |
165 | # | |
166 | ## Create a simple branch structure in P4 depot. | |
167 | test_expect_success 'add simple p4 branches' ' | |
168 | ( | |
169 | cd "$cli" && | |
170 | mkdir branch1 && | |
171 | cd branch1 && | |
172 | echo file1 >file1 && | |
173 | echo file2 >file2 && | |
174 | p4 add file1 file2 && | |
c5665efe | 175 | p4 submit -d "Create branch1" && |
fc002330 | 176 | p4 integrate //depot/branch1/... //depot/branch2/... && |
c5665efe | 177 | p4 submit -d "Integrate branch2 from branch1" && |
fc002330 PW |
178 | echo file3 >file3 && |
179 | p4 add file3 && | |
180 | p4 submit -d "add file3 in branch1" && | |
181 | p4 open file2 && | |
182 | echo update >>file2 && | |
183 | p4 submit -d "update file2 in branch1" && | |
184 | p4 integrate //depot/branch1/... //depot/branch3/... && | |
c5665efe | 185 | p4 submit -d "Integrate branch3 from branch1" |
fc002330 PW |
186 | ) |
187 | ' | |
188 | ||
189 | # Configure branches through git-config and clone them. | |
190 | # All files are tested to make sure branches were cloned correctly. | |
191 | # Finally, make an update to branch1 on P4 side to check if it is imported | |
6ab1d76c PW |
192 | # correctly by git p4. |
193 | test_expect_success 'git p4 clone simple branches' ' | |
fc002330 PW |
194 | test_when_finished cleanup_git && |
195 | test_create_repo "$git" && | |
196 | ( | |
197 | cd "$git" && | |
198 | git config git-p4.branchList branch1:branch2 && | |
199 | git config --add git-p4.branchList branch1:branch3 && | |
6ab1d76c | 200 | git p4 clone --dest=. --detect-branches //depot@all && |
fc002330 PW |
201 | git log --all --graph --decorate --stat && |
202 | git reset --hard p4/depot/branch1 && | |
203 | test -f file1 && | |
204 | test -f file2 && | |
205 | test -f file3 && | |
c5665efe | 206 | grep update file2 && |
fc002330 PW |
207 | git reset --hard p4/depot/branch2 && |
208 | test -f file1 && | |
209 | test -f file2 && | |
210 | test ! -f file3 && | |
e7d7a567 | 211 | ! grep update file2 && |
fc002330 PW |
212 | git reset --hard p4/depot/branch3 && |
213 | test -f file1 && | |
214 | test -f file2 && | |
215 | test -f file3 && | |
c5665efe | 216 | grep update file2 && |
fc002330 PW |
217 | cd "$cli" && |
218 | cd branch1 && | |
219 | p4 edit file2 && | |
220 | echo file2_ >>file2 && | |
5d5c556a | 221 | p4 submit -d "update file2 in branch1" && |
fc002330 PW |
222 | cd "$git" && |
223 | git reset --hard p4/depot/branch1 && | |
6ab1d76c | 224 | git p4 rebase && |
c5665efe VA |
225 | grep file2_ file2 |
226 | ) | |
227 | ' | |
228 | ||
229 | # Create a complex branch structure in P4 depot to check if they are correctly | |
6ab1d76c | 230 | # cloned. The branches are created from older changelists to check if git p4 is |
c5665efe VA |
231 | # able to correctly detect them. |
232 | # The final expected structure is: | |
233 | # `branch1 | |
234 | # | `- file1 | |
235 | # | `- file2 (updated) | |
236 | # | `- file3 | |
237 | # `branch2 | |
238 | # | `- file1 | |
239 | # | `- file2 | |
240 | # `branch3 | |
241 | # | `- file1 | |
242 | # | `- file2 (updated) | |
243 | # | `- file3 | |
244 | # `branch4 | |
245 | # | `- file1 | |
246 | # | `- file2 | |
247 | # `branch5 | |
248 | # `- file1 | |
249 | # `- file2 | |
250 | # `- file3 | |
6ab1d76c | 251 | test_expect_success 'git p4 add complex branches' ' |
c5665efe VA |
252 | ( |
253 | cd "$cli" && | |
254 | changelist=$(p4 changes -m1 //depot/... | cut -d" " -f2) && | |
255 | changelist=$(($changelist - 5)) && | |
256 | p4 integrate //depot/branch1/...@$changelist //depot/branch4/... && | |
257 | p4 submit -d "Integrate branch4 from branch1@${changelist}" && | |
258 | changelist=$(($changelist + 2)) && | |
259 | p4 integrate //depot/branch1/...@$changelist //depot/branch5/... && | |
260 | p4 submit -d "Integrate branch5 from branch1@${changelist}" | |
261 | ) | |
262 | ' | |
263 | ||
6ab1d76c | 264 | # Configure branches through git-config and clone them. git p4 will only be able |
c5665efe VA |
265 | # to clone the original structure if it is able to detect the origin changelist |
266 | # of each branch. | |
6ab1d76c | 267 | test_expect_success 'git p4 clone complex branches' ' |
c5665efe VA |
268 | test_when_finished cleanup_git && |
269 | test_create_repo "$git" && | |
270 | ( | |
271 | cd "$git" && | |
272 | git config git-p4.branchList branch1:branch2 && | |
273 | git config --add git-p4.branchList branch1:branch3 && | |
274 | git config --add git-p4.branchList branch1:branch4 && | |
275 | git config --add git-p4.branchList branch1:branch5 && | |
6ab1d76c | 276 | git p4 clone --dest=. --detect-branches //depot@all && |
c5665efe VA |
277 | git log --all --graph --decorate --stat && |
278 | git reset --hard p4/depot/branch1 && | |
279 | test_path_is_file file1 && | |
280 | test_path_is_file file2 && | |
281 | test_path_is_file file3 && | |
282 | grep update file2 && | |
283 | git reset --hard p4/depot/branch2 && | |
284 | test_path_is_file file1 && | |
285 | test_path_is_file file2 && | |
286 | test_path_is_missing file3 && | |
e7d7a567 | 287 | ! grep update file2 && |
c5665efe VA |
288 | git reset --hard p4/depot/branch3 && |
289 | test_path_is_file file1 && | |
290 | test_path_is_file file2 && | |
291 | test_path_is_file file3 && | |
292 | grep update file2 && | |
293 | git reset --hard p4/depot/branch4 && | |
294 | test_path_is_file file1 && | |
295 | test_path_is_file file2 && | |
296 | test_path_is_missing file3 && | |
e7d7a567 | 297 | ! grep update file2 && |
c5665efe VA |
298 | git reset --hard p4/depot/branch5 && |
299 | test_path_is_file file1 && | |
300 | test_path_is_file file2 && | |
301 | test_path_is_file file3 && | |
e7d7a567 | 302 | ! grep update file2 && |
d604176d | 303 | test_must_fail git show-ref --verify refs/git-p4-tmp |
fc002330 PW |
304 | ) |
305 | ' | |
306 | ||
9e826dfd VA |
307 | # Move branch3/file3 to branch4/file3 in a single changelist |
308 | test_expect_success 'git p4 submit to two branches in a single changelist' ' | |
309 | ( | |
310 | cd "$cli" && | |
311 | p4 integrate //depot/branch3/file3 //depot/branch4/file3 && | |
312 | p4 delete //depot/branch3/file3 && | |
313 | p4 submit -d "Move branch3/file3 to branch4/file3" | |
314 | ) | |
315 | ' | |
316 | ||
317 | # Confirm that changes to two branches done in a single changelist | |
318 | # are correctly imported by git p4 | |
319 | test_expect_success 'git p4 sync changes to two branches in the same changelist' ' | |
320 | test_when_finished cleanup_git && | |
321 | test_create_repo "$git" && | |
322 | ( | |
323 | cd "$git" && | |
324 | git config git-p4.branchList branch1:branch2 && | |
325 | git config --add git-p4.branchList branch1:branch3 && | |
326 | git config --add git-p4.branchList branch1:branch4 && | |
327 | git config --add git-p4.branchList branch1:branch5 && | |
328 | git p4 clone --dest=. --detect-branches //depot@all && | |
329 | git log --all --graph --decorate --stat && | |
330 | git reset --hard p4/depot/branch1 && | |
331 | test_path_is_file file1 && | |
332 | test_path_is_file file2 && | |
333 | test_path_is_file file3 && | |
334 | grep update file2 && | |
335 | git reset --hard p4/depot/branch2 && | |
336 | test_path_is_file file1 && | |
337 | test_path_is_file file2 && | |
338 | test_path_is_missing file3 && | |
339 | ! grep update file2 && | |
340 | git reset --hard p4/depot/branch3 && | |
341 | test_path_is_file file1 && | |
342 | test_path_is_file file2 && | |
343 | test_path_is_missing file3 && | |
344 | grep update file2 && | |
345 | git reset --hard p4/depot/branch4 && | |
346 | test_path_is_file file1 && | |
347 | test_path_is_file file2 && | |
348 | test_path_is_file file3 && | |
349 | ! grep update file2 && | |
350 | git reset --hard p4/depot/branch5 && | |
351 | test_path_is_file file1 && | |
352 | test_path_is_file file2 && | |
353 | test_path_is_file file3 && | |
354 | ! grep update file2 && | |
d604176d | 355 | test_must_fail git show-ref --verify refs/git-p4-tmp |
9e826dfd VA |
356 | ) |
357 | ' | |
358 | ||
ad71f661 VA |
359 | # Create a branch by integrating a single file |
360 | test_expect_success 'git p4 file subset branch' ' | |
361 | ( | |
362 | cd "$cli" && | |
363 | p4 integrate //depot/branch1/file1 //depot/branch6/file1 && | |
364 | p4 submit -d "Integrate file1 alone from branch1 to branch6" | |
365 | ) | |
366 | ' | |
367 | ||
368 | # Check if git p4 creates a new branch containing a single file, | |
369 | # instead of keeping the old files from the original branch | |
370 | test_expect_failure 'git p4 clone file subset branch' ' | |
371 | test_when_finished cleanup_git && | |
372 | test_create_repo "$git" && | |
373 | ( | |
374 | cd "$git" && | |
375 | git config git-p4.branchList branch1:branch2 && | |
376 | git config --add git-p4.branchList branch1:branch3 && | |
377 | git config --add git-p4.branchList branch1:branch4 && | |
378 | git config --add git-p4.branchList branch1:branch5 && | |
379 | git config --add git-p4.branchList branch1:branch6 && | |
380 | git p4 clone --dest=. --detect-branches //depot@all && | |
381 | git log --all --graph --decorate --stat && | |
382 | git reset --hard p4/depot/branch1 && | |
383 | test_path_is_file file1 && | |
384 | test_path_is_file file2 && | |
385 | test_path_is_file file3 && | |
386 | grep update file2 && | |
387 | git reset --hard p4/depot/branch2 && | |
388 | test_path_is_file file1 && | |
389 | test_path_is_file file2 && | |
390 | test_path_is_missing file3 && | |
391 | ! grep update file2 && | |
392 | git reset --hard p4/depot/branch3 && | |
393 | test_path_is_file file1 && | |
394 | test_path_is_file file2 && | |
395 | test_path_is_missing file3 && | |
396 | grep update file2 && | |
397 | git reset --hard p4/depot/branch4 && | |
398 | test_path_is_file file1 && | |
399 | test_path_is_file file2 && | |
400 | test_path_is_file file3 && | |
401 | ! grep update file2 && | |
402 | git reset --hard p4/depot/branch5 && | |
403 | test_path_is_file file1 && | |
404 | test_path_is_file file2 && | |
405 | test_path_is_file file3 && | |
406 | ! grep update file2 && | |
407 | git reset --hard p4/depot/branch6 && | |
408 | test_path_is_file file1 && | |
409 | test_path_is_missing file2 && | |
410 | test_path_is_missing file3 | |
411 | ) | |
412 | ' | |
19516356 PW |
413 | |
414 | # From a report in http://stackoverflow.com/questions/11893688 | |
415 | # where --use-client-spec caused branch prefixes not to be removed; | |
416 | # every file in git appeared into a subdirectory of the branch name. | |
417 | test_expect_success 'use-client-spec detect-branches setup' ' | |
418 | rm -rf "$cli" && | |
419 | mkdir "$cli" && | |
420 | ( | |
421 | cd "$cli" && | |
422 | client_view "//depot/usecs/... //client/..." && | |
423 | mkdir b1 && | |
424 | echo b1/b1-file1 >b1/b1-file1 && | |
425 | p4 add b1/b1-file1 && | |
426 | p4 submit -d "b1/b1-file1" && | |
427 | ||
428 | p4 integrate //depot/usecs/b1/... //depot/usecs/b2/... && | |
429 | p4 submit -d "b1 -> b2" && | |
430 | p4 branch -i <<-EOF && | |
431 | Branch: b2 | |
432 | View: //depot/usecs/b1/... //depot/usecs/b2/... | |
433 | EOF | |
434 | ||
435 | echo b2/b2-file2 >b2/b2-file2 && | |
436 | p4 add b2/b2-file2 && | |
437 | p4 submit -d "b2/b2-file2" | |
438 | ) | |
439 | ' | |
440 | ||
21ef5df4 | 441 | test_expect_success 'use-client-spec detect-branches files in top-level' ' |
19516356 PW |
442 | test_when_finished cleanup_git && |
443 | test_create_repo "$git" && | |
444 | ( | |
445 | cd "$git" && | |
446 | git p4 sync --detect-branches --use-client-spec //depot/usecs@all && | |
447 | git checkout -b master p4/usecs/b1 && | |
448 | test_path_is_file b1-file1 && | |
449 | test_path_is_missing b2-file2 && | |
450 | test_path_is_missing b1 && | |
451 | test_path_is_missing b2 && | |
452 | ||
453 | git checkout -b b2 p4/usecs/b2 && | |
454 | test_path_is_file b1-file1 && | |
455 | test_path_is_file b2-file2 && | |
456 | test_path_is_missing b1 && | |
457 | test_path_is_missing b2 | |
458 | ) | |
459 | ' | |
460 | ||
461 | test_expect_success 'use-client-spec detect-branches skips branches setup' ' | |
462 | ( | |
463 | cd "$cli" && | |
464 | ||
465 | p4 integrate //depot/usecs/b1/... //depot/usecs/b3/... && | |
466 | p4 submit -d "b1 -> b3" && | |
467 | p4 branch -i <<-EOF && | |
468 | Branch: b3 | |
469 | View: //depot/usecs/b1/... //depot/usecs/b3/... | |
470 | EOF | |
471 | ||
7c8ce4ed VA |
472 | echo b3/b3-file3_1 >b3/b3-file3_1 && |
473 | echo b3/b3-file3_2 >b3/b3-file3_2 && | |
474 | p4 add b3/b3-file3_1 && | |
475 | p4 add b3/b3-file3_2 && | |
476 | p4 submit -d "b3/b3-file3_1 b3/b3-file3_2" | |
19516356 PW |
477 | ) |
478 | ' | |
479 | ||
480 | test_expect_success 'use-client-spec detect-branches skips branches' ' | |
481 | client_view "//depot/usecs/... //client/..." \ | |
482 | "-//depot/usecs/b3/... //client/b3/..." && | |
483 | test_when_finished cleanup_git && | |
484 | test_create_repo "$git" && | |
485 | ( | |
486 | cd "$git" && | |
487 | git p4 sync --detect-branches --use-client-spec //depot/usecs@all && | |
488 | test_must_fail git rev-parse refs/remotes/p4/usecs/b3 | |
489 | ) | |
490 | ' | |
491 | ||
7c8ce4ed VA |
492 | test_expect_success 'use-client-spec detect-branches skips files in branches' ' |
493 | client_view "//depot/usecs/... //client/..." \ | |
494 | "-//depot/usecs/b3/b3-file3_1 //client/b3/b3-file3_1" && | |
495 | test_when_finished cleanup_git && | |
496 | test_create_repo "$git" && | |
497 | ( | |
498 | cd "$git" && | |
499 | git p4 sync --detect-branches --use-client-spec //depot/usecs@all && | |
500 | git checkout -b master p4/usecs/b3 && | |
501 | test_path_is_file b1-file1 && | |
502 | test_path_is_file b3-file3_2 && | |
503 | test_path_is_missing b3-file3_1 | |
504 | ) | |
505 | ' | |
506 | ||
591707a7 VA |
507 | test_expect_success 'restart p4d' ' |
508 | kill_p4d && | |
509 | start_p4d | |
510 | ' | |
511 | ||
512 | # | |
513 | # 1: //depot/branch1/base/file1 | |
514 | # //depot/branch1/base/file2 | |
515 | # //depot/branch1/base/dir/sub_file1 | |
516 | # 2: integrate //depot/branch1/base/... -> //depot/branch2/base/... | |
517 | # 3: //depot/branch1/base/file3 | |
518 | # 4: //depot/branch1/base/file2 (edit) | |
519 | # 5: integrate //depot/branch1/base/... -> //depot/branch3/base/... | |
520 | # | |
521 | # Note: the client view removes the "base" folder from the workspace | |
522 | # and moves sub_file1 one level up. | |
523 | test_expect_success 'add simple p4 branches with common base folder on each branch' ' | |
524 | ( | |
525 | cd "$cli" && | |
526 | client_view "//depot/branch1/base/... //client/branch1/..." \ | |
527 | "//depot/branch1/base/dir/sub_file1 //client/branch1/sub_file1" \ | |
528 | "//depot/branch2/base/... //client/branch2/..." \ | |
529 | "//depot/branch3/base/... //client/branch3/..." && | |
530 | mkdir -p branch1 && | |
531 | cd branch1 && | |
532 | echo file1 >file1 && | |
533 | echo file2 >file2 && | |
534 | mkdir dir && | |
535 | echo sub_file1 >sub_file1 && | |
536 | p4 add file1 file2 sub_file1 && | |
537 | p4 submit -d "Create branch1" && | |
538 | p4 integrate //depot/branch1/base/... //depot/branch2/base/... && | |
539 | p4 submit -d "Integrate branch2 from branch1" && | |
540 | echo file3 >file3 && | |
541 | p4 add file3 && | |
542 | p4 submit -d "add file3 in branch1" && | |
543 | p4 open file2 && | |
544 | echo update >>file2 && | |
545 | p4 submit -d "update file2 in branch1" && | |
546 | p4 integrate //depot/branch1/base/... //depot/branch3/base/... && | |
547 | p4 submit -d "Integrate branch3 from branch1" | |
548 | ) | |
549 | ' | |
550 | ||
551 | # Configure branches through git-config and clone them. | |
552 | # All files are tested to make sure branches were cloned correctly. | |
553 | # Finally, make an update to branch1 on P4 side to check if it is imported | |
554 | # correctly by git p4. | |
555 | # git p4 is expected to use the client view to also not include the common | |
556 | # "base" folder in the imported directory structure. | |
557 | test_expect_success 'git p4 clone simple branches with base folder on server side' ' | |
558 | test_create_repo "$git" && | |
559 | ( | |
560 | cd "$git" && | |
561 | git config git-p4.branchList branch1:branch2 && | |
562 | git config --add git-p4.branchList branch1:branch3 && | |
563 | git p4 clone --dest=. --use-client-spec --detect-branches //depot@all && | |
564 | git log --all --graph --decorate --stat && | |
565 | git reset --hard p4/depot/branch1 && | |
566 | test -f file1 && | |
567 | test -f file2 && | |
568 | test -f file3 && | |
569 | test -f sub_file1 && | |
570 | grep update file2 && | |
571 | git reset --hard p4/depot/branch2 && | |
572 | test -f file1 && | |
573 | test -f file2 && | |
574 | test ! -f file3 && | |
575 | test -f sub_file1 && | |
576 | ! grep update file2 && | |
577 | git reset --hard p4/depot/branch3 && | |
578 | test -f file1 && | |
579 | test -f file2 && | |
580 | test -f file3 && | |
581 | test -f sub_file1 && | |
582 | grep update file2 && | |
583 | cd "$cli" && | |
584 | cd branch1 && | |
585 | p4 edit file2 && | |
586 | echo file2_ >>file2 && | |
587 | p4 submit -d "update file2 in branch1" && | |
588 | cd "$git" && | |
589 | git reset --hard p4/depot/branch1 && | |
590 | git p4 rebase && | |
591 | grep file2_ file2 | |
592 | ) | |
593 | ' | |
594 | ||
595 | # Now update a file in one of the branches in git and submit to P4 | |
cd884106 | 596 | test_expect_success 'Update a file in git side and submit to P4 using client view' ' |
591707a7 VA |
597 | test_when_finished cleanup_git && |
598 | ( | |
599 | cd "$git" && | |
600 | git reset --hard p4/depot/branch1 && | |
601 | echo "client spec" >> file1 && | |
602 | git add -u . && | |
603 | git commit -m "update file1 in branch1" && | |
604 | git config git-p4.skipSubmitEdit true && | |
605 | git p4 submit --verbose && | |
606 | cd "$cli" && | |
607 | p4 sync ... && | |
608 | cd branch1 && | |
609 | grep "client spec" file1 | |
610 | ) | |
611 | ' | |
612 | ||
fc002330 PW |
613 | test_expect_success 'kill p4d' ' |
614 | kill_p4d | |
615 | ' | |
616 | ||
617 | test_done |