Bert Huijben <bert_at_qqmail.nl> writes:
> But this 'go back to 1.8' suggestio changes Subversion everywhere. It will
> make 'svn annotate' slower... Makes 'svn update' slower and report more tree
> conflicts, etc. etc.
For 'svn blame', the only difference is that we would be processing no-op
changes in file history, and I don't think that it would have a noticeable
impact on the speed because no-op changes aren't the common case.
'svn update' isn't going to be slower as well, and isn't going to produce
more tree conflicts. The reporter does not send empty deltas since 1.8 —
see r1442555 and the related discussion in [1, 2].
> We never designed the old behavior; we just used the functions that were
> there. If we want it back we should document it, probably add regression
> tests... and determine in which places we want it.
I have to disagree.
From what I see, the original design of svn_fs_contents_changed() and its
calling sites had all these cases in mind. Even more, it was done that way to
support them. Quoting C. Michael Pilato from the already mentioned thread [3]:
[[[
svn_fs_contents_changed() was not designed to be used to detect when two
files have different content, but really to detect when the contents of a
given file have changed across two points in its history. For the purposes
of preserving accurate history, certain bits of code (such as the repos dump
code) needs to care about this distinction. For example, it's not an error
from the FS API point of view to call svn_fs_apply_textdelta() and
explicitly set a file's contents to exactly what they were before you made
the edit. But we try to preserve that fact when dumping rather than claim
that the file didn't change at all (despite there being a change of modified
parent directories and an associated `changes' table entry which claim
otherwise.)
]]]
In 1.9 we changed how svn_fs_contents_changed() works, added an errata,
claimed that all of these distinctions are "false positives" [4], and switched
all the calling sites to the new API that doesn't care about them. As one
visible consequence, we no longer dump the changes that the original API
was designed to preserve. And there could be more.
[1] https://svn.apache.org/r1442555
[2] http://svn.haxx.se/dev/archive-2013-01/0439.shtml
[3] http://svn.haxx.se/dev/archive-2013-02/0002.shtml
[4] https://subversion.apache.org/docs/api/latest/group__fs__handling.html#gaede66ee7850d389bcdeb5ddef1540fdc
Regards,
Evgeny Kotkov
Received on 2015-10-27 14:38:38 CET