| #!/bin/sh | 
 |  | 
 | test_description='apply same filename' | 
 |  | 
 | . ./test-lib.sh | 
 |  | 
 | test_expect_success 'setup' ' | 
 |  | 
 | 	mkdir -p some/sub/dir && | 
 | 	echo Hello > some/sub/dir/file && | 
 | 	git add some/sub/dir/file && | 
 | 	git commit -m initial && | 
 | 	git tag initial | 
 |  | 
 | ' | 
 |  | 
 | cat > patch << EOF | 
 | diff a/bla/blub/dir/file b/bla/blub/dir/file | 
 | --- a/bla/blub/dir/file | 
 | +++ b/bla/blub/dir/file | 
 | @@ -1,1 +1,1 @@ | 
 | -Hello | 
 | +Bello | 
 | EOF | 
 |  | 
 | test_expect_success 'apply --directory -p (1)' ' | 
 |  | 
 | 	git apply --directory=some/sub -p3 --index patch && | 
 | 	test Bello = $(git show :some/sub/dir/file) && | 
 | 	test Bello = $(cat some/sub/dir/file) | 
 |  | 
 | ' | 
 |  | 
 | test_expect_success 'apply --directory -p (2) ' ' | 
 |  | 
 | 	git reset --hard initial && | 
 | 	git apply --directory=some/sub/ -p3 --index patch && | 
 | 	test Bello = $(git show :some/sub/dir/file) && | 
 | 	test Bello = $(cat some/sub/dir/file) | 
 |  | 
 | ' | 
 |  | 
 | cat > patch << EOF | 
 | diff --git a/newfile b/newfile | 
 | new file mode 100644 | 
 | index 0000000..d95f3ad | 
 | --- /dev/null | 
 | +++ b/newfile | 
 | @@ -0,0 +1 @@ | 
 | +content | 
 | EOF | 
 |  | 
 | test_expect_success 'apply --directory (new file)' ' | 
 | 	git reset --hard initial && | 
 | 	git apply --directory=some/sub/dir/ --index patch && | 
 | 	test content = $(git show :some/sub/dir/newfile) && | 
 | 	test content = $(cat some/sub/dir/newfile) | 
 | ' | 
 |  | 
 | cat > patch << EOF | 
 | diff --git a/c/newfile2 b/c/newfile2 | 
 | new file mode 100644 | 
 | index 0000000..d95f3ad | 
 | --- /dev/null | 
 | +++ b/c/newfile2 | 
 | @@ -0,0 +1 @@ | 
 | +content | 
 | EOF | 
 |  | 
 | test_expect_success 'apply --directory -p (new file)' ' | 
 | 	git reset --hard initial && | 
 | 	git apply -p2 --directory=some/sub/dir/ --index patch && | 
 | 	test content = $(git show :some/sub/dir/newfile2) && | 
 | 	test content = $(cat some/sub/dir/newfile2) | 
 | ' | 
 |  | 
 | cat > patch << EOF | 
 | diff --git a/delfile b/delfile | 
 | deleted file mode 100644 | 
 | index d95f3ad..0000000 | 
 | --- a/delfile | 
 | +++ /dev/null | 
 | @@ -1 +0,0 @@ | 
 | -content | 
 | EOF | 
 |  | 
 | test_expect_success 'apply --directory (delete file)' ' | 
 | 	git reset --hard initial && | 
 | 	echo content >some/sub/dir/delfile && | 
 | 	git add some/sub/dir/delfile && | 
 | 	git apply --directory=some/sub/dir/ --index patch && | 
 | 	! (git ls-files | grep delfile) | 
 | ' | 
 |  | 
 | cat > patch << 'EOF' | 
 | diff --git "a/qu\157tefile" "b/qu\157tefile" | 
 | new file mode 100644 | 
 | index 0000000..d95f3ad | 
 | --- /dev/null | 
 | +++ "b/qu\157tefile" | 
 | @@ -0,0 +1 @@ | 
 | +content | 
 | EOF | 
 |  | 
 | test_expect_success 'apply --directory (quoted filename)' ' | 
 | 	git reset --hard initial && | 
 | 	git apply --directory=some/sub/dir/ --index patch && | 
 | 	test content = $(git show :some/sub/dir/quotefile) && | 
 | 	test content = $(cat some/sub/dir/quotefile) | 
 | ' | 
 |  | 
 | test_done |