]>
Commit | Line | Data |
---|---|---|
1b1d78fe MV |
1 | #!/bin/sh |
2 | ||
6209036c | 3 | test_description="git merge |
1b1d78fe | 4 | |
6209036c JN |
5 | Testing a custom strategy. |
6 | ||
1e2ae142 | 7 | * (HEAD, main) Merge commit 'c3' |
6209036c | 8 | |\ |
52b48ef1 | 9 | | * (tag: c3) c3 |
6209036c JN |
10 | * | (tag: c1) c1 |
11 | |/ | |
52b48ef1 JN |
12 | | * tag: c2) c2 |
13 | |/ | |
6209036c JN |
14 | * (tag: c0) c0 |
15 | " | |
1b1d78fe MV |
16 | |
17 | . ./test-lib.sh | |
18 | ||
6209036c JN |
19 | test_expect_success 'set up custom strategy' ' |
20 | cat >git-merge-theirs <<-EOF && | |
21 | #!$SHELL_PATH | |
22 | eval git read-tree --reset -u \\\$\$# | |
23 | EOF | |
24 | ||
25 | chmod +x git-merge-theirs && | |
26 | PATH=.:$PATH && | |
27 | export PATH | |
28 | ' | |
1b1d78fe MV |
29 | |
30 | test_expect_success 'setup' ' | |
6209036c JN |
31 | test_commit c0 c0.c && |
32 | test_commit c1 c1.c && | |
33 | git reset --keep c0 && | |
e596cddd | 34 | echo c1c1 >c1.c && |
6209036c | 35 | git add c1.c && |
52b48ef1 JN |
36 | test_commit c2 c2.c && |
37 | git reset --keep c0 && | |
38 | test_commit c3 c3.c | |
1b1d78fe MV |
39 | ' |
40 | ||
41 | test_expect_success 'merge c2 with a custom strategy' ' | |
42 | git reset --hard c1 && | |
6209036c JN |
43 | |
44 | git rev-parse c1 >head.old && | |
45 | git rev-parse c2 >second-parent.expected && | |
46 | git rev-parse c2^{tree} >tree.expected && | |
1b1d78fe | 47 | git merge -s theirs c2 && |
6209036c | 48 | |
0e1b5015 | 49 | git rev-parse HEAD >head.new && |
6209036c JN |
50 | git rev-parse HEAD^1 >first-parent && |
51 | git rev-parse HEAD^2 >second-parent && | |
52 | git rev-parse HEAD^{tree} >tree && | |
53 | git update-index --refresh && | |
1b1d78fe | 54 | git diff --exit-code && |
e596cddd JH |
55 | git diff --exit-code c2 HEAD && |
56 | git diff --exit-code c2 && | |
6209036c | 57 | |
0e1b5015 | 58 | ! test_cmp head.old head.new && |
6209036c JN |
59 | test_cmp head.old first-parent && |
60 | test_cmp second-parent.expected second-parent && | |
61 | test_cmp tree.expected tree && | |
1b1d78fe | 62 | test -f c0.c && |
e596cddd | 63 | grep c1c1 c1.c && |
1b1d78fe MV |
64 | test -f c2.c |
65 | ' | |
66 | ||
52b48ef1 JN |
67 | test_expect_success 'trivial merge with custom strategy' ' |
68 | git reset --hard c1 && | |
69 | ||
70 | git rev-parse c1 >head.old && | |
71 | git rev-parse c3 >second-parent.expected && | |
72 | git rev-parse c3^{tree} >tree.expected && | |
73 | git merge -s theirs c3 && | |
74 | ||
0e1b5015 | 75 | git rev-parse HEAD >head.new && |
52b48ef1 JN |
76 | git rev-parse HEAD^1 >first-parent && |
77 | git rev-parse HEAD^2 >second-parent && | |
78 | git rev-parse HEAD^{tree} >tree && | |
79 | git update-index --refresh && | |
80 | git diff --exit-code && | |
81 | git diff --exit-code c3 HEAD && | |
82 | git diff --exit-code c3 && | |
83 | ||
0e1b5015 | 84 | ! test_cmp head.old head.new && |
52b48ef1 JN |
85 | test_cmp head.old first-parent && |
86 | test_cmp second-parent.expected second-parent && | |
87 | test_cmp tree.expected tree && | |
88 | test -f c0.c && | |
89 | ! test -e c1.c && | |
90 | test -f c3.c | |
91 | ' | |
92 | ||
1b1d78fe | 93 | test_done |