1#!/bin/sh
2
3test_description='merge fast-forward and up to date'
4
5. ./test-lib.sh
6
7test_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'
21
22test_expect_success 'merge -s recursive up-to-date' '
23
24 git reset --hard c1 &&
25 test_tick &&
26 git merge -s recursive c0 &&
27 expect=$(git rev-parse c1) &&
28 current=$(git rev-parse HEAD) &&
29 test "$expect" = "$current"
30
31'
32
33test_expect_success 'merge -s recursive fast-forward' '
34
35 git reset --hard c0 &&
36 test_tick &&
37 git merge -s recursive c1 &&
38 expect=$(git rev-parse c1) &&
39 current=$(git rev-parse HEAD) &&
40 test "$expect" = "$current"
41
42'
43
44test_expect_success 'merge -s ours up-to-date' '
45
46 git reset --hard c1 &&
47 test_tick &&
48 git merge -s ours c0 &&
49 expect=$(git rev-parse c1) &&
50 current=$(git rev-parse HEAD) &&
51 test "$expect" = "$current"
52
53'
54
55test_expect_success 'merge -s ours fast-forward' '
56
57 git reset --hard c0 &&
58 test_tick &&
59 git merge -s ours c1 &&
60 expect=$(git rev-parse c0^{tree}) &&
61 current=$(git rev-parse HEAD^{tree}) &&
62 test "$expect" = "$current"
63
64'
65
66test_expect_success 'merge -s subtree up-to-date' '
67
68 git reset --hard c1 &&
69 test_tick &&
70 git merge -s subtree c0 &&
71 expect=$(git rev-parse c1) &&
72 current=$(git rev-parse HEAD) &&
73 test "$expect" = "$current"
74
75'
76
77test_done