diff options
| -rwxr-xr-x | t/t6060-merge-index.sh | 100 | 
1 files changed, 100 insertions, 0 deletions
| diff --git a/t/t6060-merge-index.sh b/t/t6060-merge-index.sh new file mode 100755 index 0000000000..895f079c92 --- /dev/null +++ b/t/t6060-merge-index.sh @@ -0,0 +1,100 @@ +#!/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_failure '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_failure '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 | 
