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
pgpmQaZG0GqCd.pgp
Description: Digitale PGP-Signatur