On 20.11.2012 15:05, Stefan Sperling wrote:
> On Tue, Nov 20, 2012 at 11:25:30AM +0100, Branko Čibej wrote:
>> I'm digging through libsvn_diff and found this snippet in diff_memory.c:
>>
>> SVN_ERR(svn_utf_cstring_from_utf8_ex2
>> (&out_str,
>> /* The string below is intentionally not marked for translation:
>> it's vital to correct operation of the diff(1)/patch(1)
>> program pair. */
>> APR_EOL_STR "\\ No newline at end of file" APR_EOL_STR,
>> btn->header_encoding, btn->pool));
>>
>>
>> I was under the impression that we already cleared up this
>> misconception? Only the leading backslash and space are important for
>> signaling the no-trailing-eoln state. The text itself can be localized,
>> or absent.
>>
>> I'm pretty sure we should mark the "No newline at end of file" for
>> translation -- but /not/ the "\\ ".
> svn patch relies on the comment being present and not being localised.
> See parse_diff.c:parse_next_hunk().
>
> If we change diff_memory.c the diff parser should also be changed
> to not rely on this string being present (we can't recognise
> translated versions in the parser obviously).
>
> I just checked the UNIX patch code shipped with OpenBSD and it seems
> you're right that it only looks for the backslash and ignores the comment.
>
> However, it seems in practice patches usually contain this string in
> non-localised form. At least nobody has yet complained about svn patch
> misparsing such patches.
I'm distinctly remember a report on this very list, with a unidiff with
a localized message attached. However, I can't find it in the archives.
In any case it would be nice if our diff parser only looked at the \,
not the whole message. I'm less worried about our not localizing that
particular string.
-- Brane
--
Branko Čibej
Director of Subversion | WANdisco | www.wandisco.com
Received on 2012-11-20 15:41:03 CET