| #!/bin/sh | |
| test_description='git p4 tests for excluded paths during clone and sync' | |
| . ./lib-git-p4.sh | |
| test_expect_success 'start p4d' ' | |
| start_p4d | |
| ' | |
| # Create a repo with the structure: | |
| # | |
| # //depot/wanted/foo | |
| # //depot/discard/foo | |
| # | |
| # Check that we can exclude a subdirectory with both | |
| # clone and sync operations. | |
| test_expect_success 'create exclude repo' ' | |
| ( | |
| cd "$cli" && | |
| mkdir -p wanted discard && | |
| echo wanted >wanted/foo && | |
| echo discard >discard/foo && | |
| echo discard_file >discard_file && | |
| echo discard_file_not >discard_file_not && | |
| p4 add wanted/foo discard/foo discard_file discard_file_not && | |
| p4 submit -d "initial revision" | |
| ) | |
| ' | |
| test_expect_success 'check the repo was created correctly' ' | |
| test_when_finished cleanup_git && | |
| git p4 clone --dest="$git" //depot/...@all && | |
| ( | |
| cd "$git" && | |
| test_path_is_file wanted/foo && | |
| test_path_is_file discard/foo && | |
| test_path_is_file discard_file && | |
| test_path_is_file discard_file_not | |
| ) | |
| ' | |
| test_expect_success 'clone, excluding part of repo' ' | |
| test_when_finished cleanup_git && | |
| git p4 clone -//depot/discard/... --dest="$git" //depot/...@all && | |
| ( | |
| cd "$git" && | |
| test_path_is_file wanted/foo && | |
| test_path_is_missing discard/foo && | |
| test_path_is_file discard_file && | |
| test_path_is_file discard_file_not | |
| ) | |
| ' | |
| test_expect_success 'clone, excluding single file, no trailing /' ' | |
| test_when_finished cleanup_git && | |
| git p4 clone -//depot/discard_file --dest="$git" //depot/...@all && | |
| ( | |
| cd "$git" && | |
| test_path_is_file wanted/foo && | |
| test_path_is_file discard/foo && | |
| test_path_is_missing discard_file && | |
| test_path_is_file discard_file_not | |
| ) | |
| ' | |
| test_expect_success 'clone, then sync with exclude' ' | |
| test_when_finished cleanup_git && | |
| git p4 clone -//depot/discard/... --dest="$git" //depot/...@all && | |
| ( | |
| cd "$cli" && | |
| p4 edit wanted/foo discard/foo discard_file_not && | |
| date >>wanted/foo && | |
| date >>discard/foo && | |
| date >>discard_file_not && | |
| p4 submit -d "updating" && | |
| cd "$git" && | |
| git p4 sync -//depot/discard/... && | |
| test_path_is_file wanted/foo && | |
| test_path_is_missing discard/foo && | |
| test_path_is_file discard_file && | |
| test_path_is_file discard_file_not | |
| ) | |
| ' | |
| test_expect_success 'clone, then sync with exclude, no trailing /' ' | |
| test_when_finished cleanup_git && | |
| git p4 clone -//depot/discard/... -//depot/discard_file --dest="$git" //depot/...@all && | |
| ( | |
| cd "$cli" && | |
| p4 edit wanted/foo discard/foo discard_file_not && | |
| date >>wanted/foo && | |
| date >>discard/foo && | |
| date >>discard_file_not && | |
| p4 submit -d "updating" && | |
| cd "$git" && | |
| git p4 sync -//depot/discard/... -//depot/discard_file && | |
| test_path_is_file wanted/foo && | |
| test_path_is_missing discard/foo && | |
| test_path_is_missing discard_file && | |
| test_path_is_file discard_file_not | |
| ) | |
| ' | |
| test_done |