]> git.ipfire.org Git - thirdparty/git.git/blame - t/t6060-merge-index.sh
Merge branch 'jk/complete-commit-c' into maint
[thirdparty/git.git] / t / t6060-merge-index.sh
CommitLineData
cf1af1b1
JK
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 >expect &&
48 test_cmp expect unmerged &&
49 test_cmp expect-merged file &&
50 git cat-file blob :file >file-index &&
51 test_cmp expect-merged file-index
52'
53
54test_expect_success 'setup bare merge' '
55 git clone --bare . bare.git &&
56 (cd bare.git &&
57 GIT_INDEX_FILE=$PWD/merge.index &&
58 export GIT_INDEX_FILE &&
59 git read-tree -i -m base ten two
60 )
61'
62
63test_expect_success 'merge-one-file fails without a work tree' '
64 (cd bare.git &&
65 GIT_INDEX_FILE=$PWD/merge.index &&
66 export GIT_INDEX_FILE &&
67 test_must_fail git merge-index git-merge-one-file -a
68 )
69'
70
6aaeca90 71test_expect_success 'merge-one-file respects GIT_WORK_TREE' '
cf1af1b1
JK
72 (cd bare.git &&
73 mkdir work &&
74 GIT_WORK_TREE=$PWD/work &&
75 export GIT_WORK_TREE &&
76 GIT_INDEX_FILE=$PWD/merge.index &&
77 export GIT_INDEX_FILE &&
78 git merge-index git-merge-one-file -a &&
79 git cat-file blob :file >work/file-index
80 ) &&
81 test_cmp expect-merged bare.git/work/file &&
82 test_cmp expect-merged bare.git/work/file-index
83'
84
6aaeca90 85test_expect_success 'merge-one-file respects core.worktree' '
cf1af1b1
JK
86 mkdir subdir &&
87 git clone . subdir/child &&
88 (cd subdir &&
89 GIT_DIR=$PWD/child/.git &&
90 export GIT_DIR &&
91 git config core.worktree "$PWD/child" &&
92 git read-tree -i -m base ten two &&
93 git merge-index git-merge-one-file -a &&
94 git cat-file blob :file >file-index
95 ) &&
96 test_cmp expect-merged subdir/child/file &&
97 test_cmp expect-merged subdir/file-index
98'
99
100test_done