apply: allow rerere() to work on --3way results

Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Junio C Hamano 2012-05-10 13:56:49 -07:00
parent 4f4a6cb988
commit f2633ebd76
2 changed files with 28 additions and 0 deletions

View file

@ -18,6 +18,7 @@
#include "parse-options.h"
#include "xdiff-interface.h"
#include "ll-merge.h"
#include "rerere.h"
/*
* --check turns on checking that the working tree matches the
@ -4026,6 +4027,8 @@ static int write_out_results(struct patch *list)
for_each_string_list_item(item, &cpath)
fprintf(stderr, "U %s\n", item->string);
string_list_clear(&cpath, 0);
rerere(0);
}
return errs;

View file

@ -75,4 +75,29 @@ test_expect_success 'apply with --3way' '
test_cmp expect.diff actual.diff
'
test_expect_success 'apply with --3way with rerere enabled' '
git config rerere.enabled true &&
# Merging side should be similar to applying this patch
git diff ...side >P.diff &&
# The corresponding conflicted merge
git reset --hard &&
git checkout master^0 &&
test_must_fail git merge --no-commit side &&
# Manually resolve and record the resolution
create_file 1 two 3 4 five six 7 >one &&
git rerere &&
cat one >expect &&
# should fail to apply
git reset --hard &&
git checkout master^0 &&
test_must_fail git apply --index --3way P.diff &&
# but rerere should have replayed the recorded resolution
test_cmp expect one
'
test_done