From: Johannes Sixt <j6t@xxxxxxxx> When code sections are duplicated in different files and identical conflicts arise simultaneously in these sections, then rerere resolves only the first one and leaves the others unresolved. Signed-off-by: Johannes Sixt <j6t@xxxxxxxx> --- I encounter this situation several times a year, and every now and then it is particularly annoying because the conflicts are extensive. I would appreciate if you could have a look whether this is fixed easily. I tried myself, but I can't find the point where the subsequent conflicts are ignored. -- Hannes t/t4208-rerere-dup.sh | 77 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 77 insertions(+), 0 deletions(-) create mode 100755 t/t4208-rerere-dup.sh diff --git a/t/t4208-rerere-dup.sh b/t/t4208-rerere-dup.sh new file mode 100755 index 0000000..34c182a --- /dev/null +++ b/t/t4208-rerere-dup.sh @@ -0,0 +1,77 @@ +#!/bin/sh +# +# Copyright (c) 2010 Johannes Sixt +# + +test_description='test git rerere when sections of files are duplicated, +and identical conflicts arise in these sections simultaneously. +' + +. ./test-lib.sh + +test_expect_success 'setup' ' + cat > a1 <<- EOF && + alpha + beta + gamma + EOF + sed -e s/alpha/ALPHA/ <a1 >a2 && + + git add a1 a2 && + git commit -q -a -m initial && + + git checkout -b first && + cat > a1 <<- EOF && + alpha + BETA + gamma + EOF + sed -e s/alpha/ALPHA/ <a1 >a2 && + git commit -q -a -m first && + + git checkout master && + cat > a1 <<- EOF && + alpha + ---- + gamma + EOF + sed -e s/alpha/ALPHA/ <a1 >a2 && + git commit -q -a -m master && + git config rerere.enabled true +' + +test_expect_success 'merge records only one conflict' ' + test_must_fail git merge first && + sha1=$(ls .git/rr-cache) && + test $(echo $sha1 | wc -w) = 1 +' + +test_expect_success 'record a resolution' ' + cat > a1 <<- EOF && + alpha + --beta-- + gamma + EOF + sed -e s/alpha/ALPHA/ <a1 >a2 && + git rerere 2>actual +' + +test_expect_success 'postimage must exist' ' + test -f .git/rr-cache/$sha1/postimage +' + +test_expect_success 'same resolution recorded twice' ' + test $(grep "Recorded resolution" actual | wc -l) = 2 && + test $(ls .git/rr-cache | wc -w) = 1 +' + +test_expect_success 'repeat merge' ' + git reset --hard && + test_must_fail git merge first +' + +test_expect_failure 'both files are resolved' ' + ! grep ===== a1 a2 +' + +test_done -- 1.7.2.63.g079547 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html