On Tue, Feb 02, 2010 at 08:48:43PM +0100, Daniel Näslund wrote:
> Hi Stefan!
> 
> In match_hunk() we try to match lines from the context of the patch with
> lines in the target. Earlier, in init_patch_target() we detect the eol
> of the target and open streams to read from the target and to write the
> patched result. Those streams does translation of keywords and eols.
> 
> In match_hunk we read a line from original_text and translate it. But we
> don't get any translation of the eols in hunk_line_translated.

svn patch only repairs EOLs if the svn:eol-style enforces a fixed
value (such as CR or CRLF). Try setting svn:eol-style to 'CRLF' on
the patch target. Then you'll see dos-style newlines in the patched result.

Admittedly, we may want to repair EOLs in more scenarios (such as
eol-style = native).

> I've set the eol_str argument in svn_subst_translate_cstring2() to
> "\r\n" for testing but it still doesn't use "\r\n" for eol. Can there be
> an error in svn_subst_translate_cstring2()? 

No, it's working as expected.

> /* Contract keywords, if any, before matching. */
> SVN_ERR(svn_subst_translate_cstring2(hunk_line->data,
>                                      &hunk_line_translated,
>                                      "\r\n, FALSE,

Try passing TRUE for the 'repair' parameter:

                                       "\r\n", TRUE,

Stefan

>                                      target->keywords, FALSE,
>                                      iterpool));

Reply via email to