1#!/bin/sh 2 3test_description='basic git merge-index / git-merge-one-file tests' 4. ./test-lib.sh 5 6test_expect_success 'setup diverging branches' ' 7 for i in 1 2 3 4 5 6 7 8 9 10; do 8 echo $i 9 done >file && 10 git add file && 11 git commit -m base && 12 git tag base && 13 sed s/2/two/ <file >tmp && 14 mv tmp file && 15 git commit -a -m two && 16 git tag two && 17 git checkout -b other HEAD^ && 18 sed s/10/ten/ <file >tmp && 19 mv tmp file && 20 git commit -a -m ten && 21 git tag ten 22' 23 24cat >expect-merged <<'EOF' 251 26two 273 284 295 306 317 328 339 34ten 35EOF 36 37test_expect_success 'read-tree does not resolve content merge' ' 38 git read-tree -i -m base ten two && 39 echo file >expect && 40 git diff-files --name-only --diff-filter=U >unmerged && 41 test_cmp expect unmerged 42' 43 44test_expect_success 'git merge-index git-merge-one-file resolves' ' 45 git merge-index git-merge-one-file -a && 46 git diff-files --name-only --diff-filter=U >unmerged && 47 test_must_be_empty unmerged && 48 test_cmp expect-merged file && 49 git cat-file blob :file >file-index && 50 test_cmp expect-merged file-index 51' 52 53test_expect_success 'setup bare merge' ' 54 git clone --bare . bare.git && 55 (cd bare.git && 56 GIT_INDEX_FILE=$PWD/merge.index && 57 export GIT_INDEX_FILE && 58 git read-tree -i -m base ten two 59 ) 60' 61 62test_expect_success 'merge-one-file fails without a work tree' ' 63 (cd bare.git && 64 GIT_INDEX_FILE=$PWD/merge.index && 65 export GIT_INDEX_FILE && 66 test_must_fail git merge-index git-merge-one-file -a 67 ) 68' 69 70test_expect_success 'merge-one-file respects GIT_WORK_TREE' ' 71 (cd bare.git && 72 mkdir work && 73 GIT_WORK_TREE=$PWD/work && 74 export GIT_WORK_TREE && 75 GIT_INDEX_FILE=$PWD/merge.index && 76 export GIT_INDEX_FILE && 77 git merge-index git-merge-one-file -a && 78 git cat-file blob :file >work/file-index 79 ) && 80 test_cmp expect-merged bare.git/work/file && 81 test_cmp expect-merged bare.git/work/file-index 82' 83 84test_expect_success 'merge-one-file respects core.worktree' ' 85 mkdir subdir && 86 git clone . subdir/child && 87 (cd subdir && 88 GIT_DIR=$PWD/child/.git && 89 export GIT_DIR && 90 git config core.worktree "$PWD/child" && 91 git read-tree -i -m base ten two && 92 git merge-index git-merge-one-file -a && 93 git cat-file blob :file >file-index 94 ) && 95 test_cmp expect-merged subdir/child/file && 96 test_cmp expect-merged subdir/file-index 97' 98 99test_done 100