From: Johannes Sixt <j.sixt@viscovery.net>
To: Junio C Hamano <gitster@pobox.com>
Cc: Git Mailing List <git@vger.kernel.org>
Subject: [PATCH] rerere: demonstrate a weakness with identical conflicts in different files
Date: Wed, 11 Aug 2010 14:16:21 +0200 [thread overview]
Message-ID: <4C629495.60105@viscovery.net> (raw)
From: Johannes Sixt <j6t@kdbg.org>
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@kdbg.org>
---
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
next reply other threads:[~2010-08-11 12:16 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-08-11 12:16 Johannes Sixt [this message]
2010-08-11 23:35 ` [PATCH] rerere: demonstrate a weakness with identical conflicts in different files Junio C Hamano
2010-08-12 2:50 ` Junio C Hamano
2010-08-12 7:28 ` Johannes Sixt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4C629495.60105@viscovery.net \
--to=j.sixt@viscovery.net \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.