Skip to content

Commit 88ab18d

Browse files
committed
Merge branch 'am/cherry-pick-rerere'
* am/cherry-pick-rerere: Make cherry-pick use rerere for conflict resolution.
2 parents b46f7e5 + aa1a011 commit 88ab18d

File tree

2 files changed

+47
-0
lines changed

2 files changed

+47
-0
lines changed

builtin-revert.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
#include "cache-tree.h"
1212
#include "diff.h"
1313
#include "revision.h"
14+
#include "rerere.h"
1415

1516
/*
1617
* This implements the builtins revert and cherry-pick.
@@ -395,6 +396,7 @@ static int revert_or_cherry_pick(int argc, const char **argv)
395396
die ("Error wrapping up %s", defmsg);
396397
fprintf(stderr, "Automatic %s failed.%s\n",
397398
me, help_msg(commit->object.sha1));
399+
rerere();
398400
exit(1);
399401
}
400402
if (commit_lock_file(&msg_file) < 0)

t/t3504-cherry-pick-rerere.sh

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
#!/bin/sh
2+
3+
test_description='cherry-pick should rerere for conflicts'
4+
5+
. ./test-lib.sh
6+
7+
test_expect_success setup '
8+
echo foo >foo &&
9+
git add foo && test_tick && git commit -q -m 1 &&
10+
echo foo-master >foo &&
11+
git add foo && test_tick && git commit -q -m 2 &&
12+
13+
git checkout -b dev HEAD^ &&
14+
echo foo-dev >foo &&
15+
git add foo && test_tick && git commit -q -m 3 &&
16+
git config rerere.enabled true
17+
'
18+
19+
test_expect_success 'conflicting merge' '
20+
test_must_fail git merge master
21+
'
22+
23+
test_expect_success 'fixup' '
24+
echo foo-dev >foo &&
25+
git add foo && test_tick && git commit -q -m 4 &&
26+
git reset --hard HEAD^
27+
echo foo-dev >expect
28+
'
29+
30+
test_expect_success 'cherry-pick conflict' '
31+
test_must_fail git cherry-pick master &&
32+
test_cmp expect foo
33+
'
34+
35+
test_expect_success 'reconfigure' '
36+
git config rerere.enabled false
37+
git reset --hard
38+
'
39+
40+
test_expect_success 'cherry-pick conflict without rerere' '
41+
test_must_fail git cherry-pick master &&
42+
test_must_fail test_cmp expect foo
43+
'
44+
45+
test_done

0 commit comments

Comments
 (0)