On Tue, May 24, 2011 at 12:04:26PM +0530, Arwin Arni wrote: > Why can't we send the recorded checksum from the server instead of > sending the whole file and then calculating it on the client side? > > If the checksum matches one of the pristine files, then use that to > populate the nodes table. If there is no match, only then do we > spool to a temporary file and what not. > > This seems like a straightforward idea. Any pitfalls to this approach?
The pitfall is that you need to change the client<->server interface. The current interface at subversion/include/svn_delta.h only transmits checksums before and after applying deltas. First it transmits the checksum of the expected base text for the delta (apply_textdelta), and then, after the delta has been applied, it sends the expected checksum of the content resulting from application of the delta to the base (close_file). This interface doesn't prevent data from being transmitted. A newer, albeit currently unusued, interface is at subversion/include/private/svn_editor.h. This transmits the checksum of the expected content (svn_editor_set_text). Supporting this new interface is a major piece of work planned for post-1.7.