[PATCH] rerere: demonstrate a weakness with identical conflicts in different files
From: Johannes Sixt <hidden>
Date: 2016-06-15 22:49:17
Subsystem:
the rest · Maintainer:
Linus Torvalds
From: Johannes Sixt <redacted> 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 <redacted> --- 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