From f2633ebd766b7f5817ae0ec69060170bb9b1501f Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 10 May 2012 13:56:49 -0700 Subject: [PATCH] apply: allow rerere() to work on --3way results Signed-off-by: Junio C Hamano --- builtin/apply.c | 3 +++ t/t4108-apply-threeway.sh | 25 +++++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/builtin/apply.c b/builtin/apply.c index dc52c9475e..cd68862aa8 100644 --- a/builtin/apply.c +++ b/builtin/apply.c @@ -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; diff --git a/t/t4108-apply-threeway.sh b/t/t4108-apply-threeway.sh index 475dfb57ee..e6d4da63b2 100755 --- a/t/t4108-apply-threeway.sh +++ b/t/t4108-apply-threeway.sh @@ -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 -- 2.11.4.GIT