Well, actually, what initially confused me with the "svn diff" output
is that I thought that two output chunks were necessarily disjoint
and non adjacent[*]. So, it seemed to me that there was a problem
with my file, until I noticed that the chunks output by "svn diff"
were adjacent. I hope that my bug report is more clear now.
[*] AFAIK, this is always the case with GNU diff, and this is why
I thought that this was a general rule for the unified diff format.
Now, what's interesting is what POSIX says:
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/diff.html
"If -U n is specified, the output shall contain no more than
n consecutive unaffected lines; and if the output contains an
affected line and this line is adjacent to up to n consecutive
unaffected lines in the corresponding file, the output shall
contain these unaffected lines. -u shall act like -U3."
So, it appears that "svn diff" follows POSIX here (but it doesn't when
there are exactly 5 consecutive unaffected lines). And GNU diff more
generally doesn't follow POSIX, even though this page later says that
the -u and -U options come from GNU diff!
At least there is a lack of specification for "svn diff". But I think
that a rule requiring disjoint and non adjacent chunks is intuitively
better for a human reader.