3 test_description
='test cherry-picking (and reverting) a root commit'
7 test_expect_success setup
'
12 git commit -m "first" &&
14 git symbolic-ref HEAD refs/heads/second &&
15 rm .git/index file1 &&
16 echo second > file2 &&
19 git commit -m "second" &&
21 git symbolic-ref HEAD refs/heads/third &&
22 rm .git/index file2 &&
30 test_expect_success
'cherry-pick a root commit' '
32 git checkout second^0 &&
33 git cherry-pick master &&
39 test_expect_success
'revert a root commit' '
42 test_path_is_missing file1
46 test_expect_success
'cherry-pick a root commit with an external strategy' '
48 git cherry-pick --strategy=resolve master &&
54 test_expect_success
'revert a root commit with an external strategy' '
56 git revert --strategy=resolve master &&
57 test_path_is_missing file1
61 test_expect_success
'cherry-pick two root commits' '
63 echo first >expect.file1 &&
64 echo second >expect.file2 &&
65 echo third >expect.file3 &&
67 git checkout second^0 &&
68 git cherry-pick master third &&
70 test_cmp expect.file1 file1 &&
71 test_cmp expect.file2 file2 &&
72 test_cmp expect.file3 file3 &&
73 git rev-parse --verify HEAD^^ &&
74 test_must_fail git rev-parse --verify HEAD^^^