There seems to be a problem with the merge logic in SVN when merging
repeated added & deleted changes out-of-order.

Example activity on branch A:
r1: A new file is added.
r2: A line is added
r3: The line is removed
r4: The line is re-added
Later activity on branch B (created from A@r1):
r5: r2 and r4 are merged in.
r6: r3 is merged in.

What happens in r5 is that repeated merging of the same change does _not_
cause duplication or merge conflict. Instead, r4 seems to be ignored. The
end result after r6 (a complete merge) is that r4 is missing from branch B.
This is inconsistent with svn:mergeinfo which claims that it has been
merged. Patches to reproduce are attached.

Could it be possible to make svn merges fail on repeated merges of the same
change, instead of just ignoring them?

The problem was reproduced using svn 1.8.1 (command-line) client on Win7
64bit SP1, and svn server 1.7.6 (VisualSVN 2.5.6, Apache 2.2.22) on Win
server 2008 R2.

Thanks in advance,
Fredrik Orderud
Index: Test.cpp
===================================================================
--- Test.cpp    (revision 0)
+++ Test.cpp    (revision 1)
@@ -0,0 +1 @@
+First line

Index: Test.cpp
===================================================================
--- Test.cpp    (revision 1)
+++ Test.cpp    (revision 2)
@@ -1 +1,2 @@
 First line
+Second line

Index: Test.cpp
===================================================================
--- Test.cpp    (revision 2)
+++ Test.cpp    (revision 3)
@@ -1,2 +1 @@
 First line
-Second line

Index: Test.cpp
===================================================================
--- Test.cpp    (revision 3)
+++ Test.cpp    (revision 4)
@@ -1 +1,2 @@
 First line
+Second line

Reply via email to