Revision 865406bc5426d5196935e37a3a5fde9c843c3e96 authored by Philip Oakley on 29 July 2019, 20:08:03 UTC, committed by Junio C Hamano on 29 July 2019, 21:51:42 UTC
Since 4b623d8 (MSVC: link in invalidcontinue.obj for better POSIX
compatibility, 2014-03-29), invalidcontinue.obj is linked in the MSVC
build, but it was not parsed correctly by the buildsystem. Ignore it, as
it is known to Visual Studio and will be handled elsewhere.

Also only substitute filenames ending with .o when generating the
source .c filename, otherwise we would start to expect .cbj files to
generate .obj files (which are not generated by our build)...

In the future there may be source files that produce .obj files
so keep the two issues (.obj files with & without source files)
separate.

Signed-off-by: Philip Oakley <philipoakley@iee.org>
Signed-off-by: Duncan Smart <duncan.smart@gmail.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
1 parent 158471d
Raw File
t9816-git-p4-locked.sh
#!/bin/sh

test_description='git p4 locked file behavior'

. ./lib-git-p4.sh

test_expect_success 'start p4d' '
	start_p4d
'

# See
# http://www.perforce.com/perforce/doc.current/manuals/p4sag/03_superuser.html#1088563
# for suggestions on how to configure "sitewide pessimistic locking"
# where only one person can have a file open for edit at a time.
test_expect_success 'init depot' '
	(
		cd "$cli" &&
		echo "TypeMap: +l //depot/..." | p4 typemap -i &&
		echo file1 >file1 &&
		p4 add file1 &&
		p4 submit -d "add file1"
	)
'

test_expect_success 'edit with lock not taken' '
	test_when_finished cleanup_git &&
	git p4 clone --dest="$git" //depot &&
	(
		cd "$git" &&
		echo line2 >>file1 &&
		git add file1 &&
		git commit -m "line2 in file1" &&
		git config git-p4.skipSubmitEdit true &&
		git p4 submit
	)
'

test_expect_success 'add with lock not taken' '
	test_when_finished cleanup_git &&
	git p4 clone --dest="$git" //depot &&
	(
		cd "$git" &&
		echo line1 >>add-lock-not-taken &&
		git add add-lock-not-taken &&
		git commit -m "add add-lock-not-taken" &&
		git config git-p4.skipSubmitEdit true &&
		git p4 submit --verbose
	)
'

lock_in_another_client() {
	# build a different client
	cli2="$TRASH_DIRECTORY/cli2" &&
	mkdir -p "$cli2" &&
	test_when_finished "p4 client -f -d client2 && rm -rf \"$cli2\"" &&
	(
		cd "$cli2" &&
		P4CLIENT=client2 &&
		cli="$cli2" &&
		client_view "//depot/... //client2/..." &&
		p4 sync &&
		p4 open file1
	)
}

test_expect_failure 'edit with lock taken' '
	lock_in_another_client &&
	test_when_finished cleanup_git &&
	test_when_finished "cd \"$cli\" && p4 sync -f file1" &&
	git p4 clone --dest="$git" //depot &&
	(
		cd "$git" &&
		echo line3 >>file1 &&
		git add file1 &&
		git commit -m "line3 in file1" &&
		git config git-p4.skipSubmitEdit true &&
		git p4 submit --verbose
	)
'

test_expect_failure 'delete with lock taken' '
	lock_in_another_client &&
	test_when_finished cleanup_git &&
	test_when_finished "cd \"$cli\" && p4 sync -f file1" &&
	git p4 clone --dest="$git" //depot &&
	(
		cd "$git" &&
		git rm file1 &&
		git commit -m "delete file1" &&
		git config git-p4.skipSubmitEdit true &&
		git p4 submit --verbose
	)
'

test_expect_failure 'chmod with lock taken' '
	lock_in_another_client &&
	test_when_finished cleanup_git &&
	test_when_finished "cd \"$cli\" && p4 sync -f file1" &&
	git p4 clone --dest="$git" //depot &&
	(
		cd "$git" &&
		chmod +x file1 &&
		git add file1 &&
		git commit -m "chmod +x file1" &&
		git config git-p4.skipSubmitEdit true &&
		git p4 submit --verbose
	)
'

test_expect_success 'copy with lock taken' '
	lock_in_another_client &&
	test_when_finished cleanup_git &&
	test_when_finished "cd \"$cli\" && p4 revert file2 && rm -f file2" &&
	git p4 clone --dest="$git" //depot &&
	(
		cd "$git" &&
		cp file1 file2 &&
		git add file2 &&
		git commit -m "cp file1 to file2" &&
		git config git-p4.skipSubmitEdit true &&
		git config git-p4.detectCopies true &&
		git p4 submit --verbose
	)
'

test_expect_failure 'move with lock taken' '
	lock_in_another_client &&
	test_when_finished cleanup_git &&
	test_when_finished "cd \"$cli\" && p4 sync file1 && rm -f file2" &&
	git p4 clone --dest="$git" //depot &&
	(
		cd "$git" &&
		git mv file1 file3 &&
		git commit -m "mv file1 to file3" &&
		git config git-p4.skipSubmitEdit true &&
		git config git-p4.detectRenames true &&
		git p4 submit --verbose
	)
'

test_done
back to top