139
test_must_fail grep -q Traceback errs
140
'
141
142
-test_expect_success 'add p4 files with wildcards in the names' '
143
- (
144
- cd "$cli" &&
145
- echo file-wild-hash >file-wild#hash &&
146
- echo file-wild-star >file-wild\*star &&
147
- echo file-wild-at >file-wild@at &&
148
- echo file-wild-percent >file-wild%percent &&
149
- p4 add -f file-wild* &&
150
- p4 submit -d "file wildcards"
151
- )
152
-'
153
-
154
-test_expect_success 'wildcard files git p4 clone' '
155
- git p4 clone --dest="$git" //depot &&
156
- test_when_finished cleanup_git &&
157
- (
158
- cd "$git" &&
159
- test -f file-wild#hash &&
160
- test -f file-wild\*star &&
161
- test -f file-wild@at &&
162
- test -f file-wild%percent
163
- )
164
-'
165
-
166
-test_expect_success 'wildcard files submit back to p4, add' '
167
- test_when_finished cleanup_git &&
168
- git p4 clone --dest="$git" //depot &&
169
- (
170
- cd "$git" &&
171
- echo git-wild-hash >git-wild#hash &&
172
- echo git-wild-star >git-wild\*star &&
173
- echo git-wild-at >git-wild@at &&
174
- echo git-wild-percent >git-wild%percent &&
175
- git add git-wild* &&
176
- git commit -m "add some wildcard filenames" &&
177
- git config git-p4.skipSubmitEdit true &&
178
- git p4 submit
179
- ) &&
180
- (
181
- cd "$cli" &&
182
- test_path_is_file git-wild#hash &&
183
- test_path_is_file git-wild\*star &&
184
- test_path_is_file git-wild@at &&
185
- test_path_is_file git-wild%percent
186
- )
187
-'
188
-
189
-test_expect_success 'wildcard files submit back to p4, modify' '
190
- test_when_finished cleanup_git &&
191
- git p4 clone --dest="$git" //depot &&
192
- (
193
- cd "$git" &&
194
- echo new-line >>git-wild#hash &&
195
- echo new-line >>git-wild\*star &&
196
- echo new-line >>git-wild@at &&
197
- echo new-line >>git-wild%percent &&
198
- git add git-wild* &&
199
- git commit -m "modify the wildcard files" &&
200
- git config git-p4.skipSubmitEdit true &&
201
- git p4 submit
202
- ) &&
203
- (
204
- cd "$cli" &&
205
- test_line_count = 2 git-wild#hash &&
206
- test_line_count = 2 git-wild\*star &&
207
- test_line_count = 2 git-wild@at &&
208
- test_line_count = 2 git-wild%percent
209
- )
210
-'
211
-
212
-test_expect_success 'wildcard files submit back to p4, copy' '
213
- test_when_finished cleanup_git &&
214
- git p4 clone --dest="$git" //depot &&
215
- (
216
- cd "$git" &&
217
- cp file2 git-wild-cp#hash &&
218
- git add git-wild-cp#hash &&
219
- cp git-wild\*star file-wild-3 &&
220
- git add file-wild-3 &&
221
- git commit -m "wildcard copies" &&
222
- git config git-p4.detectCopies true &&
223
- git config git-p4.detectCopiesHarder true &&
224
- git config git-p4.skipSubmitEdit true &&
225
- git p4 submit
226
- ) &&
227
- (
228
- cd "$cli" &&
229
- test_path_is_file git-wild-cp#hash &&
230
- test_path_is_file file-wild-3
231
- )
232
-'
233
-
234
-test_expect_success 'wildcard files submit back to p4, rename' '
235
- test_when_finished cleanup_git &&
236
- git p4 clone --dest="$git" //depot &&
237
- (
238
- cd "$git" &&
239
- git mv git-wild@at file-wild-4 &&
240
- git mv file-wild-3 git-wild-cp%percent &&
241
- git commit -m "wildcard renames" &&
242
- git config git-p4.detectRenames true &&
243
- git config git-p4.skipSubmitEdit true &&
244
- git p4 submit
245
- ) &&
246
- (
247
- cd "$cli" &&
248
- test_path_is_missing git-wild@at &&
249
- test_path_is_file git-wild-cp%percent
250
- )
251
-'
252
-
253
-test_expect_success 'wildcard files submit back to p4, delete' '
254
- test_when_finished cleanup_git &&
255
- git p4 clone --dest="$git" //depot &&
256
- (
257
- cd "$git" &&
258
- git rm git-wild* &&
259
- git commit -m "delete the wildcard files" &&
260
- git config git-p4.skipSubmitEdit true &&
261
- git p4 submit
262
- ) &&
263
- (
264
- cd "$cli" &&
265
- test_path_is_missing git-wild#hash &&
266
- test_path_is_missing git-wild\*star &&
267
- test_path_is_missing git-wild@at &&
268
- test_path_is_missing git-wild%percent
269
- )
270
-'
271
-
142
test_expect_success 'clone bare' '
143
rm -rf "$git" &&
144
git p4 clone --dest="$git" --bare //depot &&
151
)
152
'
153
284
-p4_add_user() {
285
- name=$1 fullname=$2 &&
286
- p4 user -f -i <<-EOF &&
287
- User: $name
288
- Email: $name@localhost
289
- FullName: $fullname
290
- EOF
291
- p4 passwd -P secret $name
292
-}
293
-
294
-p4_grant_admin() {
295
- name=$1 &&
296
- {
297
- p4 protect -o &&
298
- echo " admin user $name * //depot/..."
299
- } | p4 protect -i
300
-}
301
-
302
-p4_check_commit_author() {
303
- file=$1 user=$2 &&
304
- p4 changes -m 1 //depot/$file | grep -q $user
305
-}
306
-
307
-make_change_by_user() {
308
- file=$1 name=$2 email=$3 &&
309
- echo "username: a change by $name" >>"$file" &&
310
- git add "$file" &&
311
- git commit --author "$name <$email>" -m "a change by $name"
312
-}
313
-
314
-# Test username support, submitting as user 'alice'
315
-test_expect_success 'preserve users' '
316
- p4_add_user alice Alice &&
317
- p4_add_user bob Bob &&
318
- p4_grant_admin alice &&
319
- git p4 clone --dest="$git" //depot &&
320
- test_when_finished cleanup_git &&
321
- (
322
- cd "$git" &&
323
- echo "username: a change by alice" >>file1 &&
324
- echo "username: a change by bob" >>file2 &&
325
- git commit --author "Alice <alice@localhost>" -m "a change by alice" file1 &&
326
- git commit --author "Bob <bob@localhost>" -m "a change by bob" file2 &&
327
- git config git-p4.skipSubmitEditCheck true &&
328
- P4EDITOR=touch P4USER=alice P4PASSWD=secret git p4 commit --preserve-user &&
329
- p4_check_commit_author file1 alice &&
330
- p4_check_commit_author file2 bob
331
- )
332
-'
333
-
334
-# Test username support, submitting as bob, who lacks admin rights. Should
335
-# not submit change to p4 (git diff should show deltas).
336
-test_expect_success 'refuse to preserve users without perms' '
337
- git p4 clone --dest="$git" //depot &&
338
- test_when_finished cleanup_git &&
339
- (
340
- cd "$git" &&
341
- git config git-p4.skipSubmitEditCheck true &&
342
- echo "username-noperms: a change by alice" >>file1 &&
343
- git commit --author "Alice <alice@localhost>" -m "perms: a change by alice" file1 &&
344
- P4EDITOR=touch P4USER=bob P4PASSWD=secret &&
345
- export P4EDITOR P4USER P4PASSWD &&
346
- test_must_fail git p4 commit --preserve-user &&
347
- ! git diff --exit-code HEAD..p4/master
348
- )
349
-'
350
-
351
-# What happens with unknown author? Without allowMissingP4Users it should fail.
352
-test_expect_success 'preserve user where author is unknown to p4' '
353
- git p4 clone --dest="$git" //depot &&
354
- test_when_finished cleanup_git &&
355
- (
356
- cd "$git" &&
357
- git config git-p4.skipSubmitEditCheck true &&
358
- echo "username-bob: a change by bob" >>file1 &&
359
- git commit --author "Bob <bob@localhost>" -m "preserve: a change by bob" file1 &&
360
- echo "username-unknown: a change by charlie" >>file1 &&
361
- git commit --author "Charlie <charlie@localhost>" -m "preserve: a change by charlie" file1 &&
362
- P4EDITOR=touch P4USER=alice P4PASSWD=secret &&
363
- export P4EDITOR P4USER P4PASSWD &&
364
- test_must_fail git p4 commit --preserve-user &&
365
- ! git diff --exit-code HEAD..p4/master &&
366
-
367
- echo "$0: repeat with allowMissingP4Users enabled" &&
368
- git config git-p4.allowMissingP4Users true &&
369
- git config git-p4.preserveUser true &&
370
- git p4 commit &&
371
- git diff --exit-code HEAD..p4/master &&
372
- p4_check_commit_author file1 alice
373
- )
374
-'
375
-
376
-# If we're *not* using --preserve-user, git p4 should warn if we're submitting
377
-# changes that are not all ours.
378
-# Test: user in p4 and user unknown to p4.
379
-# Test: warning disabled and user is the same.
380
-test_expect_success 'not preserving user with mixed authorship' '
381
- git p4 clone --dest="$git" //depot &&
382
- test_when_finished cleanup_git &&
383
- (
384
- cd "$git" &&
385
- git config git-p4.skipSubmitEditCheck true &&
386
- p4_add_user derek Derek &&
387
-
388
- make_change_by_user usernamefile3 Derek derek@localhost &&
389
- P4EDITOR=cat P4USER=alice P4PASSWD=secret &&
390
- export P4EDITOR P4USER P4PASSWD &&
391
- git p4 commit |\
392
- grep "git author derek@localhost does not match" &&
393
-
394
- make_change_by_user usernamefile3 Charlie charlie@localhost &&
395
- git p4 commit |\
396
- grep "git author charlie@localhost does not match" &&
397
-
398
- make_change_by_user usernamefile3 alice alice@localhost &&
399
- git p4 commit |\
400
- test_must_fail grep "git author.*does not match" &&
401
-
402
- git config git-p4.skipUserNameCheck true &&
403
- make_change_by_user usernamefile3 Charlie charlie@localhost &&
404
- git p4 commit |\
405
- test_must_fail grep "git author.*does not match" &&
406
-
407
- p4_check_commit_author usernamefile3 alice
408
- )
409
-'
410
-
154
marshal_dump() {
155
what=$1
156
"$PYTHON_PATH" -c 'import marshal, sys; d = marshal.load(sys.stdin); print d["'$what'"]'
173
)
174
'
175
433
-# Rename a file and confirm that rename is not detected in P4.
434
-# Rename the new file again with detectRenames option enabled and confirm that
435
-# this is detected in P4.
436
-# Rename the new file again adding an extra line, configure a big threshold in
437
-# detectRenames and confirm that rename is not detected in P4.
438
-# Repeat, this time with a smaller threshold and confirm that the rename is
439
-# detected in P4.
440
-test_expect_success 'detect renames' '
441
- git p4 clone --dest="$git" //depot@all &&
442
- test_when_finished cleanup_git &&
443
- (
444
- cd "$git" &&
445
- git config git-p4.skipSubmitEdit true &&
446
-
447
- git mv file1 file4 &&
448
- git commit -a -m "Rename file1 to file4" &&
449
- git diff-tree -r -M HEAD &&
450
- git p4 submit &&
451
- p4 filelog //depot/file4 &&
452
- p4 filelog //depot/file4 | test_must_fail grep -q "branch from" &&
453
-
454
- git mv file4 file5 &&
455
- git commit -a -m "Rename file4 to file5" &&
456
- git diff-tree -r -M HEAD &&
457
- git config git-p4.detectRenames true &&
458
- git p4 submit &&
459
- p4 filelog //depot/file5 &&
460
- p4 filelog //depot/file5 | grep -q "branch from //depot/file4" &&
461
-
462
- git mv file5 file6 &&
463
- echo update >>file6 &&
464
- git add file6 &&
465
- git commit -a -m "Rename file5 to file6 with changes" &&
466
- git diff-tree -r -M HEAD &&
467
- level=$(git diff-tree -r -M HEAD | sed 1d | cut -f1 | cut -d" " -f5 | sed "s/R0*//") &&
468
- test -n "$level" && test "$level" -gt 0 && test "$level" -lt 98 &&
469
- git config git-p4.detectRenames $(($level + 2)) &&
470
- git p4 submit &&
471
- p4 filelog //depot/file6 &&
472
- p4 filelog //depot/file6 | test_must_fail grep -q "branch from" &&
473
-
474
- git mv file6 file7 &&
475
- echo update >>file7 &&
476
- git add file7 &&
477
- git commit -a -m "Rename file6 to file7 with changes" &&
478
- git diff-tree -r -M HEAD &&
479
- level=$(git diff-tree -r -M HEAD | sed 1d | cut -f1 | cut -d" " -f5 | sed "s/R0*//") &&
480
- test -n "$level" && test "$level" -gt 2 && test "$level" -lt 100 &&
481
- git config git-p4.detectRenames $(($level - 2)) &&
482
- git p4 submit &&
483
- p4 filelog //depot/file7 &&
484
- p4 filelog //depot/file7 | grep -q "branch from //depot/file6"
485
- )
486
-'
487
-
488
-# Copy a file and confirm that copy is not detected in P4.
489
-# Copy a file with detectCopies option enabled and confirm that copy is not
490
-# detected in P4.
491
-# Modify and copy a file with detectCopies option enabled and confirm that copy
492
-# is detected in P4.
493
-# Copy a file with detectCopies and detectCopiesHarder options enabled and
494
-# confirm that copy is detected in P4.
495
-# Modify and copy a file, configure a bigger threshold in detectCopies and
496
-# confirm that copy is not detected in P4.
497
-# Modify and copy a file, configure a smaller threshold in detectCopies and
498
-# confirm that copy is detected in P4.
499
-test_expect_success 'detect copies' '
500
- git p4 clone --dest="$git" //depot@all &&
501
- test_when_finished cleanup_git &&
502
- (
503
- cd "$git" &&
504
- git config git-p4.skipSubmitEdit true &&
505
-
506
- cp file2 file8 &&
507
- git add file8 &&
508
- git commit -a -m "Copy file2 to file8" &&
509
- git diff-tree -r -C HEAD &&
510
- git p4 submit &&
511
- p4 filelog //depot/file8 &&
512
- p4 filelog //depot/file8 | test_must_fail grep -q "branch from" &&
513
-
514
- cp file2 file9 &&
515
- git add file9 &&
516
- git commit -a -m "Copy file2 to file9" &&
517
- git diff-tree -r -C HEAD &&
518
- git config git-p4.detectCopies true &&
519
- git p4 submit &&
520
- p4 filelog //depot/file9 &&
521
- p4 filelog //depot/file9 | test_must_fail grep -q "branch from" &&
522
-
523
- echo "file2" >>file2 &&
524
- cp file2 file10 &&
525
- git add file2 file10 &&
526
- git commit -a -m "Modify and copy file2 to file10" &&
527
- git diff-tree -r -C HEAD &&
528
- git p4 submit &&
529
- p4 filelog //depot/file10 &&
530
- p4 filelog //depot/file10 | grep -q "branch from //depot/file" &&
531
-
532
- cp file2 file11 &&
533
- git add file11 &&
534
- git commit -a -m "Copy file2 to file11" &&
535
- git diff-tree -r -C --find-copies-harder HEAD &&
536
- src=$(git diff-tree -r -C --find-copies-harder HEAD | sed 1d | cut -f2) &&
537
- test "$src" = file10 &&
538
- git config git-p4.detectCopiesHarder true &&
539
- git p4 submit &&
540
- p4 filelog //depot/file11 &&
541
- p4 filelog //depot/file11 | grep -q "branch from //depot/file" &&
542
-
543
- cp file2 file12 &&
544
- echo "some text" >>file12 &&
545
- git add file12 &&
546
- git commit -a -m "Copy file2 to file12 with changes" &&
547
- git diff-tree -r -C --find-copies-harder HEAD &&
548
- level=$(git diff-tree -r -C --find-copies-harder HEAD | sed 1d | cut -f1 | cut -d" " -f5 | sed "s/C0*//") &&
549
- test -n "$level" && test "$level" -gt 0 && test "$level" -lt 98 &&
550
- src=$(git diff-tree -r -C --find-copies-harder HEAD | sed 1d | cut -f2) &&
551
- test "$src" = file10 -o "$src" = file11 &&
552
- git config git-p4.detectCopies $(($level + 2)) &&
553
- git p4 submit &&
554
- p4 filelog //depot/file12 &&
555
- p4 filelog //depot/file12 | test_must_fail grep -q "branch from" &&
556
-
557
- cp file2 file13 &&
558
- echo "different text" >>file13 &&
559
- git add file13 &&
560
- git commit -a -m "Copy file2 to file13 with changes" &&
561
- git diff-tree -r -C --find-copies-harder HEAD &&
562
- level=$(git diff-tree -r -C --find-copies-harder HEAD | sed 1d | cut -f1 | cut -d" " -f5 | sed "s/C0*//") &&
563
- test -n "$level" && test "$level" -gt 2 && test "$level" -lt 100 &&
564
- src=$(git diff-tree -r -C --find-copies-harder HEAD | sed 1d | cut -f2) &&
565
- test "$src" = file10 -o "$src" = file11 -o "$src" = file12 &&
566
- git config git-p4.detectCopies $(($level - 2)) &&
567
- git p4 submit &&
568
- p4 filelog //depot/file13 &&
569
- p4 filelog //depot/file13 | grep -q "branch from //depot/file"
570
- )
571
-'
572
-
176
test_expect_success 'kill p4d' '
177
kill_p4d
178
'