[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: svn diff produces a patch which does not reapply cleanly

From: David Ellingsworth <david_at_identd.dyndns.org>
Date: Wed, 7 Jan 2009 12:50:50 -0500

On Wed, Jan 7, 2009 at 11:26 AM, Stefan Küng <tortoisesvn_at_gmail.com> wrote:
> Daniel Shahaf wrote:
>> David Ellingsworth wrote on Tue, 6 Jan 2009 at 19:57 -0500:
>>> While using TortoiseSVN 1.5.6 build 14908, I encountered an error
>>> while trying to apply a patch with TortoiseMerge that was previously
>>> created using TortoiseSVN's "Create Patch" feature. While I was unable
>>> to apply the patch with TortoiseMerge, I did succeed while using the
>>> standard patch command, but not without any fuzz.
>>>
>>> The reply to the issue I posted on TortioseSVN"s user mailing list
>>> indicates this is an error in svn's core since the patch generated is
>>> equivalent to "svn diff file > patchfile". I have verified this using
>>> svn client 1.5.1 and 1.5.5.
>>>
>>> Attached are some files I created which are capable of reliably
>>> reproducing the problem. The files are as follows: the original
>>> file(test.txt), the updated file(test_v2.txt), and the associated
>>> patch file generated from svn diff(test.patch).
>>>
>>
>> What *exactly* should we do with these three files to reproduce the error?
>> (If you can package the answer in script (or transcript) form, that's
>> best.) I tried
>>
>> svn add wc1\trunk\test.txt
>> svn commit wc1 -m "add"
>> rm -f wc1\trunk\test.txt
>> cp wc1\trunk\test_v2.txt wc1\trunk\test.txt
>> svn diff wc1 > out
>> vim -Nu NONE -c "%s/\r//" -c "wq ++ff=dos" out
>> svn revert wc1\trunk\test.txt
>> patch -d wc1\trunk < out
>> diff -u wc1\trunk\test*.txt
>>
>> but it didn't cause any error message, and the 'diff -u' at the end also
>> found no differences (the expected result). Results are the same with
>> both 1.5 and trunk.
>
> Try
>
> svn add wc1\trunk\test.txt
> svn commit wc1 -m "add"
> cp test_v2.txt wc1\trunk\test.txt
> svn diff wc1 > out
> svn revert wc1\trunk\test.txt
> patch -d wc1\trunk < out
>
> Stefan
>

Output is as follows, I don't have a trunk directory so it's been excluded:

$ svn add wc1\test.txt
A wc1\test.txt

$ svn commit wc1 -m "add"
Adding wc1\test.txt
Transmitting file data .
Committed revision 1.

$ cp test_v2.txt wc1\test.txt

$ svn diff wc1 > out

$ svn revert wc1\test.txt
Reverted 'wc1\test.txt'

$ patch -d wc1 < out
patching file 'test.txt'
Hunk #2 succeeded at 7 (offset 2 lines)

Regards,

David Ellingsworth
Received on 2009-01-07 20:40:31 CET

This is an archived mail posted to the Subversion Dev mailing list.