|  | #!/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 |