| #!/bin/sh | 
 |  | 
 | test_description='basic git merge-index / git-merge-one-file tests' | 
 | . ./test-lib.sh | 
 |  | 
 | test_expect_success 'setup diverging branches' ' | 
 | 	for i in 1 2 3 4 5 6 7 8 9 10; do | 
 | 		echo $i | 
 | 	done >file && | 
 | 	git add file && | 
 | 	git commit -m base && | 
 | 	git tag base && | 
 | 	sed s/2/two/ <file >tmp && | 
 | 	mv tmp file && | 
 | 	git commit -a -m two && | 
 | 	git tag two && | 
 | 	git checkout -b other HEAD^ && | 
 | 	sed s/10/ten/ <file >tmp && | 
 | 	mv tmp file && | 
 | 	git commit -a -m ten && | 
 | 	git tag ten | 
 | ' | 
 |  | 
 | cat >expect-merged <<'EOF' | 
 | 1 | 
 | two | 
 | 3 | 
 | 4 | 
 | 5 | 
 | 6 | 
 | 7 | 
 | 8 | 
 | 9 | 
 | ten | 
 | EOF | 
 |  | 
 | test_expect_success 'read-tree does not resolve content merge' ' | 
 | 	git read-tree -i -m base ten two && | 
 | 	echo file >expect && | 
 | 	git diff-files --name-only --diff-filter=U >unmerged && | 
 | 	test_cmp expect unmerged | 
 | ' | 
 |  | 
 | test_expect_success 'git merge-index git-merge-one-file resolves' ' | 
 | 	git merge-index git-merge-one-file -a && | 
 | 	git diff-files --name-only --diff-filter=U >unmerged && | 
 | 	>expect && | 
 | 	test_cmp expect unmerged && | 
 | 	test_cmp expect-merged file && | 
 | 	git cat-file blob :file >file-index && | 
 | 	test_cmp expect-merged file-index | 
 | ' | 
 |  | 
 | test_expect_success 'setup bare merge' ' | 
 | 	git clone --bare . bare.git && | 
 | 	(cd bare.git && | 
 | 	 GIT_INDEX_FILE=$PWD/merge.index && | 
 | 	 export GIT_INDEX_FILE && | 
 | 	 git read-tree -i -m base ten two | 
 | 	) | 
 | ' | 
 |  | 
 | test_expect_success 'merge-one-file fails without a work tree' ' | 
 | 	(cd bare.git && | 
 | 	 GIT_INDEX_FILE=$PWD/merge.index && | 
 | 	 export GIT_INDEX_FILE && | 
 | 	 test_must_fail git merge-index git-merge-one-file -a | 
 | 	) | 
 | ' | 
 |  | 
 | test_expect_success 'merge-one-file respects GIT_WORK_TREE' ' | 
 | 	(cd bare.git && | 
 | 	 mkdir work && | 
 | 	 GIT_WORK_TREE=$PWD/work && | 
 | 	 export GIT_WORK_TREE && | 
 | 	 GIT_INDEX_FILE=$PWD/merge.index && | 
 | 	 export GIT_INDEX_FILE && | 
 | 	 git merge-index git-merge-one-file -a && | 
 | 	 git cat-file blob :file >work/file-index | 
 | 	) && | 
 | 	test_cmp expect-merged bare.git/work/file && | 
 | 	test_cmp expect-merged bare.git/work/file-index | 
 | ' | 
 |  | 
 | test_expect_success 'merge-one-file respects core.worktree' ' | 
 | 	mkdir subdir && | 
 | 	git clone . subdir/child && | 
 | 	(cd subdir && | 
 | 	 GIT_DIR=$PWD/child/.git && | 
 | 	 export GIT_DIR && | 
 | 	 git config core.worktree "$PWD/child" && | 
 | 	 git read-tree -i -m base ten two && | 
 | 	 git merge-index git-merge-one-file -a && | 
 | 	 git cat-file blob :file >file-index | 
 | 	) && | 
 | 	test_cmp expect-merged subdir/child/file && | 
 | 	test_cmp expect-merged subdir/file-index | 
 | ' | 
 |  | 
 | test_done |