Hello,

in SVN 1.7.9 and earlier versions (als tested 1.7.7 and 1.7.8), it can happen that a merge succeeds although the patch definitely cannot be applied. This happens when the changeset to be applied deletes some lines at the very beginning of a file. Such a changeset is happily "applied" by "svn merge" although the target file does not contain the lines to be deleted.

Please see the associated test case. The merge after r4 succeeds (without having any effects), although the corresponding "patch" command correctly fails. Basically, "svn merge" allows to apply files2.patch before files1.patch, which is clearly wrong.

Is this a known bug? Do any workarounds exist to prevent this bug from occurring?


Regards,

Christoph Schulz

#!/bin/sh
svnadmin create ~/mergetest-repo
svn co file://$HOME/mergetest-repo mergetest
cd mergetest/
mkdir -p trunk branches/testing
svn add *
svn ci -m "directories created"
# r1 created
cp ~/files.txt trunk/files.txt
svn add trunk/files.txt
svn ci -m "added files.txt"
# r2 created
svn update
patch trunk/files.txt ~/files1.patch
svn ci -m "files.txt changed"
# r3 created
svn update
patch trunk/files.txt ~/files2.patch
svn ci -m "files.txt corrected"
# r4 created
svn update
svn copy trunk/files.txt@2 branches/testing/
svn ci -m "copied files.txt to testing branch"
svn update
# this should _not_ work, as r4 contains a deletion
# which cannot be applied to files.txt@2!
# the "patch" utility correctly reports that the hunk could not be applied
#svn diff -c4 trunk/files.txt | patch -p0 branches/testing/files.txt || exit 1
svn merge -c4 trunk branches/testing # <-- merge succeeds!!! why?
svn ci -m "r4 integrated from trunk"
# r5 created
svn update
svn merge -c3 trunk branches/testing
svn ci -m "r3 integrated from trunk"
# r6 created
svn update
# files are different!
cmp -s trunk/files.txt branches/testing/files.txt && echo "OK" || echo "FAILURE"
cd ..
d accounting/changes/accounting.txt
d accounting/check/accounting.exp
d accounting/check/accounting.ext
d accounting/check/accounting.txt
d accounting/config/accounting.txt
Index: trunk/files.txt
===================================================================
--- trunk/files.txt	(revision 2)
+++ trunk/files.txt	(revision 3)
@@ -1,3 +1,35 @@
+u kernel_3_2/src/kernel-3.2/drivers/package/common/km_fritzcapi/km_fritzcapi-pci-3.2.patch
+u kernel_3_2/src/kernel-3.2/drivers/package/common/km_fritzcapi/km_fritzcapi-usb-3.2.patch
+u kernel_3_2/src/kernel-3.2/drivers/package/common/km_fritzcapi/km_fritzcapi.mk
+U kernel_3_2/src/kernel-3.2/drivers/package/common/km_fritzcapi/patch-lib.sh
+u kernel_3_2_nonfree/src/kernel-3.2/drivers/package/common/km_fritzcapi/km_fritzcapi-pci-3.2.patch
+u kernel_3_2_nonfree/src/kernel-3.2/drivers/package/common/km_fritzcapi/km_fritzcapi-usb-3.2.patch
+u kernel_3_2_nonfree/src/kernel-3.2/drivers/package/common/km_fritzcapi/km_fritzcapi.mk
+U kernel_3_2_nonfree/src/kernel-3.2/drivers/package/common/km_fritzcapi/patch-lib.sh
+u kernel_3_2_virt/src/kernel-3.2/drivers/package/common/km_fritzcapi/km_fritzcapi-pci-3.2.patch
+u kernel_3_2_virt/src/kernel-3.2/drivers/package/common/km_fritzcapi/km_fritzcapi-usb-3.2.patch
+u kernel_3_2_virt/src/kernel-3.2/drivers/package/common/km_fritzcapi/km_fritzcapi.mk
+U kernel_3_2_virt/src/kernel-3.2/drivers/package/common/km_fritzcapi/patch-lib.sh
+u kernel_3_2_virt_nonfree/src/kernel-3.2/drivers/package/common/km_fritzcapi/km_fritzcapi-pci-3.2.patch
+u kernel_3_2_virt_nonfree/src/kernel-3.2/drivers/package/common/km_fritzcapi/km_fritzcapi-usb-3.2.patch
+u kernel_3_2_virt_nonfree/src/kernel-3.2/drivers/package/common/km_fritzcapi/km_fritzcapi.mk
+U kernel_3_2_virt_nonfree/src/kernel-3.2/drivers/package/common/km_fritzcapi/patch-lib.sh
+u kernel_3_7/src/kernel-3.7/drivers/package/common/km_fritzcapi/km_fritzcapi-pci-3.2.patch
+u kernel_3_7/src/kernel-3.7/drivers/package/common/km_fritzcapi/km_fritzcapi-usb-3.2.patch
+u kernel_3_7/src/kernel-3.7/drivers/package/common/km_fritzcapi/km_fritzcapi.mk
+U kernel_3_7/src/kernel-3.7/drivers/package/common/km_fritzcapi/patch-lib.sh
+u kernel_3_7_nonfree/src/kernel-3.7/drivers/package/common/km_fritzcapi/km_fritzcapi-pci-3.2.patch
+u kernel_3_7_nonfree/src/kernel-3.7/drivers/package/common/km_fritzcapi/km_fritzcapi-usb-3.2.patch
+u kernel_3_7_nonfree/src/kernel-3.7/drivers/package/common/km_fritzcapi/km_fritzcapi.mk
+U kernel_3_7_nonfree/src/kernel-3.7/drivers/package/common/km_fritzcapi/patch-lib.sh
+u kernel_3_7_virt/src/kernel-3.7/drivers/package/common/km_fritzcapi/km_fritzcapi-pci-3.2.patch
+u kernel_3_7_virt/src/kernel-3.7/drivers/package/common/km_fritzcapi/km_fritzcapi-usb-3.2.patch
+u kernel_3_7_virt/src/kernel-3.7/drivers/package/common/km_fritzcapi/km_fritzcapi.mk
+U kernel_3_7_virt/src/kernel-3.7/drivers/package/common/km_fritzcapi/patch-lib.sh
+u kernel_3_7_virt_nonfree/src/kernel-3.7/drivers/package/common/km_fritzcapi/km_fritzcapi-pci-3.2.patch
+u kernel_3_7_virt_nonfree/src/kernel-3.7/drivers/package/common/km_fritzcapi/km_fritzcapi-usb-3.2.patch
+u kernel_3_7_virt_nonfree/src/kernel-3.7/drivers/package/common/km_fritzcapi/km_fritzcapi.mk
+U kernel_3_7_virt_nonfree/src/kernel-3.7/drivers/package/common/km_fritzcapi/patch-lib.sh
 d accounting/changes/accounting.txt
 d accounting/check/accounting.exp
 d accounting/check/accounting.ext
Index: trunk/files.txt
===================================================================
--- trunk/files.txt	(revision 3)
+++ trunk/files.txt	(revision 4)
@@ -1,35 +1,3 @@
-u kernel_3_2/src/kernel-3.2/drivers/package/common/km_fritzcapi/km_fritzcapi-pci-3.2.patch
-u kernel_3_2/src/kernel-3.2/drivers/package/common/km_fritzcapi/km_fritzcapi-usb-3.2.patch
-u kernel_3_2/src/kernel-3.2/drivers/package/common/km_fritzcapi/km_fritzcapi.mk
-U kernel_3_2/src/kernel-3.2/drivers/package/common/km_fritzcapi/patch-lib.sh
-u kernel_3_2_nonfree/src/kernel-3.2/drivers/package/common/km_fritzcapi/km_fritzcapi-pci-3.2.patch
-u kernel_3_2_nonfree/src/kernel-3.2/drivers/package/common/km_fritzcapi/km_fritzcapi-usb-3.2.patch
-u kernel_3_2_nonfree/src/kernel-3.2/drivers/package/common/km_fritzcapi/km_fritzcapi.mk
-U kernel_3_2_nonfree/src/kernel-3.2/drivers/package/common/km_fritzcapi/patch-lib.sh
-u kernel_3_2_virt/src/kernel-3.2/drivers/package/common/km_fritzcapi/km_fritzcapi-pci-3.2.patch
-u kernel_3_2_virt/src/kernel-3.2/drivers/package/common/km_fritzcapi/km_fritzcapi-usb-3.2.patch
-u kernel_3_2_virt/src/kernel-3.2/drivers/package/common/km_fritzcapi/km_fritzcapi.mk
-U kernel_3_2_virt/src/kernel-3.2/drivers/package/common/km_fritzcapi/patch-lib.sh
-u kernel_3_2_virt_nonfree/src/kernel-3.2/drivers/package/common/km_fritzcapi/km_fritzcapi-pci-3.2.patch
-u kernel_3_2_virt_nonfree/src/kernel-3.2/drivers/package/common/km_fritzcapi/km_fritzcapi-usb-3.2.patch
-u kernel_3_2_virt_nonfree/src/kernel-3.2/drivers/package/common/km_fritzcapi/km_fritzcapi.mk
-U kernel_3_2_virt_nonfree/src/kernel-3.2/drivers/package/common/km_fritzcapi/patch-lib.sh
-u kernel_3_7/src/kernel-3.7/drivers/package/common/km_fritzcapi/km_fritzcapi-pci-3.2.patch
-u kernel_3_7/src/kernel-3.7/drivers/package/common/km_fritzcapi/km_fritzcapi-usb-3.2.patch
-u kernel_3_7/src/kernel-3.7/drivers/package/common/km_fritzcapi/km_fritzcapi.mk
-U kernel_3_7/src/kernel-3.7/drivers/package/common/km_fritzcapi/patch-lib.sh
-u kernel_3_7_nonfree/src/kernel-3.7/drivers/package/common/km_fritzcapi/km_fritzcapi-pci-3.2.patch
-u kernel_3_7_nonfree/src/kernel-3.7/drivers/package/common/km_fritzcapi/km_fritzcapi-usb-3.2.patch
-u kernel_3_7_nonfree/src/kernel-3.7/drivers/package/common/km_fritzcapi/km_fritzcapi.mk
-U kernel_3_7_nonfree/src/kernel-3.7/drivers/package/common/km_fritzcapi/patch-lib.sh
-u kernel_3_7_virt/src/kernel-3.7/drivers/package/common/km_fritzcapi/km_fritzcapi-pci-3.2.patch
-u kernel_3_7_virt/src/kernel-3.7/drivers/package/common/km_fritzcapi/km_fritzcapi-usb-3.2.patch
-u kernel_3_7_virt/src/kernel-3.7/drivers/package/common/km_fritzcapi/km_fritzcapi.mk
-U kernel_3_7_virt/src/kernel-3.7/drivers/package/common/km_fritzcapi/patch-lib.sh
-u kernel_3_7_virt_nonfree/src/kernel-3.7/drivers/package/common/km_fritzcapi/km_fritzcapi-pci-3.2.patch
-u kernel_3_7_virt_nonfree/src/kernel-3.7/drivers/package/common/km_fritzcapi/km_fritzcapi-usb-3.2.patch
-u kernel_3_7_virt_nonfree/src/kernel-3.7/drivers/package/common/km_fritzcapi/km_fritzcapi.mk
-U kernel_3_7_virt_nonfree/src/kernel-3.7/drivers/package/common/km_fritzcapi/patch-lib.sh
 d accounting/changes/accounting.txt
 d accounting/check/accounting.exp
 d accounting/check/accounting.ext

Attachment: pgpmQaZG0GqCd.pgp
Description: Digitale PGP-Signatur

Reply via email to