You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by cz02 <cz...@cdak.net> on 2012/10/15 21:12:09 UTC

SVN patch IGNORES file without newline at end of file

Please verify this bug report:

I have two identical files aaa.txt and bbb.txt except that aaa.txt has 
no "newline at end of file".

When applying a patch (created with svn diff > p.patch) my modifications 
for aaa.txt are simply ignored with no error or warning!

> svn patch p.patch
U         bbb.txt

If I remove the line "\ No newline at end of file" from the patch file 
and apply it again (after reverting), everything works as expected:

> svn patch p2.patch
U         aaa.txt
U         bbb.txt

To reproduce simply create an empty repository and add aaa.txt and 
bbb.txt then try to apply the patches.
Sample files attached.

OS: Windows 7 sp1
svn, version 1.7.7 (r1393599) - by SilkSVN
     compiled Oct  8 2012, 10:42:55

I tried to get this verified on the users group but only found out that 
the issue does not exist on Unix - might be a Windows only bug.

thanks,
Christian Zangl


Re: SVN patch IGNORES file without newline at end of file

Posted by cz02 <cz...@cdak.net>.
On 2012-10-16 11:41, Johan Corveleyn wrote:
> On Tue, Oct 16, 2012 at 11:35 AM, cz02 <cz...@cdak.net> wrote:
>> On 2012-10-16 10:52, Johan Corveleyn wrote:
>>>
>>> On Mon, Oct 15, 2012 at 9:12 PM, cz02<cz...@cdak.net>  wrote:
>>>>
>>>>> Please verify this bug report:
>>>>>
>>>>> I have two identical files aaa.txt and bbb.txt except that aaa.txt has
>>>>> no
>>>>> "newline at end of file".
>>>>>
>>>>> When applying a patch (created with svn diff > p.patch) my modifications
>>>>> for
>>>>> aaa.txt are simply ignored with no error or warning!
>>>>>
>>>>>
>>>>>>> svn patch p.patch
>>>>
>>>>>
>>>>> U         bbb.txt
>>>>>
>>>>> If I remove the line "\ No newline at end of file" from the patch file
>>>>> and
>>>>> apply it again (after reverting), everything works as expected:
>>>>>
>>>>>
>>>>>>> svn patch p2.patch
>>>>
>>>>>
>>>>> U         aaa.txt
>>>>> U         bbb.txt
>>>>>
>>>>> To reproduce simply create an empty repository and add aaa.txt and
>>>>> bbb.txt
>>>>> then try to apply the patches.
>>>>> Sample files attached.
>>>>>
>>>>> OS: Windows 7 sp1
>>>>> svn, version 1.7.7 (r1393599) - by SilkSVN
>>>>>      compiled Oct  8 2012, 10:42:55
>>>>>
>>>>> I tried to get this verified on the users group but only found out that
>>>>> the
>>>>> issue does not exist on Unix - might be a Windows only bug.
>>>
>>> I can't reproduce this. I'm on Windows 7 sp1 too, with svn 1.7.7
>>> (SlikSVN).
>>>
>>> I tried two variations: one where svn:eol-style=native would be set
>>> automatically by my normal auto-props settings. And one where I
>>> disable auto-props before adding the files. Neither of the variations
>>> had the problem that you observed. So I'm not sure what could be
>>> different on your machine vs. my setup.
>>>
>>> Here is a transcript of what I did (in cmd.exe):
>>> [[[
>>> ### First attempt, with my regular auto-props setting
>>> C:\Temp\testje>svnadmin create repos
>>>
>>> C:\Temp\testje>svn cofile:///C:/Temp/testje/repos  wc
>>>
>>> Checked out revision 0.
>>>
>>> C:\Temp\testje>cd wc
>>>
>>> C:\Temp\testje\wc>copy ..\*.txt .
>>> ..\aaa.txt
>>> ..\bbb.txt
>>>           2 file(s) copied.
>>>
>>> C:\Temp\testje\wc>dir
>>>    Volume in drive C is Default
>>>    Volume Serial Number is A65F-CF5B
>>>
>>>    Directory of C:\Temp\testje\wc
>>>
>>> 16-10-2012  10:33    <DIR>          .
>>> 16-10-2012  10:33    <DIR>          ..
>>> 11-10-2012  12:12                52 aaa.txt
>>> 11-10-2012  12:12                54 bbb.txt
>>>                  2 File(s)            106 bytes
>>>                  2 Dir(s)  156.481.060.864 bytes free
>>>
>>> C:\Temp\testje\wc>svn add aaa.txt bbb.txt
>>> A         aaa.txt
>>> A         bbb.txt
>>>
>>> C:\Temp\testje\wc>svn pl -v aaa.txt
>>> Properties on 'aaa.txt':
>>>     svn:eol-style
>>>       native
>>>
>>> C:\Temp\testje\wc>svn commit -m"adding files"
>>> Adding         aaa.txt
>>> Adding         bbb.txt
>>> Transmitting file data ..
>>> Committed revision 1.
>>>
>>> C:\Temp\testje\wc>svn up
>>> Updating '.':
>>> At revision 1.
>>>
>>> C:\Temp\testje\wc>svn st
>>>
>>> C:\Temp\testje\wc>cat ..\p.patch
>>> Index: aaa.txt
>>> ===================================================================
>>> --- aaa.txt     (revision 912)
>>> +++ aaa.txt     (working copy)
>>> @@ -2,6 +2,6 @@
>>>    {
>>>      void bar()
>>>      {
>>> -    //dummy
>>> +    //more
>>>      }
>>>    }
>>> \ No newline at end of file
>>> Index: bbb.txt
>>> ===================================================================
>>> --- bbb.txt     (revision 912)
>>> +++ bbb.txt     (working copy)
>>> @@ -2,6 +2,6 @@
>>>    {
>>>      void bar()
>>>      {
>>> -    //dummy
>>> +    //more
>>>      }
>>>    }
>>>
>>> C:\Temp\testje\wc>svn patch ..\p.patch
>>> U         aaa.txt
>>> U         bbb.txt
>>>
>>> C:\Temp\testje\wc>svn revert *.txt
>>> Reverted 'aaa.txt'
>>> Reverted 'bbb.txt'
>>>
>>> C:\Temp\testje\wc>svn patch ..\p2.patch
>>> U         aaa.txt
>>> U         bbb.txt
>>>
>>> C:\Temp\testje\wc>svn revert *.txt
>>> Reverted 'aaa.txt'
>>> Reverted 'bbb.txt'
>>>
>>>
>>> ### Second attempt, disabling auto-props
>>> C:\Temp\testje\wc>cd ..
>>>
>>> C:\Temp\testje>svnadmin create repos2
>>>
>>> C:\Temp\testje>svn cofile:///C:/Temp/testje/repos2  wc2
>>>
>>> Checked out revision 0.
>>>
>>> C:\Temp\testje>cd wc2
>>>
>>> C:\Temp\testje\wc2>copy ..\*.txt .
>>> ..\aaa.txt
>>> ..\bbb.txt
>>>           2 file(s) copied.
>>>
>>> C:\Temp\testje\wc2>svn add --config-option
>>> config:miscellany:enable-auto-props=no aaa.txt bbb.txt
>>> A         aaa.txt
>>> A         bbb.txt
>>>
>>> C:\Temp\testje\wc2>svn pl -v aaa.txt
>>>
>>> C:\Temp\testje\wc2>svn commit -m"adding files"
>>> Adding         aaa.txt
>>> Adding         bbb.txt
>>> Transmitting file data ..
>>> Committed revision 1.
>>>
>>> C:\Temp\testje\wc2>svn up
>>> Updating '.':
>>> At revision 1.
>>>
>>> C:\Temp\testje\wc2>dir
>>>    Volume in drive C is Default
>>>    Volume Serial Number is A65F-CF5B
>>>
>>>    Directory of C:\Temp\testje\wc2
>>>
>>> 16-10-2012  10:40    <DIR>          .
>>> 16-10-2012  10:40    <DIR>          ..
>>> 11-10-2012  12:12                52 aaa.txt
>>> 11-10-2012  12:12                54 bbb.txt
>>>                  2 File(s)            106 bytes
>>>                  2 Dir(s)  157.020.934.144 bytes free
>>>
>>> C:\Temp\testje\wc2>svn patch ..\p.patch
>>> U         aaa.txt
>>> U         bbb.txt
>>>
>>> C:\Temp\testje\wc2>svn revert *.txt
>>> Reverted 'aaa.txt'
>>> Reverted 'bbb.txt'
>>>
>>> C:\Temp\testje\wc2>svn patch ..\p2.patch
>>> U         aaa.txt
>>> U         bbb.txt
>>> ]]]
>>>
>>> -- Johan
>>>
>>
>> That's very strange because even if I follow your steps my "aaa.txt" file
>> still does not get updated:
>>
>> Y:\test2\wc2>svn patch p.patch
>> U         bbb.txt
>>
>> Y:\test2\wc2>
>>
>> My machine is plain Windows 7 Enterprise with a few developement tools
>> installed (Visual Studio).
>>
>> So I also tested this on a Windows 2003 Server machine which still has SVN
>> 1.7.4 and it gave me the same result:
>>
>> V:\temp\wc2>svn patch p.patch
>> U         bbb.txt
>>
>> V:\temp\wc2>svn --version
>> svn, version 1.7.4 (r1295709)
>>     compiled Mar  5 2012, 09:29:21
>>
>> Any ideas what I can do to isolate the problem?
>
> Hm, strange. Did you follow my steps exactly? Did you perform the 'svn
> up' right after committing the added files (and before applying the
> patch)? That might make a difference, because without that 'svn
> update' you'll have a mixed revision working copy (the parent
> directory will still be on the revision before the add) --- the 'svn
> update' brings everything to a uniform revision.
>

Yes, I did "svn up".

I've tried changing the patchfile and found that if I remove the \r\n 
after "\ No newline at end of file" (making it "\ No newline at end of 
fileIndex: bbb.txt") it will work!

The patchfile is now clearly invalid but it makes svn patch the changes 
to aaa.txt:

Y:\test2\wc2>svn patch p3-noeol.patch
U         aaa.txt
U         bbb.txt

also aaa.txt will now contain a newline at the end of the file!

I guess the problem must occur somewhere in parse-diff.c:

       /* Lines starting with a backslash are comments, such as
        * "\ No newline at end of file". */
       if (line->data[0] == '\\')
         {
           if (in_hunk &&
               ((!*is_property &&
                 strcmp(line->data, "\\ No newline at end of file") == 0) ||
                (*is_property &&
                 strcmp(line->data, "\\ No newline at end of property") 
== 0)))
             {
               char eolbuf[2];
               apr_size_t len;
               apr_off_t off;
               apr_off_t hunk_text_end;

               /* Comment terminates the hunk text and says the hunk text
                * has no trailing EOL. Snip off trailing EOL which is part
                * of the patch file but not part of the hunk text. */
               off = last_line - 2;
               SVN_ERR(svn_io_file_seek(apr_file, APR_SET, &off, iterpool));
               len = sizeof(eolbuf);
               SVN_ERR(svn_io_file_read_full2(apr_file, eolbuf, len, &len,
                                              &eof, iterpool));
               if (eolbuf[0] == '\r' && eolbuf[1] == '\n')
                 hunk_text_end = last_line - 2;
               else if (eolbuf[1] == '\n' || eolbuf[1] == '\r')
                 hunk_text_end = last_line - 1;
               else
                 hunk_text_end = last_line;

               if (last_line_type == original_line && original_end == 0)
                 original_end = hunk_text_end;
               else if (last_line_type == modified_line && modified_end 
== 0)
                 modified_end = hunk_text_end;
               else if (last_line_type == context_line)
                 {
                   if (original_end == 0)
                     original_end = hunk_text_end;
                   if (modified_end == 0)
                     modified_end = hunk_text_end;
                   break;
                 }

               SVN_ERR(svn_io_file_seek(apr_file, APR_SET, &pos, iterpool));
             }

           continue;
         }

...

possibly here:

   if (hunk_seen && start < end)
     {
       ...
     }
   else
     /* Something went wrong, just discard the result. */
     *hunk = NULL;

bye, chris

Re: SVN patch IGNORES file without newline at end of file

Posted by Johan Corveleyn <jc...@gmail.com>.
On Tue, Oct 16, 2012 at 11:35 AM, cz02 <cz...@cdak.net> wrote:
> On 2012-10-16 10:52, Johan Corveleyn wrote:
>>
>> On Mon, Oct 15, 2012 at 9:12 PM, cz02<cz...@cdak.net>  wrote:
>>>
>>> >Please verify this bug report:
>>> >
>>> >I have two identical files aaa.txt and bbb.txt except that aaa.txt has
>>> > no
>>> >"newline at end of file".
>>> >
>>> >When applying a patch (created with svn diff > p.patch) my modifications
>>> > for
>>> >aaa.txt are simply ignored with no error or warning!
>>> >
>>>>
>>>> >>svn patch p.patch
>>>
>>> >
>>> >U         bbb.txt
>>> >
>>> >If I remove the line "\ No newline at end of file" from the patch file
>>> > and
>>> >apply it again (after reverting), everything works as expected:
>>> >
>>>>
>>>> >>svn patch p2.patch
>>>
>>> >
>>> >U         aaa.txt
>>> >U         bbb.txt
>>> >
>>> >To reproduce simply create an empty repository and add aaa.txt and
>>> > bbb.txt
>>> >then try to apply the patches.
>>> >Sample files attached.
>>> >
>>> >OS: Windows 7 sp1
>>> >svn, version 1.7.7 (r1393599) - by SilkSVN
>>> >     compiled Oct  8 2012, 10:42:55
>>> >
>>> >I tried to get this verified on the users group but only found out that
>>> > the
>>> >issue does not exist on Unix - might be a Windows only bug.
>>
>> I can't reproduce this. I'm on Windows 7 sp1 too, with svn 1.7.7
>> (SlikSVN).
>>
>> I tried two variations: one where svn:eol-style=native would be set
>> automatically by my normal auto-props settings. And one where I
>> disable auto-props before adding the files. Neither of the variations
>> had the problem that you observed. So I'm not sure what could be
>> different on your machine vs. my setup.
>>
>> Here is a transcript of what I did (in cmd.exe):
>> [[[
>> ### First attempt, with my regular auto-props setting
>> C:\Temp\testje>svnadmin create repos
>>
>> C:\Temp\testje>svn cofile:///C:/Temp/testje/repos  wc
>>
>> Checked out revision 0.
>>
>> C:\Temp\testje>cd wc
>>
>> C:\Temp\testje\wc>copy ..\*.txt .
>> ..\aaa.txt
>> ..\bbb.txt
>>          2 file(s) copied.
>>
>> C:\Temp\testje\wc>dir
>>   Volume in drive C is Default
>>   Volume Serial Number is A65F-CF5B
>>
>>   Directory of C:\Temp\testje\wc
>>
>> 16-10-2012  10:33    <DIR>          .
>> 16-10-2012  10:33    <DIR>          ..
>> 11-10-2012  12:12                52 aaa.txt
>> 11-10-2012  12:12                54 bbb.txt
>>                 2 File(s)            106 bytes
>>                 2 Dir(s)  156.481.060.864 bytes free
>>
>> C:\Temp\testje\wc>svn add aaa.txt bbb.txt
>> A         aaa.txt
>> A         bbb.txt
>>
>> C:\Temp\testje\wc>svn pl -v aaa.txt
>> Properties on 'aaa.txt':
>>    svn:eol-style
>>      native
>>
>> C:\Temp\testje\wc>svn commit -m"adding files"
>> Adding         aaa.txt
>> Adding         bbb.txt
>> Transmitting file data ..
>> Committed revision 1.
>>
>> C:\Temp\testje\wc>svn up
>> Updating '.':
>> At revision 1.
>>
>> C:\Temp\testje\wc>svn st
>>
>> C:\Temp\testje\wc>cat ..\p.patch
>> Index: aaa.txt
>> ===================================================================
>> --- aaa.txt     (revision 912)
>> +++ aaa.txt     (working copy)
>> @@ -2,6 +2,6 @@
>>   {
>>     void bar()
>>     {
>> -    //dummy
>> +    //more
>>     }
>>   }
>> \ No newline at end of file
>> Index: bbb.txt
>> ===================================================================
>> --- bbb.txt     (revision 912)
>> +++ bbb.txt     (working copy)
>> @@ -2,6 +2,6 @@
>>   {
>>     void bar()
>>     {
>> -    //dummy
>> +    //more
>>     }
>>   }
>>
>> C:\Temp\testje\wc>svn patch ..\p.patch
>> U         aaa.txt
>> U         bbb.txt
>>
>> C:\Temp\testje\wc>svn revert *.txt
>> Reverted 'aaa.txt'
>> Reverted 'bbb.txt'
>>
>> C:\Temp\testje\wc>svn patch ..\p2.patch
>> U         aaa.txt
>> U         bbb.txt
>>
>> C:\Temp\testje\wc>svn revert *.txt
>> Reverted 'aaa.txt'
>> Reverted 'bbb.txt'
>>
>>
>> ### Second attempt, disabling auto-props
>> C:\Temp\testje\wc>cd ..
>>
>> C:\Temp\testje>svnadmin create repos2
>>
>> C:\Temp\testje>svn cofile:///C:/Temp/testje/repos2  wc2
>>
>> Checked out revision 0.
>>
>> C:\Temp\testje>cd wc2
>>
>> C:\Temp\testje\wc2>copy ..\*.txt .
>> ..\aaa.txt
>> ..\bbb.txt
>>          2 file(s) copied.
>>
>> C:\Temp\testje\wc2>svn add --config-option
>> config:miscellany:enable-auto-props=no aaa.txt bbb.txt
>> A         aaa.txt
>> A         bbb.txt
>>
>> C:\Temp\testje\wc2>svn pl -v aaa.txt
>>
>> C:\Temp\testje\wc2>svn commit -m"adding files"
>> Adding         aaa.txt
>> Adding         bbb.txt
>> Transmitting file data ..
>> Committed revision 1.
>>
>> C:\Temp\testje\wc2>svn up
>> Updating '.':
>> At revision 1.
>>
>> C:\Temp\testje\wc2>dir
>>   Volume in drive C is Default
>>   Volume Serial Number is A65F-CF5B
>>
>>   Directory of C:\Temp\testje\wc2
>>
>> 16-10-2012  10:40    <DIR>          .
>> 16-10-2012  10:40    <DIR>          ..
>> 11-10-2012  12:12                52 aaa.txt
>> 11-10-2012  12:12                54 bbb.txt
>>                 2 File(s)            106 bytes
>>                 2 Dir(s)  157.020.934.144 bytes free
>>
>> C:\Temp\testje\wc2>svn patch ..\p.patch
>> U         aaa.txt
>> U         bbb.txt
>>
>> C:\Temp\testje\wc2>svn revert *.txt
>> Reverted 'aaa.txt'
>> Reverted 'bbb.txt'
>>
>> C:\Temp\testje\wc2>svn patch ..\p2.patch
>> U         aaa.txt
>> U         bbb.txt
>> ]]]
>>
>> -- Johan
>>
>
> That's very strange because even if I follow your steps my "aaa.txt" file
> still does not get updated:
>
> Y:\test2\wc2>svn patch p.patch
> U         bbb.txt
>
> Y:\test2\wc2>
>
> My machine is plain Windows 7 Enterprise with a few developement tools
> installed (Visual Studio).
>
> So I also tested this on a Windows 2003 Server machine which still has SVN
> 1.7.4 and it gave me the same result:
>
> V:\temp\wc2>svn patch p.patch
> U         bbb.txt
>
> V:\temp\wc2>svn --version
> svn, version 1.7.4 (r1295709)
>    compiled Mar  5 2012, 09:29:21
>
> Any ideas what I can do to isolate the problem?

Hm, strange. Did you follow my steps exactly? Did you perform the 'svn
up' right after committing the added files (and before applying the
patch)? That might make a difference, because without that 'svn
update' you'll have a mixed revision working copy (the parent
directory will still be on the revision before the add) --- the 'svn
update' brings everything to a uniform revision.

-- 
Johan

Re: SVN patch IGNORES file without newline at end of file

Posted by cz02 <cz...@cdak.net>.
On 2012-10-16 10:52, Johan Corveleyn wrote:
> On Mon, Oct 15, 2012 at 9:12 PM, cz02<cz...@cdak.net>  wrote:
>> >Please verify this bug report:
>> >
>> >I have two identical files aaa.txt and bbb.txt except that aaa.txt has no
>> >"newline at end of file".
>> >
>> >When applying a patch (created with svn diff > p.patch) my modifications for
>> >aaa.txt are simply ignored with no error or warning!
>> >
>>> >>svn patch p.patch
>> >
>> >U         bbb.txt
>> >
>> >If I remove the line "\ No newline at end of file" from the patch file and
>> >apply it again (after reverting), everything works as expected:
>> >
>>> >>svn patch p2.patch
>> >
>> >U         aaa.txt
>> >U         bbb.txt
>> >
>> >To reproduce simply create an empty repository and add aaa.txt and bbb.txt
>> >then try to apply the patches.
>> >Sample files attached.
>> >
>> >OS: Windows 7 sp1
>> >svn, version 1.7.7 (r1393599) - by SilkSVN
>> >     compiled Oct  8 2012, 10:42:55
>> >
>> >I tried to get this verified on the users group but only found out that the
>> >issue does not exist on Unix - might be a Windows only bug.
> I can't reproduce this. I'm on Windows 7 sp1 too, with svn 1.7.7 (SlikSVN).
>
> I tried two variations: one where svn:eol-style=native would be set
> automatically by my normal auto-props settings. And one where I
> disable auto-props before adding the files. Neither of the variations
> had the problem that you observed. So I'm not sure what could be
> different on your machine vs. my setup.
>
> Here is a transcript of what I did (in cmd.exe):
> [[[
> ### First attempt, with my regular auto-props setting
> C:\Temp\testje>svnadmin create repos
>
> C:\Temp\testje>svn cofile:///C:/Temp/testje/repos  wc
> Checked out revision 0.
>
> C:\Temp\testje>cd wc
>
> C:\Temp\testje\wc>copy ..\*.txt .
> ..\aaa.txt
> ..\bbb.txt
>          2 file(s) copied.
>
> C:\Temp\testje\wc>dir
>   Volume in drive C is Default
>   Volume Serial Number is A65F-CF5B
>
>   Directory of C:\Temp\testje\wc
>
> 16-10-2012  10:33    <DIR>          .
> 16-10-2012  10:33    <DIR>          ..
> 11-10-2012  12:12                52 aaa.txt
> 11-10-2012  12:12                54 bbb.txt
>                 2 File(s)            106 bytes
>                 2 Dir(s)  156.481.060.864 bytes free
>
> C:\Temp\testje\wc>svn add aaa.txt bbb.txt
> A         aaa.txt
> A         bbb.txt
>
> C:\Temp\testje\wc>svn pl -v aaa.txt
> Properties on 'aaa.txt':
>    svn:eol-style
>      native
>
> C:\Temp\testje\wc>svn commit -m"adding files"
> Adding         aaa.txt
> Adding         bbb.txt
> Transmitting file data ..
> Committed revision 1.
>
> C:\Temp\testje\wc>svn up
> Updating '.':
> At revision 1.
>
> C:\Temp\testje\wc>svn st
>
> C:\Temp\testje\wc>cat ..\p.patch
> Index: aaa.txt
> ===================================================================
> --- aaa.txt     (revision 912)
> +++ aaa.txt     (working copy)
> @@ -2,6 +2,6 @@
>   {
>     void bar()
>     {
> -    //dummy
> +    //more
>     }
>   }
> \ No newline at end of file
> Index: bbb.txt
> ===================================================================
> --- bbb.txt     (revision 912)
> +++ bbb.txt     (working copy)
> @@ -2,6 +2,6 @@
>   {
>     void bar()
>     {
> -    //dummy
> +    //more
>     }
>   }
>
> C:\Temp\testje\wc>svn patch ..\p.patch
> U         aaa.txt
> U         bbb.txt
>
> C:\Temp\testje\wc>svn revert *.txt
> Reverted 'aaa.txt'
> Reverted 'bbb.txt'
>
> C:\Temp\testje\wc>svn patch ..\p2.patch
> U         aaa.txt
> U         bbb.txt
>
> C:\Temp\testje\wc>svn revert *.txt
> Reverted 'aaa.txt'
> Reverted 'bbb.txt'
>
>
> ### Second attempt, disabling auto-props
> C:\Temp\testje\wc>cd ..
>
> C:\Temp\testje>svnadmin create repos2
>
> C:\Temp\testje>svn cofile:///C:/Temp/testje/repos2  wc2
> Checked out revision 0.
>
> C:\Temp\testje>cd wc2
>
> C:\Temp\testje\wc2>copy ..\*.txt .
> ..\aaa.txt
> ..\bbb.txt
>          2 file(s) copied.
>
> C:\Temp\testje\wc2>svn add --config-option
> config:miscellany:enable-auto-props=no aaa.txt bbb.txt
> A         aaa.txt
> A         bbb.txt
>
> C:\Temp\testje\wc2>svn pl -v aaa.txt
>
> C:\Temp\testje\wc2>svn commit -m"adding files"
> Adding         aaa.txt
> Adding         bbb.txt
> Transmitting file data ..
> Committed revision 1.
>
> C:\Temp\testje\wc2>svn up
> Updating '.':
> At revision 1.
>
> C:\Temp\testje\wc2>dir
>   Volume in drive C is Default
>   Volume Serial Number is A65F-CF5B
>
>   Directory of C:\Temp\testje\wc2
>
> 16-10-2012  10:40    <DIR>          .
> 16-10-2012  10:40    <DIR>          ..
> 11-10-2012  12:12                52 aaa.txt
> 11-10-2012  12:12                54 bbb.txt
>                 2 File(s)            106 bytes
>                 2 Dir(s)  157.020.934.144 bytes free
>
> C:\Temp\testje\wc2>svn patch ..\p.patch
> U         aaa.txt
> U         bbb.txt
>
> C:\Temp\testje\wc2>svn revert *.txt
> Reverted 'aaa.txt'
> Reverted 'bbb.txt'
>
> C:\Temp\testje\wc2>svn patch ..\p2.patch
> U         aaa.txt
> U         bbb.txt
> ]]]
>
> -- Johan
>

That's very strange because even if I follow your steps my "aaa.txt" 
file still does not get updated:

Y:\test2\wc2>svn patch p.patch
U         bbb.txt

Y:\test2\wc2>

My machine is plain Windows 7 Enterprise with a few developement tools 
installed (Visual Studio).

So I also tested this on a Windows 2003 Server machine which still has 
SVN 1.7.4 and it gave me the same result:

V:\temp\wc2>svn patch p.patch
U         bbb.txt

V:\temp\wc2>svn --version
svn, version 1.7.4 (r1295709)
    compiled Mar  5 2012, 09:29:21

Any ideas what I can do to isolate the problem?

-chris

Re: SVN patch IGNORES file without newline at end of file

Posted by Johan Corveleyn <jc...@gmail.com>.
On Mon, Oct 15, 2012 at 9:12 PM, cz02 <cz...@cdak.net> wrote:
> Please verify this bug report:
>
> I have two identical files aaa.txt and bbb.txt except that aaa.txt has no
> "newline at end of file".
>
> When applying a patch (created with svn diff > p.patch) my modifications for
> aaa.txt are simply ignored with no error or warning!
>
>> svn patch p.patch
>
> U         bbb.txt
>
> If I remove the line "\ No newline at end of file" from the patch file and
> apply it again (after reverting), everything works as expected:
>
>> svn patch p2.patch
>
> U         aaa.txt
> U         bbb.txt
>
> To reproduce simply create an empty repository and add aaa.txt and bbb.txt
> then try to apply the patches.
> Sample files attached.
>
> OS: Windows 7 sp1
> svn, version 1.7.7 (r1393599) - by SilkSVN
>     compiled Oct  8 2012, 10:42:55
>
> I tried to get this verified on the users group but only found out that the
> issue does not exist on Unix - might be a Windows only bug.

I can't reproduce this. I'm on Windows 7 sp1 too, with svn 1.7.7 (SlikSVN).

I tried two variations: one where svn:eol-style=native would be set
automatically by my normal auto-props settings. And one where I
disable auto-props before adding the files. Neither of the variations
had the problem that you observed. So I'm not sure what could be
different on your machine vs. my setup.

Here is a transcript of what I did (in cmd.exe):
[[[
### First attempt, with my regular auto-props setting
C:\Temp\testje>svnadmin create repos

C:\Temp\testje>svn co file:///C:/Temp/testje/repos wc
Checked out revision 0.

C:\Temp\testje>cd wc

C:\Temp\testje\wc>copy ..\*.txt .
..\aaa.txt
..\bbb.txt
        2 file(s) copied.

C:\Temp\testje\wc>dir
 Volume in drive C is Default
 Volume Serial Number is A65F-CF5B

 Directory of C:\Temp\testje\wc

16-10-2012  10:33    <DIR>          .
16-10-2012  10:33    <DIR>          ..
11-10-2012  12:12                52 aaa.txt
11-10-2012  12:12                54 bbb.txt
               2 File(s)            106 bytes
               2 Dir(s)  156.481.060.864 bytes free

C:\Temp\testje\wc>svn add aaa.txt bbb.txt
A         aaa.txt
A         bbb.txt

C:\Temp\testje\wc>svn pl -v aaa.txt
Properties on 'aaa.txt':
  svn:eol-style
    native

C:\Temp\testje\wc>svn commit -m"adding files"
Adding         aaa.txt
Adding         bbb.txt
Transmitting file data ..
Committed revision 1.

C:\Temp\testje\wc>svn up
Updating '.':
At revision 1.

C:\Temp\testje\wc>svn st

C:\Temp\testje\wc>cat ..\p.patch
Index: aaa.txt
===================================================================
--- aaa.txt     (revision 912)
+++ aaa.txt     (working copy)
@@ -2,6 +2,6 @@
 {
   void bar()
   {
-    //dummy
+    //more
   }
 }
\ No newline at end of file
Index: bbb.txt
===================================================================
--- bbb.txt     (revision 912)
+++ bbb.txt     (working copy)
@@ -2,6 +2,6 @@
 {
   void bar()
   {
-    //dummy
+    //more
   }
 }

C:\Temp\testje\wc>svn patch ..\p.patch
U         aaa.txt
U         bbb.txt

C:\Temp\testje\wc>svn revert *.txt
Reverted 'aaa.txt'
Reverted 'bbb.txt'

C:\Temp\testje\wc>svn patch ..\p2.patch
U         aaa.txt
U         bbb.txt

C:\Temp\testje\wc>svn revert *.txt
Reverted 'aaa.txt'
Reverted 'bbb.txt'


### Second attempt, disabling auto-props
C:\Temp\testje\wc>cd ..

C:\Temp\testje>svnadmin create repos2

C:\Temp\testje>svn co file:///C:/Temp/testje/repos2 wc2
Checked out revision 0.

C:\Temp\testje>cd wc2

C:\Temp\testje\wc2>copy ..\*.txt .
..\aaa.txt
..\bbb.txt
        2 file(s) copied.

C:\Temp\testje\wc2>svn add --config-option
config:miscellany:enable-auto-props=no aaa.txt bbb.txt
A         aaa.txt
A         bbb.txt

C:\Temp\testje\wc2>svn pl -v aaa.txt

C:\Temp\testje\wc2>svn commit -m"adding files"
Adding         aaa.txt
Adding         bbb.txt
Transmitting file data ..
Committed revision 1.

C:\Temp\testje\wc2>svn up
Updating '.':
At revision 1.

C:\Temp\testje\wc2>dir
 Volume in drive C is Default
 Volume Serial Number is A65F-CF5B

 Directory of C:\Temp\testje\wc2

16-10-2012  10:40    <DIR>          .
16-10-2012  10:40    <DIR>          ..
11-10-2012  12:12                52 aaa.txt
11-10-2012  12:12                54 bbb.txt
               2 File(s)            106 bytes
               2 Dir(s)  157.020.934.144 bytes free

C:\Temp\testje\wc2>svn patch ..\p.patch
U         aaa.txt
U         bbb.txt

C:\Temp\testje\wc2>svn revert *.txt
Reverted 'aaa.txt'
Reverted 'bbb.txt'

C:\Temp\testje\wc2>svn patch ..\p2.patch
U         aaa.txt
U         bbb.txt
]]]

-- 
Johan