]>
Commit | Line | Data |
---|---|---|
aa1a0111 AMS |
1 | #!/bin/sh |
2 | ||
3 | test_description='cherry-pick should rerere for conflicts' | |
4 | ||
5 | . ./test-lib.sh | |
6 | ||
7 | test_expect_success setup ' | |
6f0e577e PW |
8 | test_commit foo && |
9 | test_commit foo-master foo && | |
8d8cb4b0 | 10 | test_commit bar-master bar && |
6f0e577e PW |
11 | |
12 | git checkout -b dev foo && | |
13 | test_commit foo-dev foo && | |
8d8cb4b0 | 14 | test_commit bar-dev bar && |
aa1a0111 AMS |
15 | git config rerere.enabled true |
16 | ' | |
17 | ||
18 | test_expect_success 'conflicting merge' ' | |
19 | test_must_fail git merge master | |
20 | ' | |
21 | ||
22 | test_expect_success 'fixup' ' | |
6f0e577e | 23 | echo foo-resolved >foo && |
8d8cb4b0 | 24 | echo bar-resolved >bar && |
6f0e577e | 25 | git commit -am resolved && |
8d8cb4b0 PW |
26 | cp foo foo-expect && |
27 | cp bar bar-expect && | |
6f0e577e | 28 | git reset --hard HEAD^ |
aa1a0111 AMS |
29 | ' |
30 | ||
8d8cb4b0 PW |
31 | test_expect_success 'cherry-pick conflict with --rerere-autoupdate' ' |
32 | test_must_fail git cherry-pick --rerere-autoupdate foo..bar-master && | |
33 | test_cmp foo-expect foo && | |
34 | git diff-files --quiet && | |
35 | test_must_fail git cherry-pick --continue && | |
36 | test_cmp bar-expect bar && | |
37 | git diff-files --quiet && | |
38 | git cherry-pick --continue && | |
39 | git reset --hard bar-dev | |
40 | ' | |
41 | ||
42 | test_expect_success 'cherry-pick conflict repsects rerere.autoUpdate' ' | |
43 | test_config rerere.autoUpdate true && | |
44 | test_must_fail git cherry-pick foo..bar-master && | |
45 | test_cmp foo-expect foo && | |
46 | git diff-files --quiet && | |
47 | test_must_fail git cherry-pick --continue && | |
48 | test_cmp bar-expect bar && | |
49 | git diff-files --quiet && | |
50 | git cherry-pick --continue && | |
51 | git reset --hard bar-dev | |
52 | ' | |
53 | ||
54 | test_expect_success 'cherry-pick conflict with --no-rerere-autoupdate' ' | |
55 | test_config rerere.autoUpdate true && | |
56 | test_must_fail git cherry-pick --no-rerere-autoupdate foo..bar-master && | |
57 | test_cmp foo-expect foo && | |
58 | test_must_fail git diff-files --quiet && | |
59 | git add foo && | |
60 | test_must_fail git cherry-pick --continue && | |
61 | test_cmp bar-expect bar && | |
62 | test_must_fail git diff-files --quiet && | |
63 | git add bar && | |
64 | git cherry-pick --continue && | |
65 | git reset --hard bar-dev | |
aa1a0111 AMS |
66 | ' |
67 | ||
f826fb79 PW |
68 | test_expect_success 'cherry-pick --continue rejects --rerere-autoupdate' ' |
69 | test_must_fail git cherry-pick --rerere-autoupdate foo..bar-master && | |
70 | test_cmp foo-expect foo && | |
71 | git diff-files --quiet && | |
72 | test_must_fail git cherry-pick --continue --rerere-autoupdate >actual 2>&1 && | |
73 | echo "fatal: cherry-pick: --rerere-autoupdate cannot be used with --continue" >expect && | |
74 | test_i18ncmp expect actual && | |
75 | test_must_fail git cherry-pick --continue --no-rerere-autoupdate >actual 2>&1 && | |
76 | echo "fatal: cherry-pick: --no-rerere-autoupdate cannot be used with --continue" >expect && | |
77 | test_i18ncmp expect actual && | |
78 | git cherry-pick --abort | |
79 | ' | |
80 | ||
8d8cb4b0 PW |
81 | test_expect_success 'cherry-pick --rerere-autoupdate more than once' ' |
82 | test_must_fail git cherry-pick --rerere-autoupdate --rerere-autoupdate foo..bar-master && | |
83 | test_cmp foo-expect foo && | |
84 | git diff-files --quiet && | |
85 | git cherry-pick --abort && | |
86 | test_must_fail git cherry-pick --rerere-autoupdate --no-rerere-autoupdate --rerere-autoupdate foo..bar-master && | |
87 | test_cmp foo-expect foo && | |
88 | git diff-files --quiet && | |
89 | git cherry-pick --abort && | |
90 | test_must_fail git cherry-pick --rerere-autoupdate --no-rerere-autoupdate foo..bar-master && | |
91 | test_must_fail git diff-files --quiet && | |
92 | git cherry-pick --abort | |
aa1a0111 AMS |
93 | ' |
94 | ||
95 | test_expect_success 'cherry-pick conflict without rerere' ' | |
8d8cb4b0 | 96 | test_config rerere.enabled false && |
aa1a0111 AMS |
97 | test_must_fail git cherry-pick master && |
98 | test_must_fail test_cmp expect foo | |
99 | ' | |
100 | ||
101 | test_done |