Merge branch 'dg/run-command-child-cleanup'
[git] / t / t6028-merge-up-to-date.sh
1 #!/bin/sh
2
3 test_description='merge fast-forward and up to date'
4
5 . ./test-lib.sh
6
7 test_expect_success setup '
8         >file &&
9         git add file &&
10         test_tick &&
11         git commit -m initial &&
12         git tag c0 &&
13
14         echo second >file &&
15         git add file &&
16         test_tick &&
17         git commit -m second &&
18         git tag c1 &&
19         git branch test &&
20         echo third >file &&
21         git add file &&
22         test_tick &&
23         git commit -m third &&
24         git tag c2
25 '
26
27 test_expect_success 'merge -s recursive up-to-date' '
28
29         git reset --hard c1 &&
30         test_tick &&
31         git merge -s recursive c0 &&
32         expect=$(git rev-parse c1) &&
33         current=$(git rev-parse HEAD) &&
34         test "$expect" = "$current"
35
36 '
37
38 test_expect_success 'merge -s recursive fast-forward' '
39
40         git reset --hard c0 &&
41         test_tick &&
42         git merge -s recursive c1 &&
43         expect=$(git rev-parse c1) &&
44         current=$(git rev-parse HEAD) &&
45         test "$expect" = "$current"
46
47 '
48
49 test_expect_success 'merge -s ours up-to-date' '
50
51         git reset --hard c1 &&
52         test_tick &&
53         git merge -s ours c0 &&
54         expect=$(git rev-parse c1) &&
55         current=$(git rev-parse HEAD) &&
56         test "$expect" = "$current"
57
58 '
59
60 test_expect_success 'merge -s ours fast-forward' '
61
62         git reset --hard c0 &&
63         test_tick &&
64         git merge -s ours c1 &&
65         expect=$(git rev-parse c0^{tree}) &&
66         current=$(git rev-parse HEAD^{tree}) &&
67         test "$expect" = "$current"
68
69 '
70
71 test_expect_success 'merge -s subtree up-to-date' '
72
73         git reset --hard c1 &&
74         test_tick &&
75         git merge -s subtree c0 &&
76         expect=$(git rev-parse c1) &&
77         current=$(git rev-parse HEAD) &&
78         test "$expect" = "$current"
79
80 '
81
82 test_expect_success 'merge fast-forward octopus' '
83
84         git reset --hard c0 &&
85         test_tick &&
86         git merge c1 c2
87         expect=$(git rev-parse c2) &&
88         current=$(git rev-parse HEAD) &&
89         test "$expect" = "$current"
90 '
91
92 test_done