Philip Martin <philip.mar...@wandisco.com> writes: > Philip Martin <philip.mar...@wandisco.com> writes: > >> 1.9 has a more accurate svn_fs_contents_changed() that doesn't report as >> many false positives. This means that some (or all?) of the -g revisions >> reported by svn_repos_get_file_revs2() do not include a textdelta that >> was included by 1.8. It appears at some level the 1.9 client interprets >> the revision without a textdelta as being the same as a revision with a >> textdelta that changes nothing, while the 1.8 client relies on the >> missing textdelta. If I force the 1.9 server to send textdeltas between >> identical texts the 1.8 client then behaves as the test expects. > > Looking at r1573111 > > /* Check if the contents *may* have changed. (Allow false positives, > for now, as the blame implementation currently depends on them.) */ > /* Special case: In the first revision, we always provide a delta. */ > if (sb->last_root) > - SVN_ERR(svn_fs_contents_changed2(&contents_changed, sb->last_root, > - sb->last_path, root, path_rev->path, > - FALSE, sb->iterpool)); > + SVN_ERR(svn_fs_contents_different(&contents_changed, sb->last_root, > + sb->last_path, root, path_rev->path, > + sb->iterpool)); > else > contents_changed = TRUE; > > That looks like an error since svn_fs_contents_different() passes TRUE > for strict, not FALSE. I think the intention was that r1573111 should > call svn_fs_contents_changed(). > > However the implementation of root_vtable_t.contents_changed() has > changed in 1.9 and it no longer reports as many changes as it used to > report so even replacing the _different() call with a _changed() call > does not solve the problem. The only way I can see to fix the problem > is to simply ignore/remove the call altogether and to hard-code > contents_changed to TRUE.
This revision is the client-side magic: r1570936 | stefan2 | 2014-02-22 22:27:06 +0000 (Sat, 22 Feb 2014) | 10 lines Fix the blame -g implemenation to no longer depend on false positives in the file contents change detection. A 1.8 server works with all clients whether they have the fix or not. A 1.9 server only works when the client has the fix. That client-side fix is only in 1.9, so at the moment, only 1.9 clients work with 1.9 servers. -- Philip Martin | Subversion Committer WANdisco // *Non-Stop Data*