blob: f90ed3da3e0cb93b63d32d8002dc6d9bd3596a65 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
#!/bin/sh
test_description='test cherry-picking many commits'
. ./test-lib.sh
test_expect_success setup '
echo first > file1 &&
git add file1 &&
test_tick &&
git commit -m "first" &&
git tag first &&
git checkout -b other &&
for val in second third fourth
do
echo $val >> file1 &&
git add file1 &&
test_tick &&
git commit -m "$val" &&
git tag $val
done
'
test_expect_success 'cherry-pick first..fourth works' '
git checkout -f master &&
git reset --hard first &&
test_tick &&
git cherry-pick first..fourth &&
git diff --quiet other &&
git diff --quiet HEAD other &&
test "$(git rev-parse --verify HEAD)" != "$(git rev-parse --verify fourth)"
'
test_expect_success 'cherry-pick --ff first..fourth works' '
git checkout -f master &&
git reset --hard first &&
test_tick &&
git cherry-pick --ff first..fourth &&
git diff --quiet other &&
git diff --quiet HEAD other &&
test "$(git rev-parse --verify HEAD)" = "$(git rev-parse --verify fourth)"
'
test_expect_success 'cherry-pick -n first..fourth works' '
git checkout -f master &&
git reset --hard first &&
test_tick &&
git cherry-pick -n first..fourth &&
git diff --quiet other &&
git diff --cached --quiet other &&
git diff --quiet HEAD first
'
test_expect_success 'revert first..fourth works' '
git checkout -f master &&
git reset --hard fourth &&
test_tick &&
git revert first..fourth &&
git diff --quiet first &&
git diff --cached --quiet first &&
git diff --quiet HEAD first
'
test_expect_success 'revert ^first fourth works' '
git checkout -f master &&
git reset --hard fourth &&
test_tick &&
git revert ^first fourth &&
git diff --quiet first &&
git diff --cached --quiet first &&
git diff --quiet HEAD first
'
test_expect_success 'revert fourth fourth~1 fourth~2 works' '
git checkout -f master &&
git reset --hard fourth &&
test_tick &&
git revert fourth fourth~1 fourth~2 &&
git diff --quiet first &&
git diff --cached --quiet first &&
git diff --quiet HEAD first
'
test_expect_success 'cherry-pick -3 fourth works' '
git checkout -f master &&
git reset --hard first &&
test_tick &&
git cherry-pick -3 fourth &&
git diff --quiet other &&
git diff --quiet HEAD other &&
test "$(git rev-parse --verify HEAD)" != "$(git rev-parse --verify fourth)"
'
test_expect_success 'cherry-pick --stdin works' '
git checkout -f master &&
git reset --hard first &&
test_tick &&
git rev-list --reverse first..fourth | git cherry-pick --stdin &&
git diff --quiet other &&
git diff --quiet HEAD other &&
test "$(git rev-parse --verify HEAD)" != "$(git rev-parse --verify fourth)"
'
test_done
|