]>
Commit | Line | Data |
---|---|---|
6232b343 JH |
1 | #!/bin/sh |
2 | ||
3 | test_description='cherry picking and reverting a merge | |
4 | ||
5 | b---c | |
6 | / / | |
7 | initial---a | |
8 | ||
9 | ' | |
10 | ||
11 | . ./test-lib.sh | |
12 | ||
13 | test_expect_success setup ' | |
14 | ||
15 | >A && | |
16 | >B && | |
17 | git add A B && | |
18 | git commit -m "Initial" && | |
19 | git tag initial && | |
20 | git branch side && | |
21 | echo new line >A && | |
22 | git commit -m "add line to A" A && | |
23 | git tag a && | |
24 | git checkout side && | |
25 | echo new line >B && | |
26 | git commit -m "add line to B" B && | |
27 | git tag b && | |
28 | git checkout master && | |
29 | git merge side && | |
30 | git tag c | |
31 | ||
32 | ' | |
33 | ||
b16a991c JK |
34 | test_expect_success 'cherry-pick -m complains of bogus numbers' ' |
35 | # expect 129 here to distinguish between cases where | |
36 | # there was nothing to cherry-pick | |
37 | test_expect_code 129 git cherry-pick -m && | |
38 | test_expect_code 129 git cherry-pick -m foo b && | |
39 | test_expect_code 129 git cherry-pick -m -1 b && | |
40 | test_expect_code 129 git cherry-pick -m 0 b | |
41 | ' | |
42 | ||
4d67b4e4 | 43 | test_expect_success 'cherry-pick explicit first parent of a non-merge' ' |
6232b343 JH |
44 | |
45 | git reset --hard && | |
46 | git checkout a^0 && | |
4d67b4e4 SO |
47 | git cherry-pick -m 1 b && |
48 | git diff --exit-code c -- | |
6232b343 JH |
49 | |
50 | ' | |
51 | ||
52 | test_expect_success 'cherry pick a merge without -m should fail' ' | |
53 | ||
54 | git reset --hard && | |
55 | git checkout a^0 && | |
d492b31c | 56 | test_must_fail git cherry-pick c && |
9f12bec4 | 57 | git diff --exit-code a -- |
6232b343 JH |
58 | |
59 | ' | |
60 | ||
61 | test_expect_success 'cherry pick a merge (1)' ' | |
62 | ||
63 | git reset --hard && | |
64 | git checkout a^0 && | |
65 | git cherry-pick -m 1 c && | |
66 | git diff --exit-code c | |
67 | ||
68 | ' | |
69 | ||
70 | test_expect_success 'cherry pick a merge (2)' ' | |
71 | ||
72 | git reset --hard && | |
73 | git checkout b^0 && | |
74 | git cherry-pick -m 2 c && | |
75 | git diff --exit-code c | |
76 | ||
77 | ' | |
78 | ||
79 | test_expect_success 'cherry pick a merge relative to nonexistent parent should fail' ' | |
80 | ||
81 | git reset --hard && | |
82 | git checkout b^0 && | |
d492b31c | 83 | test_must_fail git cherry-pick -m 3 c |
6232b343 JH |
84 | |
85 | ' | |
86 | ||
4d67b4e4 | 87 | test_expect_success 'revert explicit first parent of a non-merge' ' |
6232b343 JH |
88 | |
89 | git reset --hard && | |
90 | git checkout c^0 && | |
4d67b4e4 SO |
91 | git revert -m 1 b && |
92 | git diff --exit-code a -- | |
6232b343 JH |
93 | |
94 | ' | |
95 | ||
96 | test_expect_success 'revert a merge without -m should fail' ' | |
97 | ||
98 | git reset --hard && | |
99 | git checkout c^0 && | |
d492b31c | 100 | test_must_fail git revert c && |
6232b343 JH |
101 | git diff --exit-code c |
102 | ||
103 | ' | |
104 | ||
105 | test_expect_success 'revert a merge (1)' ' | |
106 | ||
107 | git reset --hard && | |
108 | git checkout c^0 && | |
109 | git revert -m 1 c && | |
9f12bec4 | 110 | git diff --exit-code a -- |
6232b343 JH |
111 | |
112 | ' | |
113 | ||
114 | test_expect_success 'revert a merge (2)' ' | |
115 | ||
116 | git reset --hard && | |
117 | git checkout c^0 && | |
118 | git revert -m 2 c && | |
9f12bec4 | 119 | git diff --exit-code b -- |
6232b343 JH |
120 | |
121 | ' | |
122 | ||
123 | test_expect_success 'revert a merge relative to nonexistent parent should fail' ' | |
124 | ||
125 | git reset --hard && | |
126 | git checkout c^0 && | |
d492b31c | 127 | test_must_fail git revert -m 3 c && |
6232b343 JH |
128 | git diff --exit-code c |
129 | ||
130 | ' | |
131 | ||
132 | test_done |