Make cherry-pick use rerere for conflict resolution.
Cherry-picking can be helped by reusing previous confliction resolution by invoking rerere automatically. Signed-off-by: Abhijit Menon-Sen <ams@toroid.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
ac39efbdf3
commit
aa1a0111cc
@ -11,6 +11,7 @@
|
|||||||
#include "cache-tree.h"
|
#include "cache-tree.h"
|
||||||
#include "diff.h"
|
#include "diff.h"
|
||||||
#include "revision.h"
|
#include "revision.h"
|
||||||
|
#include "rerere.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This implements the builtins revert and cherry-pick.
|
* This implements the builtins revert and cherry-pick.
|
||||||
@ -395,6 +396,7 @@ static int revert_or_cherry_pick(int argc, const char **argv)
|
|||||||
die ("Error wrapping up %s", defmsg);
|
die ("Error wrapping up %s", defmsg);
|
||||||
fprintf(stderr, "Automatic %s failed.%s\n",
|
fprintf(stderr, "Automatic %s failed.%s\n",
|
||||||
me, help_msg(commit->object.sha1));
|
me, help_msg(commit->object.sha1));
|
||||||
|
rerere();
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
if (commit_lock_file(&msg_file) < 0)
|
if (commit_lock_file(&msg_file) < 0)
|
||||||
|
45
t/t3504-cherry-pick-rerere.sh
Executable file
45
t/t3504-cherry-pick-rerere.sh
Executable file
@ -0,0 +1,45 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
test_description='cherry-pick should rerere for conflicts'
|
||||||
|
|
||||||
|
. ./test-lib.sh
|
||||||
|
|
||||||
|
test_expect_success setup '
|
||||||
|
echo foo >foo &&
|
||||||
|
git add foo && test_tick && git commit -q -m 1 &&
|
||||||
|
echo foo-master >foo &&
|
||||||
|
git add foo && test_tick && git commit -q -m 2 &&
|
||||||
|
|
||||||
|
git checkout -b dev HEAD^ &&
|
||||||
|
echo foo-dev >foo &&
|
||||||
|
git add foo && test_tick && git commit -q -m 3 &&
|
||||||
|
git config rerere.enabled true
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'conflicting merge' '
|
||||||
|
test_must_fail git merge master
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'fixup' '
|
||||||
|
echo foo-dev >foo &&
|
||||||
|
git add foo && test_tick && git commit -q -m 4 &&
|
||||||
|
git reset --hard HEAD^
|
||||||
|
echo foo-dev >expect
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'cherry-pick conflict' '
|
||||||
|
test_must_fail git cherry-pick master &&
|
||||||
|
test_cmp expect foo
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'reconfigure' '
|
||||||
|
git config rerere.enabled false
|
||||||
|
git reset --hard
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'cherry-pick conflict without rerere' '
|
||||||
|
test_must_fail git cherry-pick master &&
|
||||||
|
test_must_fail test_cmp expect foo
|
||||||
|
'
|
||||||
|
|
||||||
|
test_done
|
Loading…
Reference in New Issue
Block a user