On 26.10.2015 17:45, Evgeny Kotkov wrote:
Stefan Fuhrmann <stefan.fuhrm...@wandisco.com> writes:
As for /trunk, I think that we could do that, so I sketched this option in
the attached patch.
The patch looks o.k.
Thanks for giving this patch a look.
I examined the differences between these functions, svn_repos__compare_files()
and svn_fs_contents_different(), and I think that we also have a problem in
FSFS's implementation of the new svn_fs_contents_different() API in 1.9.x.
The implementation relies on representation_t.expanded_size value when doing
the comparison. If this value is zero, a representation is considered empty,
and two empty representations are considered equal.
The problem is that the expanded_size can be zero for empty files and also for
some of the PLAIN representations, which are not empty. If I am not mistaken,
we have a workaround for this in /trunk — r1673875 [1] and follow-ups, but not
in Subversion 1.9.
To be sure, I just read through the code again
and it seems that on /trunk, expanded_size
indeed always has correct value.
Hence, the new svn_fs_contents_different() API can fail to
distinguish different contents in 1.9.x under the circumstances described in
issue 4554 [2].
So, svn_fs_contents_different is broken in 1.9.x
and needs to be fixed. I'll take care of that.
-- Stefan^2.