diff --git a/t/t6023-merge-file.sh b/t/t6023-merge-file.sh index 5d9b6f34b8..1c21d8c986 100644 --- a/t/t6023-merge-file.sh +++ b/t/t6023-merge-file.sh @@ -112,5 +112,27 @@ EOF test_expect_success "expected conflict markers, with -L" \ "diff -u test.txt expect.txt" +sed "s/ tu / TU /" < new1.txt > new5.txt +test_expect_failure "conflict in removed tail" \ + "git-merge-file -p orig.txt new1.txt new5.txt > out" + +cat > expect << EOF +Dominus regit me, +et nihil mihi deerit. +In loco pascuae ibi me collocavit, +super aquam refectionis educavit me; +animam meam convertit, +deduxit me super semitas jusitiae, +propter nomen suum. +<<<<<<< orig.txt +======= +Nam et si ambulavero in medio umbrae mortis, +non timebo mala, quoniam TU mecum es: +virga tua et baculus tuus ipsa me consolata sunt. +>>>>>>> new5.txt +EOF + +test_expect_success "expected conflict markers" "diff -u expect out" + test_done diff --git a/xdiff/xmerge.c b/xdiff/xmerge.c index 352207e516..294450b899 100644 --- a/xdiff/xmerge.c +++ b/xdiff/xmerge.c @@ -190,6 +190,10 @@ static int xdl_refine_conflicts(xdfenv_t *xe1, xdfenv_t *xe2, xdmerge_t *m, if (m->mode) continue; + /* no sense refining a conflict when one side is empty */ + if (m->chg1 == 0 || m->chg2 == 0) + continue; + /* * This probably does not work outside git, since * we have a very simple mmfile structure.