@@ -7,9 +7,11 @@ test_description='cherry-pick should rerere for conflicts'
77test_expect_success setup '
88 test_commit foo &&
99 test_commit foo-master foo &&
10+ test_commit bar-master bar &&
1011
1112 git checkout -b dev foo &&
1213 test_commit foo-dev foo &&
14+ test_commit bar-dev bar &&
1315 git config rerere.enabled true
1416'
1517
@@ -19,22 +21,66 @@ test_expect_success 'conflicting merge' '
1921
2022test_expect_success ' fixup' '
2123 echo foo-resolved >foo &&
24+ echo bar-resolved >bar &&
2225 git commit -am resolved &&
23- cp foo expect &&
26+ cp foo foo-expect &&
27+ cp bar bar-expect &&
2428 git reset --hard HEAD^
2529'
2630
27- test_expect_success ' cherry-pick conflict' '
28- test_must_fail git cherry-pick master &&
29- test_cmp expect foo
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
3066'
3167
32- test_expect_success ' reconfigure' '
33- git config rerere.enabled false &&
34- git reset --hard
68+ test_expect_success ' cherry-pick --rerere-autoupdate more than once' '
69+ test_must_fail git cherry-pick --rerere-autoupdate --rerere-autoupdate foo..bar-master &&
70+ test_cmp foo-expect foo &&
71+ git diff-files --quiet &&
72+ git cherry-pick --abort &&
73+ test_must_fail git cherry-pick --rerere-autoupdate --no-rerere-autoupdate --rerere-autoupdate foo..bar-master &&
74+ test_cmp foo-expect foo &&
75+ git diff-files --quiet &&
76+ git cherry-pick --abort &&
77+ test_must_fail git cherry-pick --rerere-autoupdate --no-rerere-autoupdate foo..bar-master &&
78+ test_must_fail git diff-files --quiet &&
79+ git cherry-pick --abort
3580'
3681
3782test_expect_success ' cherry-pick conflict without rerere' '
83+ test_config rerere.enabled false &&
3884 test_must_fail git cherry-pick master &&
3985 test_must_fail test_cmp expect foo
4086'
0 commit comments